2022-05-16  Karl Rackler  <rackler@apple.com>

        [Gardening]:[ iOS ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html is a consistent failure
        https://bugs.webkit.org/show_bug.cgi?id=240348

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-16  Patrick Angle  <pangle@apple.com>

        Web Inspector: Regression(r266885) Crash sometimes when rehydrating imported audit results
        https://bugs.webkit.org/show_bug.cgi?id=240366

        Reviewed by Devin Rousso.

        * inspector/model/dom-node.html:
        * inspector/model/dom-node-expected.txt:

2022-05-16  Rob Buis  <rbuis@igalia.com>

        Remove some custom-element tests
        https://bugs.webkit.org/show_bug.cgi?id=240449

        Reviewed by Tim Nguyen.

        Remove some custom-element tests since they are now available in WPT.

        * fast/custom-elements/enqueue-custom-element-callback-reactions-inside-another-callback-expected.txt: Removed.
        * fast/custom-elements/enqueue-custom-element-callback-reactions-inside-another-callback.html: Removed.
        * fast/custom-elements/perform-microtask-checkpoint-before-construction-expected.txt: Removed.
        * fast/custom-elements/perform-microtask-checkpoint-before-construction.html: Removed.
        * fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-expected.txt: Removed.
        * fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html: Removed.
        * fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-expected.txt: Removed.
        * fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html: Removed.

2022-05-16  Tim Nguyen  <ntim@apple.com>

        [css-ui] Make inner-spin-button/sliderthumb-horizontal/sliderthumb-vertical appearance values internal
        https://bugs.webkit.org/show_bug.cgi?id=240448

        Reviewed by Antti Koivisto.

        iOS baseline for appearance-cssom-001-expected.txt is identical to the main one, so remove it.

        * fast/forms/range/thumbslider-crash-expected.txt: Removed.
        * fast/forms/range/thumbslider-crash.html: Removed.
        * fast/forms/range/thumbslider-no-parent-slider.html: Removed.
        * platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.png: Removed.
        * platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt: Removed.
        * platform/ios/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
        * platform/mac/fast/forms/range/thumbslider-no-parent-slider-expected.png: Removed.
        * platform/mac/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
        * platform/win/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
        * platform/wincairo/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.

2022-05-16  Martin Robinson  <mrobinson@webkit.org>

        Do not allow unitless values for CSS unprefixed perspective property
        https://bugs.webkit.org/show_bug.cgi?id=104805
        <rdar://problem/77016090>

        Reviewed by Tim Nguyen.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

2022-05-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Unreviewed test gardening
        https://bugs.webkit.org/show_bug.cgi?id=240439

        * platform/wincairo-wk1/TestExpectations:
        * platform/wincairo/TestExpectations:

2022-05-14  Alan Bujtas  <zalan@apple.com>

        Changing text color and removing line-clamp on hover causes text to disappear permanently
        https://bugs.webkit.org/show_bug.cgi?id=240410

        Reviewed by Simon Fraser.

        * fast/block/dynamic-line-clamp-empty-content-expected.html: Added.
        * fast/block/dynamic-line-clamp-empty-content.html: Added.

2022-05-14  Alan Bujtas  <zalan@apple.com>

        [Repaint] Border ignores currentColor change when hovering
        https://bugs.webkit.org/show_bug.cgi?id=240401

        Reviewed by Antti Koivisto.

        * fast/repaint/repaint-current-color-border-on-hover-expected.txt: Added.
        * fast/repaint/repaint-current-color-border-on-hover.html: Added.
        * fast/repaint/repaint-pseudo-border-on-hover-expected.txt: Added.
        * fast/repaint/repaint-pseudo-border-on-hover.html: Added.

2022-05-13  Tim Nguyen  <ntim@apple.com>

        [css-ui] Unexpose appearance property values already handled by appearance: auto
        https://bugs.webkit.org/show_bug.cgi?id=240384

        Reviewed by Aditya Keerthi.

        These are only used internally, and are handled by appearance: auto in the UA sheets:
        - caps-lock-indicator
        - color-well
        - list-button
        - searchfield-decoration
        - searchfield-results-decoration
        - searchfield-results-button
        - searchfield-cancel-button

        * platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * fast/css/appearance-caps-lock-indicator-expected.txt: Removed.
        * fast/css/appearance-caps-lock-indicator.html: Removed.

2022-05-13  Tyler Wilcock  <tyler_w@apple.com>

        Infinite recursion caused by call to accessibilityIsIgnored in the midst of AccessibilityObject::ignoredFromModalPresence
        https://bugs.webkit.org/show_bug.cgi?id=240365

        Reviewed by Chris Fleizach.

        * accessibility/aria-modal-with-text-crash-expected.txt: Added.
        * accessibility/aria-modal-with-text-crash.html: Added.
        * platform/glib/TestExpectations: Skip new test.
        * platform/ios/TestExpectations: Enable new test.
        * platform/win/TestExpectations: Skip new test.

2022-05-13  Tim Nguyen  <ntim@apple.com>

        [css-ui] Remove caret/progress-bar-value/listitem values from appearance property
        https://bugs.webkit.org/show_bug.cgi?id=240390

        Reviewed by Aditya Keerthi.

        They're basically unimplemented.

        Remove WPE expectations which were very out-of-date.

        * fast/css/appearance-with-pseudo-elements-expected.html:
        * fast/css/appearance-with-pseudo-elements-in-quirks-mode-expected.html:
        * fast/css/appearance-with-pseudo-elements-in-quirks-mode.html:
        * fast/css/appearance-with-pseudo-elements.html:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt: Removed.

2022-05-13  Anjali Kumar  <anjalik_22@apple.com>

        Web Inspector: [Meta] Implement Timelines Film Strip
        https://bugs.webkit.org/show_bug.cgi?id=239350

        Reviewed by Devin Rousso and Patrick Angle.

        * inspector/timeline/resources/timeline-event-utilities.js:
        (TestPage.registerInitializer.InspectorTest.TimelineEvent.captureTimelineWithScript):
        (TestPage.registerInitializer):
        * inspector/timeline/timeline-event-screenshots-expected.txt: Added.
        * inspector/timeline/timeline-event-screenshots.html: Added.
        * inspector/timeline/timeline-recording-expected.txt:

2022-05-13  Tim Nguyen  <ntim@apple.com>

        Clean up some html/semantics/forms/ test expectations
        https://bugs.webkit.org/show_bug.cgi?id=240344

        Unreviewed test gardening.

        Combine multiple files to reduce the number of platform specific expectations.

        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Removed.
        * platform/ios/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Removed.
        * platform/ios/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Removed.
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Removed.
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Removed.
        * platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Removed.
        * platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Removed.
        * platform/win/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Removed.

2022-05-13  Ziran Sun  <zsun@igalia.com>

        Resync web-platform-tests/html/semantics/forms tests from upstream
        https://bugs.webkit.org/show_bug.cgi?id=240301

        Reviewed by Tim Nguyen.

        * TestExpectations:
        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt: Removed.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-reportValidity-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-badInput-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-stepMismatch-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-trailing-zeros-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/notifications/idlharness.https.any-expected.txt:
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-local-expected.txt: Removed.
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * tests-options.json:

2022-05-13  Diego Pino Garcia  <dpino@igalia.com>

        [GTK] Unreviewed test gardening, follow-up to r294148

        Add removed baselines in corresponding directory.

        * platform/glib/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt: Added.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any-expected.txt: Added.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any.worker-expected.txt: Added.

2022-05-13  Diego Pino Garcia  <dpino@igalia.com>

        [GTK] Unreviewed test gardening, follow-up to r294142

        Remove wrongly generated baselines. Parent directoy has the same name
        as baseline and that ends up in an Exception error while running the
        layout-tests.

        * platform/glib/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt/location_hash-expected.txt: Removed.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any-expected.txt/getresponseheader.any-expected.txt: Removed.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any.worker-expected.txt/getresponseheader.any.worker-expected.txt: Removed.

2022-05-13  Diego Pino Garcia  <dpino@igalia.com>

        [GLIB][WPE] Unreviewed test gardening, move test image failures to GLIB

        * platform/glib/TestExpectations:
        * platform/gtk/TestExpectations:

2022-05-13  Diego Pino Garcia  <dpino@igalia.com>

        [WPE] Unreviewed test gardening, update baselines

        * platform/glib/TestExpectations:
        * platform/glib/css2.1/t0805-c5520-brdr-b-01-e-expected.txt: Renamed from LayoutTests/platform/gtk/css2.1/t0805-c5520-brdr-b-01-e-expected.txt.
        * platform/glib/fast/text/international/bidi-layout-across-linebreak-expected.txt: Renamed from LayoutTests/platform/gtk/fast/text/international/bidi-layout-across-linebreak-expected.txt.
        * platform/glib/fast/text/international/hindi-spacing-expected.txt: Renamed from LayoutTests/platform/gtk/fast/text/international/hindi-spacing-expected.txt.
        * platform/gtk/TestExpectations:
        * platform/wpe/css2.1/20110323/replaced-elements-001-expected.txt:
        * platform/wpe/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:
        * platform/wpe/css2.1/t0805-c5520-brdr-b-01-e-expected.txt: Removed.
        * platform/wpe/css3/flexbox/button-expected.txt:
        * platform/wpe/fast/block/float/float-avoidance-expected.txt:
        * platform/wpe/fast/block/lineboxcontain/glyphs-expected.txt:
        * platform/wpe/fast/block/positioning/inline-block-relposition-expected.txt:
        * platform/wpe/fast/css-generated-content/initial-letter-basic-expected.txt:
        * platform/wpe/fast/css-generated-content/initial-letter-border-padding-expected.txt:
        * platform/wpe/fast/css-generated-content/initial-letter-raised-expected.txt:
        * platform/wpe/fast/css-generated-content/initial-letter-sunken-expected.txt:
        * platform/wpe/fast/css/continuationCrash-expected.txt:
        * platform/wpe/fast/css/margin-top-bottom-dynamic-expected.txt:
        * platform/wpe/fast/css/rtl-ordering-expected.txt:
        * platform/wpe/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
        * platform/wpe/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
        * platform/wpe/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
        * platform/wpe/fast/html/details-replace-summary-child-expected.txt:
        * platform/wpe/fast/html/details-replace-text-expected.txt:
        * platform/wpe/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
        * platform/wpe/fast/overflow/scrollRevealButton-expected.txt:
        * platform/wpe/fast/replaced/replaced-breaking-expected.txt:
        * platform/wpe/fast/replaced/width100percent-button-expected.txt:
        * platform/wpe/fast/table/003-expected.txt:
        * platform/wpe/fast/table/append-cells2-expected.txt:
        * platform/wpe/fast/table/remove-td-display-none-expected.txt:
        * platform/wpe/fast/text/emoji-expected.txt:
        * platform/wpe/fast/text/international/bidi-layout-across-linebreak-expected.txt: Removed.
        * platform/wpe/fast/text/international/bidi-override-expected.txt:
        * platform/wpe/fast/text/international/hindi-spacing-expected.txt: Removed.
        * platform/wpe/fast/text/orientation-sideways-expected.txt:

2022-05-12  Diego Pino Garcia  <dpino@igalia.com>

        [GTK] Unreviewed test gardening, fix missing test results.

        * platform/glib/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt/location_hash-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any-expected.txt/getresponseheader.any-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/xhr/getresponseheader.any-expected.txt.
        * platform/glib/imported/w3c/web-platform-tests/xhr/getresponseheader.any.worker-expected.txt/getresponseheader.any.worker-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/xhr/getresponseheader.any.worker-expected.txt.
        * platform/gtk/TestExpectations:

2022-05-12  Manuel Rego Casasnovas  <rego@igalia.com>

        ARIA reflection for FrozenArray<Element> attributes
        https://bugs.webkit.org/show_bug.cgi?id=239853
        <rdar://problem/92797836>

        Reviewed by Chris Dumez.

        Update test so it identifies the FrozenArray<Element> attributes.

        * accessibility/ARIA-reflection-expected.txt:
        * accessibility/ARIA-reflection.html:

2022-05-12  Diego Pino Garcia  <dpino@igalia.com>

        [GTK] Unreviewed test gardening, update tests expected to fail but passed

        * platform/glib/TestExpectations:
        * platform/gtk/TestExpectations:
        * platform/gtk/imported/w3c/web-platform-tests/mathml/presentation-markup/tables/table-002-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
        * platform/wpe/TestExpectations:

2022-05-12  Karl Rackler  <rackler@apple.com>

        [ iOS ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html is a consistent failure
        https://bugs.webkit.org/show_bug.cgi?id=240348

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-12  Youenn Fablet  <youenn@apple.com>

        Add a better mock for audio units used by CoreAudioSharedUnit
        https://bugs.webkit.org/show_bug.cgi?id=240231

        Reviewed by Eric Carlson.

        * fast/mediastream/audio-unit-reconfigure-expected.txt: Added.
        * fast/mediastream/audio-unit-reconfigure.html: Added.

2022-05-11  John Cunningham  <johncunningham@apple.com>

        [GPU Process] webrtc/vp8-then-h264-gpu-process-crash.html flaky fails after turning DOM in GPUP on by default
        https://bugs.webkit.org/show_bug.cgi?id=236926

        Reviewed by Youenn Fablet.

        * platform/wpe/TestExpectations:

2022-05-11  Patrick Angle  <pangle@apple.com>

        Web Inspector: Parse InjectedScriptSource as a built-in to get guaranteed non-user-overriden JSC built-ins
        https://bugs.webkit.org/show_bug.cgi?id=152294

        Reviewed by Devin Rousso.

        * inspector/injected-script/observable-expected.txt:
        * inspector/injected-script/observable.html:
        - Add several more test cases for overriding functions and entire objects.

        * inspector/debugger/pause-for-internal-scripts-expected.txt:
        * inspector/debugger/pause-for-internal-scripts.html:
        - Changed to test a custom internal script snippet since the inspector injected script is now a builtin.

        * inspector/debugger/scriptParsed-expected.txt:
        * inspector/debugger/scriptParsed.html:
        - The inspector injected script (and modules) will no longer appear as scripts in Web Inspector.

        * inspector/model/remote-object/error-expected.txt:
        * inspector/timeline/line-column.html:
        * inspector/timeline/line-column-expected.txt:
        * platform/gtk/inspector/timeline/line-column-expected.txt:
        - Inspector injected script line numbers are different between release and debug builds, so filter those out.

2022-05-11  Yury Semikhatsky  <yurys@chromium.org>

        [WinCairo] Support file downloads
        https://bugs.webkit.org/show_bug.cgi?id=240293

        Reviewed by Fujii Hironori.

        * platform/wincairo/TestExpectations: enable downloads tests.

2022-05-11  Antti Koivisto  <antti@apple.com>

        REGRESSION (r291788): MotionMark Suits subtest is 9% regressed
        https://bugs.webkit.org/show_bug.cgi?id=240112
        rdar://92409900

        Reviewed by Alan Bujtas.

        * svg/animations/animation-leak-list-property-instances.html:

        Do a rendering update before checking for leaks.

2022-05-11  Ben Nham  <nham@apple.com>

        Rebaseline WK1 notifications test expectations after r293921
        https://bugs.webkit.org/show_bug.cgi?id=240153

        Unreviewed test gardening.

        * platform/mac-wk1/imported/w3c/web-platform-tests/notifications/idlharness.https.any-expected.txt:

2022-05-11  Karl Rackler  <rackler@apple.com>

        [Gardening][ macOS Debug wk2 ] fast/css/variables/test-suite/168.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239822

        Unreviewed test gardening. 
        * platform/mac-wk2/TestExpectations:

2022-05-11  Karl Rackler  <rackler@apple.com>

        [Gardening][ macOS Debug wk2 ] fast/css/variables/test-suite/168.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239822

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-05-11  Karl Rackler  <rackler@apple.com>

        [Gardening][ iOS ][ macOS Debug wk1 ] webaudio/AudioBuffer/huge-buffer.html is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=240081

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-05-10  Truitt Savell  <tsavell@apple.com>

        Rebase inspector/timeline/line-column.html for Mac
        https://bugs.webkit.org/show_bug.cgi?id=240291

        Unreviewed test gardening.

        * inspector/timeline/line-column-expected.txt:

2022-05-10  Tim Nguyen  <ntim@apple.com>

        Fix inertness of pseudo-elements
        https://bugs.webkit.org/show_bug.cgi?id=239831

        Reviewed by Antti Koivisto.

        When we adjust style for a pseudo-element, `m_element` and `document().activeModalDialog()` are both null. So we accidentally reset inertness to false in those cases.

        Fix this by making checking for m_element's existence too.

        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-pseudo-element-hittest-expected.txt: Added.

2022-05-10  Brent Fulgham  <bfulgham@apple.com>

        Remove abandoned CSSDeferredParser implementation and feature flag
        https://bugs.webkit.org/show_bug.cgi?id=240244

        Reviewed by Antti Koivisto.

        This patch rolls out the abandoned CSSDeferredParser implementation added in Bug 165743.

        * fast/css/deferred-parsing/dynamic-external-style-expected.txt: Removed.
        * fast/css/deferred-parsing/dynamic-external-style.html: Removed.
        * fast/css/deferred-parsing/dynamic-style-in-document-expected.txt: Removed.
        * fast/css/deferred-parsing/dynamic-style-in-document.html: Removed.
        * fast/css/deferred-parsing/hover-test-expected.txt: Removed.
        * fast/css/deferred-parsing/hover-test.html: Removed.
        * fast/css/deferred-parsing/keyframes-rule-expected.txt: Removed.
        * fast/css/deferred-parsing/keyframes-rule.html: Removed.
        * fast/css/deferred-parsing/media-print-expected.txt: Removed.
        * fast/css/deferred-parsing/media-print.html: Removed.
        * fast/css/deferred-parsing/nth-of-type-expected.txt: Removed.
        * fast/css/deferred-parsing/nth-of-type.html: Removed.
        * fast/css/deferred-parsing/resources/basic-sheet.css: Removed.
        * fast/css/deferred-parsing/simple-external-style-expected.txt: Removed.
        * fast/css/deferred-parsing/simple-external-style.html: Removed.
        * fast/css/deferred-parsing/simple-style-in-document-expected.txt: Removed.
        * fast/css/deferred-parsing/simple-style-in-document.html: Removed.
        * fast/css/deferred-parsing/supports-rule-expected.txt: Removed.
        * fast/css/deferred-parsing/supports-rule.html: Removed.
        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:

2022-05-09  Oriol Brufau  <obrufau@igalia.com>

        [cssom] Don't index perspective/transform-origin-* in computed styles
        https://bugs.webkit.org/show_bug.cgi?id=239670

        Reviewed by Darin Adler.

        Update test expectations.

        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-05-09  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        Support ray() shape in offset-path
        https://bugs.webkit.org/show_bug.cgi?id=233344

        Reviewed by Simon Fraser.

        * TestExpectations:

2022-05-09  Tim Nguyen  <ntim@apple.com>

        Implement CSS :modal pseudo class
        https://bugs.webkit.org/show_bug.cgi?id=240109

        Reviewed by Simon Fraser.

        Removes :-internal-modal-dialog from internal pseudo classes.

        * fast/css/pseudo-class-internal-expected.txt:
        * fast/css/pseudo-class-internal.html:

2022-05-09  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update some test expectations for known failures
        https://bugs.webkit.org/show_bug.cgi?id=240240

        Unreviewed test garderning.

        * platform/glib/TestExpectations:

2022-05-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Double tapping on YouTube video causes playback to pause instead of seek
        https://bugs.webkit.org/show_bug.cgi?id=240222
        rdar://92637636

        Reviewed by Aditya Keerthi and Kate Cheney.

        Add a new layout test. See WebKit/ChangeLog for more details.

        * fast/events/touch/ios/touch-events-when-double-tapping-after-selecting-text-expected.txt: Added.
        * fast/events/touch/ios/touch-events-when-double-tapping-after-selecting-text.html: Added.

2022-05-09  Kate Cheney  <katherine_cheney@apple.com>

        Image controls menu button is not appearing for multi-page PDFs
        https://bugs.webkit.org/show_bug.cgi?id=240120
        rdar://86425721

        Reviewed by Megan Gardner.

        * TestExpectations:
        * fast/attachment/attachment-image-controls-basic.html: Added.
        * platform/mac-wk2/TestExpectations:
        * platform/mac/fast/attachment/attachment-image-controls-basic-expected.txt: Added.

2022-05-09  Ziran Sun  <zsun@igalia.com>

        Make input placeholder line-height declaration !important
        https://bugs.webkit.org/show_bug.cgi?id=240225

        Reviewed by Tim Nguyen.

        Unskip the test that passes. 
        * TestExpectations:

2022-05-09  Antoine Quint  <graouts@apple.com>

        REGRESSION (r291817): NativeImage passed to RemoteResourceCacheProxy::recordNativeImageUse may be null
        https://bugs.webkit.org/show_bug.cgi?id=239649
        rdar://92018859

        Reviewed by Dean Jackson.

        * system-preview/svg-image-expected.html: Added.
        * system-preview/svg-image.html: Added.

2022-05-09  Manuel Rego Casasnovas  <rego@igalia.com>

        [WinCairo][WK1] accessibility/aria-combobox-control-owns-elements.html is crashing after 250325@main
        https://bugs.webkit.org/show_bug.cgi?id=240218
        <rdar://problem/92929718>

        Reviewed by Joanmarie Diggs.

        * platform/wincairo-wk1/TestExpectations: Mark test as timeout as it
        was before r293958.

2022-05-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WK1] accessibility/aria-combobox-control-owns-elements.html is crashing after 250325@main
        https://bugs.webkit.org/show_bug.cgi?id=240218
        <rdar://problem/92929718>

        Unreviewed test gardening.

        * platform/wincairo-wk1/TestExpectations: Skip it.

2022-05-07  Cameron McCormack  <heycam@apple.com>

        Don't propagate GraphicsContextState change bits into TextPainter's glyph display list recorder
        https://bugs.webkit.org/show_bug.cgi?id=239952
        <rdar://problem/92635604>

        Reviewed by Antti Koivisto.

        * fast/text/glyph-display-list-color-expected.txt: Added.
        * fast/text/glyph-display-list-color.html: Added.

2022-05-06  Megan Gardner  <megan_gardner@apple.com>

        Fix flakey test by using the old API on old systems.
        https://bugs.webkit.org/show_bug.cgi?id=240195

        Reviewed by Tim Horton.

        * platform/ios/TestExpectations:

2022-05-06  Patrick Griffis  <pgriffis@igalia.com>

        CSP: Fix script-src-elem policies in workers
        https://bugs.webkit.org/show_bug.cgi?id=239840

        Reviewed by Kate Cheney.

        CSP: Fix script-src-elem policies in workers

        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-script-src-elem-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-script-src-elem.html: Added.

2022-05-06  Karl Rackler  <rackler@apple.com>

        [Gardening] REGRESSION (r293117): [ iOS ] fast/innerHTML/001.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=240170

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-06  Karl Rackler  <rackler@apple.com>

        [Gardening][ iOS ] fast/innerHTML/001.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=240170

        Reviewed by Jonathan Bedard.

        * platform/ios/TestExpectations:

2022-05-05  Ben Nham  <nham@apple.com>

        Add support for Notification objects with custom data
        https://bugs.webkit.org/show_bug.cgi?id=240153

        Reviewed by Chris Dumez.

        Test that Notification objects with custom data can be created and shown by both documents
        and service workers.

        * http/tests/notifications/notification-expected.txt:
        * http/tests/notifications/notification.html:
        * http/tests/workers/service/getnotifications-expected.txt:
        * http/tests/workers/service/getnotifications-stop-expected.txt:
        * http/tests/workers/service/getnotifications-stop.html:
        * http/tests/workers/service/getnotifications.html:
        * http/tests/workers/service/openwindow-from-notification-click.html:
        * http/tests/workers/service/resources/shownotification-openwindow-worker.js:
        (async tryShow):
        (async getNotes):
        * http/tests/workers/service/resources/shownotification-worker.js:
        (async event):
        (async tryShow):
        (async tryShowInvalidData.try.data):
        (async tryShowInvalidData):
        (async getNotes):
        * http/tests/workers/service/shownotification-allowed-document-expected.txt:
        * http/tests/workers/service/shownotification-allowed-document.html:
        * http/tests/workers/service/shownotification-allowed.html:
        * http/tests/workers/service/shownotification-invalid-data-expected.txt: Added.
        * http/tests/workers/service/shownotification-invalid-data.html: Added.

2022-05-06  Brent Fulgham  <bfulgham@apple.com>

        Remove the viewportFitEnabled WKPreference now that it is always on 
        https://bugs.webkit.org/show_bug.cgi?id=240147

        Reviewed by Tim Horton.

        Remove the WKPreference 'ViewportFitEnabled' now that it is always enabled on all platforms, and
        we do not wish to turn it off in testing or in other debugging circumstances.

        * fast/css/variables/env/ios/safe-area-inset-env-set-expected.html:
        * fast/css/variables/env/ios/safe-area-inset-env-set.html:
        * fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html:
        * fast/viewport/ios/viewport-fit-auto.html:
        * fast/viewport/ios/viewport-fit-contain.html:
        * fast/viewport/ios/viewport-fit-cover.html:

2022-05-06  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Seeking into a xHE-AAC track backed by a SourceBuffer can stall playback
        https://bugs.webkit.org/show_bug.cgi?id=239750
        <rdar://91922569>

        Reviewed by Eric Carlson.

        * media/media-source/content/test-xhe-aac-manifest.json: Added.
        * media/media-source/content/test-xhe-aac.m4a: Added.
        * media/media-source/media-mp4-xhe-aac-expected.txt: Added.
        * media/media-source/media-mp4-xhe-aac.html: Added.

2022-05-06  Karl Rackler  <rackler@apple.com>

        [ iOS ] fast/innerHTML/001.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=240170

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-06  Patrick Griffis  <pgriffis@igalia.com>

        CSP: Fix incorrect blocked-uri for inline scripts and strict-dynamic policies
        https://bugs.webkit.org/show_bug.cgi?id=240136

        Reviewed by Kate Cheney.

        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-inline-report-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-inline-report.py: Added.

2022-05-06  Jer Noble  <jer.noble@apple.com>

        Video playback fails when using postMessage() during a User Gesture
        https://bugs.webkit.org/show_bug.cgi?id=239781
        <rdar://91281385>

        Reviewed by Eric Carlson.

        * workers/worker-user-gesture-expected.txt: Added.
        * workers/worker-user-gesture.html: Added.
        * workers/worker-user-gesture.js: Added.

2022-05-06  Karl Rackler  <rackler@apple.com>

        [ iOS Release ] fast/css-custom-paint/animate-repaint.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=240167

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-05  Karl Rackler  <rackler@apple.com>

        [ iOS ] fast/images/exif-orientation-background-image-repeat.html is a consistent image failure
        https://bugs.webkit.org/show_bug.cgi?id=240148

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-05  Manuel Rego Casasnovas  <rego@igalia.com>

        ARIA reflection for Element attributes
        https://bugs.webkit.org/show_bug.cgi?id=239852

        Reviewed by Chris Dumez.

        Update test to include the new reflected attributes.

        * accessibility/ARIA-reflection-expected.txt:
        * accessibility/ARIA-reflection.html:

2022-05-05  Karl Rackler  <rackler@apple.com>

        [ iOS ][ Monterey Release wk2 ] imported/w3c/web-platform-tests/content-security-policy/inheritance/blob-url-in-main-window-self-navigate-inherits.sub.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239568

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-05  Robert Jenner  <Jenner@apple.com>

        Remove and cleanup platform expectations folders 
        https://bugs.webkit.org/show_bug.cgi?id=240131

        Unreviewed test gardening.

        * platform/mac-catalina-wk1/TestExpectations: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/anchor-element-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attrib-string-colors-with-color-filter-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attribute-string-for-copy-with-color-filter-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-1-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-2-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-3-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-4-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-5-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-1-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-2-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-for-typing-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/attributed-string-for-typing-with-color-filter-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/basic-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/comment-cdata-section-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/font-size-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/font-style-variant-effect-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/font-weight-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/letter-spacing-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/text-decorations-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/mac/attributed-string/vertical-align-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-4-expected.txt: Removed.
        * platform/mac-catalina-wk1/editing/selection/select-across-readonly-input-5-expected.txt: Removed.
        * platform/mac-catalina-wk1/http/tests/cookies/js-get-and-set-http-only-cookie-expected.txt: Removed.
        * platform/mac-catalina-wk1/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Removed.
        * platform/mac-catalina-wk2/fast/events/contextmenu-lookup-action-for-image-expected.txt: Removed.
        * platform/mac-catalina-wk2/http/tests/websocket/tests/hybi/send-object-tostring-check-expected.txt: Removed.
        * platform/mac-catalina-wk2/http/tests/workers/service/serviceworker-websocket.https-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/media-source/mediasource-invalid-codec-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/service-workers/service-worker/websocket-in-service-worker.https-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/service-workers/service-worker/websocket.https-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/basic-auth.any-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/basic-auth.any.worker-expected.txt: Removed.
        * platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/remove-own-iframe-during-onerror.window-expected.txt: Removed.
        * platform/mac-catalina/TestExpectations: Removed.
        * platform/mac-catalina/editing/input/reveal-caret-of-multiline-input-expected.txt: Removed.
        * platform/mac-catalina/editing/pasteboard/pasting-tabs-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/3690703-2-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/3690703-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/3690719-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/select-from-textfield-outwards-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt: Removed.
        * platform/mac-catalina/editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed-expected.txt: Removed.
        * platform/mac-catalina/fast/block/basic/001-expected.txt: Removed.
        * platform/mac-catalina/fast/block/float/float-avoidance-expected.txt: Removed.
        * platform/mac-catalina/fast/css/apple-system-control-colors-expected.txt: Removed.
        * platform/mac-catalina/fast/css/continuationCrash-expected.txt: Removed.
        * platform/mac-catalina/fast/css/rtl-ordering-expected.txt: Removed.
        * platform/mac-catalina/fast/css/text-overflow-input-expected.txt: Removed.
        * platform/mac-catalina/fast/dom/HTMLInputElement/input-slider-update-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/basic-inputs-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/basic-textareas-quirks-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/box-shadow-override-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/button-positioned-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/button-sizes-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/date/date-input-rendering-basic-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/form-element-geometry-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/hidpi-textfield-background-bleeding-expected.html: Removed.
        * platform/mac-catalina/fast/forms/input-appearance-height-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-appearance-preventDefault-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-appearance-spinbutton-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-appearance-spinbutton-up-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-button-sizes-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-disabled-color-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-placeholder-visibility-1-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-placeholder-visibility-3-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-readonly-dimmed-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-table-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-text-word-wrap-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/input-value-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/listbox-bidi-align-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/listbox-width-change-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/option-text-clip-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/plaintext-mode-2-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/range/input-appearance-range-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/range/slider-padding-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/range/slider-thumb-shared-style-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/range/thumbslider-no-parent-slider-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/search-rtl-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/search/search-size-with-decorations-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/search/search-zoom-computed-style-height-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/select-change-listbox-to-popup-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/select-change-popup-to-listbox-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/select-selected-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/select-visual-hebrew-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/select/optgroup-rendering-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/textAreaLineHeight-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/textarea-placeholder-visibility-1-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/textarea-placeholder-visibility-2-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/textfield-outline-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/time/time-input-rendering-basic-expected.txt: Removed.
        * platform/mac-catalina/fast/forms/visual-hebrew-text-field-expected.txt: Removed.
        * platform/mac-catalina/fast/parser/document-write-option-expected.txt: Removed.
        * platform/mac-catalina/fast/parser/entity-comment-in-textarea-expected.txt: Removed.
        * platform/mac-catalina/fast/parser/open-comment-in-textarea-expected.txt: Removed.
        * platform/mac-catalina/fast/repaint/block-inputrange-repaint-expected.txt: Removed.
        * platform/mac-catalina/fast/repaint/slider-thumb-drag-release-expected.txt: Removed.
        * platform/mac-catalina/fast/sandbox/mac/sandbox-mach-lookup-expected.txt: Removed.
        * platform/mac-catalina/fast/text/backslash-to-yen-sign-euc-expected.txt: Removed.
        * platform/mac-catalina/fast/text/basic/014-expected.txt: Removed.
        * platform/mac-catalina/fast/text/capitalize-boundaries-expected.txt: Removed.
        * platform/mac-catalina/fast/text/drawBidiText-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-avoid-orphaned-word-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-character-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-first-word-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-limit-before-after-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-limit-lines-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphenate-locale-expected.txt: Removed.
        * platform/mac-catalina/fast/text/hyphens-expected.txt: Removed.
        * platform/mac-catalina/fast/text/indic-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/bidi-fallback-font-weight-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/bidi-linebreak-001-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/bidi-linebreak-002-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/bidi-linebreak-003-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/danda-space-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Removed.
        * platform/mac-catalina/fast/text/international/system-language/system-font-punctuation-expected.txt: Removed.
        * platform/mac-catalina/fast/text/justify-ideograph-leading-expansion-expected.txt: Removed.
        * platform/mac-catalina/fast/text/midword-break-after-breakable-char-expected.txt: Removed.
        * platform/mac-catalina/fast/text/vertical-rl-rtl-linebreak-expected.txt: Removed.
        * platform/mac-catalina/fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt: Removed.
        * platform/mac-catalina/http/tests/navigation/javascriptlink-frames-expected.txt: Removed.
        * platform/mac-catalina/http/tests/xmlhttprequest/methods-async-expected.txt: Removed.
        * platform/mac-catalina/http/tests/xmlhttprequest/methods-expected.txt: Removed.
        * platform/mac-catalina/http/tests/xmlhttprequest/workers/methods-async-expected.txt: Removed.
        * platform/mac-catalina/http/tests/xmlhttprequest/workers/methods-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-minsize-maxsize-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-005-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-002-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-001-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/media-source/mediasource-invalid-codec-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Removed.
        * platform/mac-catalina/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Removed.
        * platform/mac-catalina/inspector/css/get-system-fonts-expected.txt: Removed.
        * platform/mac-catalina/media/media-can-play-webm-expected.txt: Removed.
        * platform/mac-catalina/platform/mac/fast/loader/file-url-mimetypes-3-expected.txt: Removed.
        * platform/mac-catalina/platform/mac/fast/text/bidi-fallback-font-weight-expected.txt: Removed.
        * platform/mac-catalina/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Removed.
        * platform/mac-catalina/platform/mac/fast/text/international/bidi-fallback-font-weight-expected.txt: Removed.
        * platform/mac-catalina/svg/W3C-I18N/tspan-direction-rtl-expected.txt: Removed.
        * platform/mac-catalina/svg/custom/svg-fonts-without-missing-glyph-expected.txt: Removed.
        * platform/mac-catalina/svg/text/bidi-tspans-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug18359-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug2479-3-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug26178-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug30692-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug33855-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug60749-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/bugs/bug7342-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt: Removed.
        * platform/mac-catalina/tables/mozilla/other/wa_table_tr_align-expected.txt: Removed.
        * platform/mac-catalina/transforms/2d/zoom-menulist-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/anchor-element-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attrib-string-colors-with-color-filter-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attribute-string-for-copy-with-color-filter-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-1-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-2-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-3-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-4-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-5-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-1-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-across-shadow-boundaries-with-style-2-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-for-typing-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/attributed-string-for-typing-with-color-filter-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/basic-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/comment-cdata-section-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/font-size-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/font-style-variant-effect-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/font-weight-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/letter-spacing-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/text-decorations-expected.txt: Removed.
        * platform/mac-mojave-wk1/editing/mac/attributed-string/vertical-align-expected.txt: Removed.
        * platform/mac-mojave-wk1/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Removed.
        * platform/mac-mojave-wk1/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Removed.
        * platform/mac-mojave/css1/basic/inheritance-expected.txt: Removed.
        * platform/mac-mojave/css2.1/t0602-c13-inh-underlin-00-e-expected.txt: Removed.
        * platform/mac-mojave/css2.1/t0805-c5522-brdr-02-e-expected.txt: Removed.
        * platform/mac-mojave/css2.1/t1202-counter-09-b-expected.txt: Removed.
        * platform/mac-mojave/css2.1/t1202-counters-09-b-expected.txt: Removed.
        * platform/mac-mojave/editing/input/reveal-caret-of-multiline-input-expected.txt: Removed.
        * platform/mac-mojave/editing/mac/selection/context-menu-select-editability-expected.txt: Removed.
        * platform/mac-mojave/editing/selection/3690703-2-expected.txt: Removed.
        * platform/mac-mojave/editing/selection/3690703-expected.txt: Removed.
        * platform/mac-mojave/editing/selection/3690719-expected.txt: Removed.
        * platform/mac-mojave/fast/block/basic/001-expected.txt: Removed.
        * platform/mac-mojave/fast/block/float/float-avoidance-expected.txt: Removed.
        * platform/mac-mojave/fast/css-generated-content/014-expected.png: Removed.
        * platform/mac-mojave/fast/css-generated-content/014-expected.txt: Removed.
        * platform/mac-mojave/fast/css/apple-system-control-colors-expected.txt: Removed.
        * platform/mac-mojave/fast/css/continuationCrash-expected.txt: Removed.
        * platform/mac-mojave/fast/css/css3-nth-child-expected.txt: Removed.
        * platform/mac-mojave/fast/css/line-height-font-order-expected.png: Removed.
        * platform/mac-mojave/fast/css/line-height-font-order-expected.txt: Removed.
        * platform/mac-mojave/fast/css/rtl-ordering-expected.txt: Removed.
        * platform/mac-mojave/fast/css/text-overflow-input-expected.txt: Removed.
        * platform/mac-mojave/fast/dom/34176-expected.txt: Removed.
        * platform/mac-mojave/fast/dom/clone-node-dynamic-style-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/basic-inputs-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/button-positioned-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/button-sizes-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/date/date-input-rendering-basic-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/input-appearance-spinbutton-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/input-button-sizes-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/input-disabled-color-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/input-readonly-dimmed-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/input-text-word-wrap-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/listbox-bidi-align-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/listbox-width-change-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/option-text-clip-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/plaintext-mode-2-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/search-rtl-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/search/search-size-with-decorations-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/select-change-listbox-to-popup-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/select-change-popup-to-listbox-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/select-selected-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/select/optgroup-rendering-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/textfield-outline-expected.txt: Removed.
        * platform/mac-mojave/fast/forms/time/time-input-rendering-basic-expected.txt: Removed.
        * platform/mac-mojave/fast/images/image-controls-basic-expected.png: Removed.
        * platform/mac-mojave/fast/indic-expected.txt: Removed.
        * platform/mac-mojave/fast/invalid/003-expected.txt: Removed.
        * platform/mac-mojave/fast/invalid/004-expected.txt: Removed.
        * platform/mac-mojave/fast/invalid/nestedh3s-expected.txt: Removed.
        * platform/mac-mojave/fast/overflow/007-expected.png: Removed.
        * platform/mac-mojave/fast/overflow/007-expected.txt: Removed.
        * platform/mac-mojave/fast/parser/document-write-option-expected.txt: Removed.
        * platform/mac-mojave/fast/sandbox/mac/sandbox-mach-lookup-expected.txt: Removed.
        * platform/mac-mojave/fast/selectors/018-expected.txt: Removed.
        * platform/mac-mojave/fast/table/frame-and-rules-expected.txt: Removed.
        * platform/mac-mojave/fast/text/atsui-multiple-renderers-expected.txt: Removed.
        * platform/mac-mojave/fast/text/bidi-embedding-pop-and-push-same-expected.txt: Removed.
        * platform/mac-mojave/fast/text/font-weights-expected.txt: Removed.
        * platform/mac-mojave/fast/text/font-weights-zh-expected.txt: Removed.
        * platform/mac-mojave/fast/text/hyphenate-avoid-orphaned-word-expected.txt: Removed.
        * platform/mac-mojave/fast/text/hyphenate-character-expected.png: Removed.
        * platform/mac-mojave/fast/text/hyphenate-character-expected.txt: Removed.
        * platform/mac-mojave/fast/text/hyphens-expected.png: Removed.
        * platform/mac-mojave/fast/text/hyphens-expected.txt: Removed.
        * platform/mac-mojave/fast/text/indic-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/bidi-fallback-font-weight-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/bidi-mirror-he-ar-expected.png: Removed.
        * platform/mac-mojave/fast/text/international/bidi-mirror-he-ar-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/danda-space-expected.png: Removed.
        * platform/mac-mojave/fast/text/international/danda-space-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Removed.
        * platform/mac-mojave/fast/text/international/system-language/system-font-punctuation-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/fetch-after-navigating-iframe-in-cross-origin-page-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-cross-origin-redirect-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/fetch-in-cross-origin-service-worker-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/popup-cross-site-post-expected.txt: Removed.
        * platform/mac-mojave/http/tests/cookies/same-site/popup-same-site-via-cross-site-redirect-expected.txt: Removed.
        * platform/mac-mojave/http/tests/inspector/network/resource-sizes-network-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/cors/credentials-flag-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/cors/origin-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-001-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/api/basic/header-value-combining.any-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/api/basic/header-value-combining.any.worker-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method.any.worker-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/content-type/script.window-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/nosniff/parsing-nosniff.window-actual.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/fetch/nosniff/parsing-nosniff.window-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/xhr/getallresponseheaders-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/xhr/getresponseheader.any-expected.txt: Removed.
        * platform/mac-mojave/imported/w3c/web-platform-tests/xhr/getresponseheader.any.worker-expected.txt: Removed.
        * platform/mac-mojave/platform/mac/fast/text/international/bidi-fallback-font-weight-expected.txt: Removed.
        * platform/mac-mojave/svg/W3C-SVG-1.1/animate-elem-46-t-expected.txt: Removed.
        * platform/mac-mojave/svg/W3C-SVG-1.1/struct-use-01-t-expected.txt: Removed.
        * platform/mac-mojave/svg/batik/text/textStyles-expected.txt: Removed.
        * platform/mac-mojave/svg/custom/glyph-selection-arabic-forms-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug10296-1-expected.png: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug10296-1-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug139524-2-expected.png: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug139524-2-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug2479-3-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug30692-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/bugs/bug33855-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla/other/wa_table_tr_align-expected.txt: Removed.
        * platform/mac-mojave/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png: Removed.
        * platform/mac-mojave/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt: Removed.

2022-05-05  Robert Jenner  <Jenner@apple.com>

        [ Catalina EWS ] webgl/2.0.0/* tests are flaky crashing ASSERTION FAILED: !needsLayout()
        https://bugs.webkit.org/show_bug.cgi?id=229580

        Unreviewed test gardening. Skip WebGL tests on mac-wk1.

        * platform/mac-wk1/TestExpectations:

2022-05-05  Karl Rackler  <rackler@apple.com>

        [ iOS ][ macOS ] imported/w3c/web-platform-tests/webrtc/protocol/rtp-clockrate.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=240123

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-05-05  Karl Rackler  <rackler@apple.com>

        [Gardening]REGRESSION (r293506): [ iOS ][ macOS ] imported/w3c/web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=240074

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-05-05  Ziran Sun  <zsun@igalia.com>

        <input type=color> should have box-sizing: border-box in UA stylesheet
        https://bugs.webkit.org/show_bug.cgi?id=197878

        Reviewed by Tim Nguyen.

        * platform/glib/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets-expected.txt.

2022-05-04  Devin Rousso  <drousso@apple.com>

        [Apple Pay] REGRESSION(r291588): `appearance: -apple-pay-button` doesn't work with `border-width: 0`
        https://bugs.webkit.org/show_bug.cgi?id=240087
        <rdar://problem/92559095>

        Reviewed by Kate Cheney.

        * fast/css/appearance-apple-pay-button-border-width.html: Added.
        * fast/css/appearance-apple-pay-button-border-width-expected-mismatch.html: Added.

        * TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-05-04  Alex Christensen  <achristensen@webkit.org>

        Crash in WindowProxy::setDOMWindow
        https://bugs.webkit.org/show_bug.cgi?id=232763

        Reviewed by Chris Dumez.

        * fast/dom/set-dom-window-without-page-expected.txt: Added.
        * fast/dom/set-dom-window-without-page.html: Added.

2022-05-04  Simon Fraser  <simon.fraser@apple.com>

        Improve logging of display list items in IPC messages
        https://bugs.webkit.org/show_bug.cgi?id=240053

        Reviewed by Cameron McCormack.

        Now that display list logging is debug only, these tests will only work in debug builds.

        * platform/mac/TestExpectations:

2022-05-04  Aditya Keerthi  <akeerthi@apple.com>

        Indeterminate, checked checkboxes do not render correctly on iOS, GTK, and Windows
        https://bugs.webkit.org/show_bug.cgi?id=240015
        rdar://92645056

        Reviewed by Cameron McCormack.

        Added a reference test to to verify that indeterminate, checked
        checkboxes have the same appearance as indeterminate checkboxes.

        * fast/forms/checkbox-checked-indeterminate-expected.html: Added.
        * fast/forms/checkbox-checked-indeterminate.html: Added.

2022-05-04  Karl Rackler  <rackler@apple.com>

        [ iOS ] fast/text/international/system-language/navigator-language/navigator-language-fr.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=240104

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        [Gardening]REGRESSION(r293038):[ iOS ] fast/forms/auto-fill-button/input-auto-fill-button.html is a consistent failure
        https://bugs.webkit.org/show_bug.cgi?id=240065

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        Unreviewed revert
        This reverts commit 250254@main because rebaseline resolved failure
        https://bugs.webkit.org/show_bug.cgi?id=240065

        * platform/ios/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        [ iOS ][ macOS Debug wk1 ] webaudio/AudioBuffer/huge-buffer.html is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=240081

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-05-04  Kate Cheney  <katherine_cheney@apple.com>

        REGRESSION (r293427): [ iOS ] http/tests/quicklook/same-origin-xmlhttprequest-allowed.html is a constant crash and failure (240024)
        https://bugs.webkit.org/show_bug.cgi?id=240024
        rdar://92678727

        Reviewed by Wenson Hsieh.

        * platform/ios/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        [Gardening][iOS Mac ] imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/same-hash.html  is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=237552

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        REGRESSION (r293506): [ iOS ][ macOS ] imported/w3c/web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=240074

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-05-04  Karl Rackler  <rackler@apple.com>

        [Rebaseline] REGRESSION (r293038):[ iOS ] fast/forms/auto-fill-button/input-auto-fill-button.html is a consistent failure
        https://bugs.webkit.org/show_bug.cgi?id=240065

        Unreviewed test gardening. 

        * platform/ios/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:

2022-05-04  Karl Rackler  <rackler@apple.com>

        [ iOS ] fast/css/continuationCrash.html is a consistent failure
        https://bugs.webkit.org/show_bug.cgi?id=240069

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-04  Ziran Sun  <zsun@igalia.com>

        [InputElement] Selection after type change needs to follow HTML specification
        https://bugs.webkit.org/show_bug.cgi?id=237361

        Reviewed by Chris Dumez.

        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-extra-expected.txt.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
        * platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:

2022-04-30  Philippe Normand  <philn@igalia.com>

        [GStreamer] Mediastream mock audio interruption fixes after r290985
        https://bugs.webkit.org/show_bug.cgi?id=239926

        Reviewed by Chris Dumez.

        * platform/glib/TestExpectations: Unflag mediastream tests now passing.

2022-05-04  Philippe Normand  <philn@igalia.com>

        Web Inspector: Update jsmin to 3.0.1
        https://bugs.webkit.org/show_bug.cgi?id=239924

        Reviewed by Yusuke Suzuki.

        * platform/gtk/inspector/timeline/line-column-expected.txt:

2022-05-03  Dan Glastonbury  <djg@apple.com>

        webgl/1.0.3/conformance/state/gl-object-get-calls.html times out after turning WebGL in GPUP on by default
        https://bugs.webkit.org/show_bug.cgi?id=238691
        <rdar://problem/91191670>

        Unreviewed test gardening.

        * webgl/TestExpectations:

2022-05-03  Truitt Savell  <tsavell@apple.com>

        Some layout tests are failing on EWS but not post commit testing due to a OS difference
        https://bugs.webkit.org/show_bug.cgi?id=239564

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Make a couple of grammar checking tests more robust to system spell checker changes
        https://bugs.webkit.org/show_bug.cgi?id=240034
        rdar://92689657

        Reviewed by Aditya Keerthi.

        In some versions of macOS, feeding the following sentence to NSSpellChecker:

        > "the the adlj adaasj sdklj. there there"

        ...no longer yields grammar errors at "the the" and "there there", due to presence of duplicated "the" and
        "there", which causes a couple of layout tests to time out.

        This patch works around the system changes by swizzling out spell checking results, such that we don't need to
        rely on the default NSSpellChecker always tagging "the the" and "there there" as grammar errors.

        * editing/spelling/inline-spelling-markers-hidpi.html:
        * editing/spelling/inline-spelling-markers.html:

2022-05-03  Truitt Savell  <tsavell@apple.com>

        Rebase fast/forms/select-list-box-with-height.html and fast/forms/control-restrict-line-height.html
        https://bugs.webkit.org/show_bug.cgi?id=240039

        unreviewed test gardening.

        * platform/ios/fast/forms/control-restrict-line-height-expected.txt:
        * platform/ios/fast/forms/select-list-box-with-height-expected.txt:

2022-05-03  Truitt Savell  <tsavell@apple.com>

        Fix rebase from 250225@main
        https://bugs.webkit.org/show_bug.cgi?id=239569

        Unreviewed test gardening.

        * platform/ios/tables/mozilla/bugs/bug2479-3-expected.txt:
        * tables/mozilla/bugs/bug2479-3-expected.txt: Removed.

2022-05-03  Karl Rackler  <rackler@apple.com>

        [ iOS ] css3/background/background-repeat-space-content.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=240037

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-03  Karl Rackler  <rackler@apple.com>

        REGRESSION (r293427): [ iOS ] http/tests/quicklook/same-origin-xmlhttprequest-allowed.html is a constant failure and crash
        https://bugs.webkit.org/show_bug.cgi?id=240024

        Unreviewed test gardening. 

        * platform/ios/TestExpectations:

2022-05-03  Truitt Savell  <tsavell@apple.com>

        Rebase tables/mozilla/bugs/bug2479-3.html
        https://bugs.webkit.org/show_bug.cgi?id=239569

        Unreviewed test gardening.

        * tables/mozilla/bugs/bug2479-3-expected.txt: Added.

2022-05-03  Sihui Liu  <sihui_liu@apple.com>

        StorageMap::removeItem may fail to remove item from map
        https://bugs.webkit.org/show_bug.cgi?id=239982
        rdar://80891555

        Reviewed by Chris Dumez.

        * storage/domstorage/sessionstorage/resources/window-open-remove-item.html: Added.
        * storage/domstorage/sessionstorage/window-open-remove-item-expected.txt: Added.
        * storage/domstorage/sessionstorage/window-open-remove-item.html: Added.

2022-05-03  Robert Jenner  <Jenner@apple.com>

        [ Test Gardening ] Batch remove expectations no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=240021

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-05-03  Patrick Angle  <pangle@apple.com>

        Web Inspector: Importing a timeline leaves timeline overview non-scrollable/non-zoomable until windows is resized
        https://bugs.webkit.org/show_bug.cgi?id=239880

        Reviewed by Devin Rousso.

        * inspector/view/asynchronous-layout-expected.txt:
        * inspector/view/asynchronous-layout.html:
        - Added test case for calls to `updateLayout()` during asynchronous `layout()`.
        - Remove test case for removed `View.prototype.cancelLayout`.

        * inspector/view/basics-expected.txt:
        * inspector/view/basics.html:
        - Added test case to verify that `_dirtyDescendantsCount` is an expected value at various points of
        attaching/detaching views.

2022-05-03  Antti Koivisto  <antti@apple.com>

        [CSS Cascade Layers] Endless recursion with revert-layer in other tree context
        https://bugs.webkit.org/show_bug.cgi?id=239967
        <rdar://92449950>

        Reviewed by Alan Bujtas.

        * fast/css/revert-layer-tree-context-stack-overflow-expected.html: Added.
        * fast/css/revert-layer-tree-context-stack-overflow.html: Added.

2022-05-03  Kimmo Kinnunen  <kkinnunen@apple.com>

        IPC stream connection sends should fail immediately when connection closes
        https://bugs.webkit.org/show_bug.cgi?id=238253

        Reviewed by Simon Fraser.

        The test works on minibrowser but GPUP startup code fails in run-webkit-tests,
        thus disabled.

        * TestExpectations:
        * ipc/stream-sync-crash-no-timeout-expected.txt: Added.
        * ipc/stream-sync-crash-no-timeout.html: Added.
        * ipc/stream-sync-reply-shared-memory.html: Adjust after API change.

2022-05-03  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerRegistration update should fail if called from an installing service worker context
        https://bugs.webkit.org/show_bug.cgi?id=239962

        Reviewed by Chris Dumez.

        * TestExpectations:

2022-05-02  Robert Jenner  <Jenner@apple.com>

        [ Monterey wk1 GuardMalloc ] fast/borders/hidpi-3x-input-hairline-border.html is timing out
        <rdar://problem/81996454>

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-05-02  Robert Jenner  <Jenner@apple.com>

        [ iOS macOS wk2 ]compositing/video/video-bo rder-radius-clipping.html is a flakey image failure
        https://bugs.webkit.org/show_bug.cgi?id=224690

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-05-02  Robert Jenner  <Jenner@apple.com>

        [ iOS macOS wk2 ]compositing/video/video-bo rder-radius-clipping.html is a flakey image failure
        https://bugs.webkit.org/show_bug.cgi?id=224690

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-05-02  Karl Rackler  <rackler@apple.com>

        [ iOS ][ macOS ] css3/calc/transitions-dependent.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239990

        Unreviewed test gardening. 

        * platform/ios-simulator/TestExpectations:
        * platform/mac/TestExpectations:

2022-05-02  Oriol Brufau  <obrufau@igalia.com>

        [cssom] Don't index 'all' shorthand in computed styles
        https://bugs.webkit.org/show_bug.cgi?id=239669

        Reviewed by Darin Adler.

        Update test expectations.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

2022-05-02  Devin Rousso  <drousso@apple.com>

        [Modern Media Controls] REGRESSION(?) tapping a video to start playing for the first time doesn't start playing
        https://bugs.webkit.org/show_bug.cgi?id=239918
        <rdar://problem/91329117>

        Reviewed by Jer Noble.

        * media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-shows-start-button.html: Added.
        * media/modern-media-controls/ios-inline-media-controls/touch/ios-inline-media-controls-shows-start-button-expected.txt: Added.

        * TestExpectations:

2022-05-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        HTML Parser: Wrong column number in CR-LF line ending style (DOS EOL style) HTML files
        https://bugs.webkit.org/show_bug.cgi?id=239947

        Reviewed by Myles C. Maxfield.

        * js/dom/line-column-numbers-cr-lf-expected.txt: Added.
        * js/dom/line-column-numbers-cr-lf.html: Added.

2022-05-02  Oriol Brufau  <obrufau@igalia.com>

        [cssom] Enumerate all logical longhands in the computed style
        https://bugs.webkit.org/show_bug.cgi?id=239910

        Reviewed by Darin Adler.

        Update test expectations.
        all-prop-initial-xml-expected.txt for ios was clearly outdated, so just
        removing it.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: Removed.
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

2022-05-02  Antti Koivisto  <antti@apple.com>

        REGRESSION: fast/css/stylesheet-candidate-nodes-crash.xhtml is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=239960
        rdar://92293472

        Reviewed by Alan Bujtas.

        XML parser update has changed error reporting output slightly.
        Remove the error report from the test output since testing that is not the purpose of this test.

        * fast/css/stylesheet-candidate-nodes-crash-expected.txt:
        * fast/css/stylesheet-candidate-nodes-crash.xhtml:

2022-05-01  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update test expectations. Unreviewed test gardening.
        https://bugs.webkit.org/show_bug.cgi?id=239945

        * platform/glib/TestExpectations:
        * platform/gtk/TestExpectations:

2022-05-01  Philippe Normand  <philn@igalia.com>

        [GStreamer] tests gardening
        https://bugs.webkit.org/show_bug.cgi?id=239943

        Unreviewed, update a couple media-recorder and media-capabilities expectations.

        * platform/glib/TestExpectations:
        * platform/wpe/http/wpt/mediarecorder/MediaRecorder-dataavailable-expected.txt: Removed.
        * platform/wpe/http/wpt/mediarecorder/MediaRecorder-mock-dataavailable-expected.txt: Removed.

2022-04-30  Philippe Normand  <philn@igalia.com>

        REGRESSION(r283437) a number of media tests fail/timeout on the test bots
        https://bugs.webkit.org/show_bug.cgi?id=231811
        <rdar://problem/84552871>

        Reviewed by Michael Catanzaro.

        * platform/glib/TestExpectations: Unflag tests now passing.

2022-04-30  Alan Bujtas  <zalan@apple.com>

        ASSERTION FAILED: *trailingRunIndex >= overflowingRunIndex in WebCore::Layout::InlineContentBreaker::tryBreakingNextOverflowingRuns
        https://bugs.webkit.org/show_bug.cgi?id=239838
        <rdar://problem/92455051>

        Reviewed by Antti Koivisto.

        * fast/inline/overflowing-content-inside-inline-box-crash-expected.txt: Added.
        * fast/inline/overflowing-content-inside-inline-box-crash.html: Added.

2022-04-30  Alan Bujtas  <zalan@apple.com>

        [LFC][IFC] Do not wrap </span> to the next line when it is preceded by overflowing text
        https://bugs.webkit.org/show_bug.cgi?id=239879
        <rdar://problem/92497176>

        Reviewed by Antti Koivisto.

        * fast/inline/overflowing-content-inside-inline-box-expected.html: Added.
        * fast/inline/overflowing-content-inside-inline-box.html: Added.

2022-04-27  Jean-Yves Avenard  <jya@apple.com>

        [ Monterey WK2 ] media/media-source/media-source-webm-vorbis-partial.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=239308
        rdar://91719356

        Reviewed by Jer Noble.

        The test disabled the GPU process, and sandboxing rules prevent from
        calling CoreMedia in the content process.
        
        * media/media-source/media-source-webm-vorbis-partial.html:

2022-04-29  Yury Semikhatsky  <yurys@chromium.org>

        Format time zone name using ICU instead of platform calls
        https://bugs.webkit.org/show_bug.cgi?id=239865

        Reviewed by Yusuke Suzuki.

        Rebased existing layout tests to reflect new format (which is the same as in other
        browsers now).

        * storage/indexeddb/modern/date-basic-expected.txt:
        * storage/indexeddb/modern/date-basic-private-expected.txt:
        * storage/indexeddb/modern/get-keyrange-expected.txt:
        * storage/indexeddb/modern/get-keyrange-private-expected.txt:
        * storage/indexeddb/modern/idbobjectstore-delete-1-expected.txt:
        * storage/indexeddb/modern/idbobjectstore-delete-1-private-expected.txt:

2022-04-29  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        REGRESSION(r291998): [GTK] test accessibility/gtk/menu-list-unfocused-notifications.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=239888

        Change the delay between changes to the combobox value to 1ms to ensure that an
        accessibility event is consistently generated for both changes.

        Reviewed by Martin Robinson.

        * accessibility/gtk/menu-list-unfocused-notifications.html:

2022-04-29  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        REGRESSION(r290548) [GTK][WPE] test LayoutTests/fast/events/node-event-anchor-lock.html fails
        https://bugs.webkit.org/show_bug.cgi?id=239890

        Reviewed by Martin Robinson.

        * fast/events/node-event-anchor-lock.html: Disable scroll animation for this test.

2022-04-29  Philippe Normand  <philn@igalia.com>

        [GTK][WPE] media/video-with-alpha.html is failing and skipped
        https://bugs.webkit.org/show_bug.cgi?id=226484

        Unreviewed, gardening.

        * platform/glib/TestExpectations: The SDK ships GStreamer 1.20, mark
        media/video-with-alpha.html as passing.

2022-04-29  Youenn Fablet  <youenn@apple.com>

        HTMLMediaElement can get multiple interruptions for invisible autoplay
        https://bugs.webkit.org/show_bug.cgi?id=239842
        <rdar://91809550>

        Reviewed by Eric Carlson.

        * fast/mediastream/video-mediastream-restricted-invisible-autoplay-not-allowed-expected.txt: Added.
        * fast/mediastream/video-mediastream-restricted-invisible-autoplay-not-allowed.html: Added.

2022-04-28  Patrick Griffis  <pgriffis@igalia.com>

        CSP: Fix mixing strict-dynamic and unsafe-inline policies
        https://bugs.webkit.org/show_bug.cgi?id=239862

        Reviewed by Kate Cheney.

        If you had multiple policies, one including strict-dynamic and another with unsafe-inline, the unsafe-inline
        policy was incorrectly handled.

        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-unsafe-inline-policies-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/script-src-strict-dynamic-and-unsafe-inline-policies.html: Added.

2022-04-28  Oriol Brufau  <obrufau@igalia.com>

        [css-cascade] Mark properties sharing a computed value as related
        https://bugs.webkit.org/show_bug.cgi?id=239579

        Reviewed by Tim Nguyen.

        Some failures are now passing.

        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt:

2022-04-28  Karl Rackler  <rackler@apple.com>

        [ macOS wk1 ] imported/w3c/web-platform-tests/css/css-text/text-transform/text-transform-upperlower-003.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239871

        Unreviewed test gardening. 

        * platform/mac-wk1/TestExpectations:

2022-04-28  Truitt Savell  <tsavell@apple.com>

        Remove expectations for tiled-drawing/scrolling/scroll-snap/scroll-snap-momentum-in-non-snapping-axis.html
        https://bugs.webkit.org/show_bug.cgi?id=228930

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-28  Simon Fraser  <simon.fraser@apple.com>

        [ macOS Debug wk2 ] Thirteen imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ are a flaky crash (ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData))
        https://bugs.webkit.org/show_bug.cgi?id=239770
        <rdar://92334616>

        Reviewed by Jer Noble.

        Unskip the affected tests, reverting r293451.

        * platform/mac-wk2/TestExpectations:

2022-04-28  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update test expectations and baselines. Unreviewed test gardening.
        https://bugs.webkit.org/show_bug.cgi?id=239827

        * platform/glib/TestExpectations:
        * platform/glib/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
        * platform/glib/fast/lists/li-br-expected.txt:
        * platform/gtk/TestExpectations:
        * platform/gtk/compositing/repaint/composite-and-scale-change-expected.txt: Renamed from LayoutTests/platform/gtk/compositing/repaint/composite-and-scale-change-actual.txt.
        * platform/gtk/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
        * platform/gtk/fast/borders/rtl-border-05-expected.txt:
        * platform/gtk/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
        * platform/gtk/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:
        * platform/gtk/fast/ruby/ruby-runs-spans-expected.txt:
        * platform/gtk/fast/ruby/rubyDOM-insert-rt-expected.txt:
        * platform/gtk/fast/ruby/rubyDOM-insert-text1-expected.txt:
        * platform/gtk/inspector/css/shadow-scoped-style-expected.txt: Removed.
        * platform/wpe/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
        * platform/wpe/fast/borders/rtl-border-05-expected.txt:
        * platform/wpe/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:

2022-04-28  Youenn Fablet  <youenn@apple.com>

        Update webrtc/connection-state.html to not expected the completed ice connection state
        https://bugs.webkit.org/show_bug.cgi?id=239843

        Reviewed by Eric Carlson.

        Wait for video to be playable to check states.
        Remove completed state from the expected ice connection state as this is racy and app specific for when completed will happen (it can take a long time or not).
        This is aligned with WebKit and Chrome implementations.

        * TestExpectations:
        * webrtc/connection-state.html:
        * webrtc/connection-state-expected.txt:

2022-04-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Use quadratic-probing instead of double-hashing
        https://bugs.webkit.org/show_bug.cgi?id=239813

        Reviewed by Geoffrey Garen.

        The following tests are relying on HashTable's ordering which is not guaranteed.

        * media/media-session/actionHandlerInternalMappings-expected.txt:
        * platform/glib/accessibility/content-editable-as-textarea-expected.txt:
        * platform/gtk/accessibility/native-text-control-attributed-string-expected.txt:
        * storage/indexeddb/getdatabases-expected.txt:
        * storage/indexeddb/getdatabases-private-expected.txt:
        * storage/indexeddb/resources/getdatabases.js:

2022-04-28  Antti Koivisto  <antti@apple.com>

        [ iOS ] tables/mozilla/bugs/bug26178.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=239567
        <rdar://problem/92055518>

        Unreviewed test gardening.

        This test produces different (1px) render tree dump results on iOS 15 and 15E sims.
        Mark as failure on iOS as there appears be no way to have different expectations for those.

        * platform/ios/TestExpectations:
        * platform/ios/tables/mozilla/bugs/bug26178-expected.txt:

        Also update to E results.

2022-04-28  Tim Nguyen  <ntim@apple.com>

        Rebaseline editing/pasteboard/smart-paste-paragraph-002.html after r293521
        https://bugs.webkit.org/show_bug.cgi?id=166782

        Unreviewed test gardening.

        * editing/pasteboard/smart-paste-paragraph-002-expected.txt:
        * platform/ios/editing/pasteboard/smart-paste-paragraph-002-expected.txt:

2022-04-28  Kimmo Kinnunen  <kkinnunen@apple.com>

        IPC testing API should have the ability to test IPC::Connection send and receive through IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=239495

        Reviewed by Darin Adler.

        * ipc/create-connection-and-send-async.html: Added.

2022-04-27  Patrick Angle  <pangle@apple.com>

        Web Inspector: [Flexbox] `<button>` and `<select>` elements are appearing in list of Flex containers
        https://bugs.webkit.org/show_bug.cgi?id=239425

        Reviewed by Devin Rousso.

        * inspector/css/nodeLayoutContextTypeChanged-expected.txt:
        * inspector/css/nodeLayoutContextTypeChanged.html:

2022-04-27  Karl Rackler  <rackler@apple.com>

        [ macOS wk1 ] Fourteen webgl/2.0.0/conformance tests are a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=239835

        Unreviewed test gardening. 

        * platform/mac-wk1/TestExpectations:

2022-04-27  Karl Rackler  <rackler@apple.com>

        [ macOS Debug wk2 ] fast/css/variables/test-suite/168.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239822

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-27  Eric Carlson  <eric.carlson@apple.com>

        [iOS] unable to start playing audio when device is locked
        https://bugs.webkit.org/show_bug.cgi?id=239812
        <rdar://90642648>

        Reviewed by Jer Noble.

        * media/audio-session-category-expected.txt:
        * media/audio-session-category.html:

2022-04-27  Karl Rackler  <rackler@apple.com>

        [ macOS Debug wk2 ] fast/css/identical-logical-height-decl.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239818

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-27  Tim Nguyen  <ntim@apple.com>

        Make -webkit-transform-style an alias of transform-style
        https://bugs.webkit.org/show_bug.cgi?id=239808

        Reviewed by Antti Koivisto.

        Fixes cascade issues when applying both -webkit-transform-style and transform-style (see bug 239579), and removes
        unnecessary code as well given the FIXME was never addressed.

        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-04-27  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GTK] The setting WebKitMinimumFontSize is not reset by the testing framework, leading to flaky tests
        https://bugs.webkit.org/show_bug.cgi?id=237181

        Unreviewed test gardening.

        * platform/gtk/TestExpectations: Remove skip now that the test doesn't cause problems.

2022-04-27  Tim Nguyen  <ntim@apple.com>

        [css-text] Make word-wrap CSS property an alias of overflow-wrap
        https://bugs.webkit.org/show_bug.cgi?id=166782

        Reviewed by Antti Koivisto.

        This follows the spec, and fixes cascade issues when applying both properties (see bug 239579).

        Relevant WPT expectations updated to pass.

        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-04-27  Truitt Savell  <tsavell@apple.com>

        Cleanup expectations for 7 imported/w3c/web-platform-tests/html/semantics/interactive-elements/ tests
        https://bugs.webkit.org/show_bug.cgi?id=239790

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-04-27  Youenn Fablet  <youenn@apple.com>

        [Mac] http/tests/media/user-gesture-preserved-across-xmlhttprequest.html is a flaky fail/crash/timeout
        https://bugs.webkit.org/show_bug.cgi?id=229588
        <rdar://problem/82408723>

        Reviewed by Chris Dumez.

        * platform/mac/TestExpectations:

2022-04-27  Ziran Sun  <zsun@igalia.com>

        [css-ui] Remove some unimplemented -webkit-appearance keywords
        https://bugs.webkit.org/show_bug.cgi?id=238930

        Reviewed by Aditya Keerthi.

        * imported/blink/editing/execCommand/outdent-collapse-table-crash.html:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt:

2022-04-27  Youenn Fablet  <youenn@apple.com>

        Add testRunner API to clear memory cache
        https://bugs.webkit.org/show_bug.cgi?id=239804
        rdar://92033309

        Reviewed by Chris Dumez.

        * http/wpt/fetch/clear-memory-cache-expected.txt: Added.
        * http/wpt/fetch/clear-memory-cache.html: Added.
        * http/wpt/fetch/resources/clear-memory-cache.py: Added.

2022-04-27  Youenn Fablet  <youenn@apple.com>

        Shared workers should match service worker registrations
        https://bugs.webkit.org/show_bug.cgi?id=239122

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/controlled-sharedworker.https-expected.txt: Added.
        * http/wpt/service-workers/controlled-sharedworker.https.html: Added.
        * http/wpt/service-workers/resources/controlled-sharedworker.js: Added.
        * http/wpt/service-workers/skipFetchEvent-worker.js:
        * platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt: Removed.

2022-04-26  Antti Koivisto  <antti@apple.com>

        ::first-letter does not work if used only in shadow content
        https://bugs.webkit.org/show_bug.cgi?id=220650
        <rdar://problem/73477161>

        Reviewed by Alan Bujtas.

        Test case by vb@bigdot.de.

        * fast/shadow-dom/shadow-first-line-and-letter-expected.html: Added.
        * fast/shadow-dom/shadow-first-line-and-letter.html: Added.

2022-04-26  Truitt Savell  <tsavell@apple.com>

        Cleanup expectations for 7 imported/w3c/web-platform-tests/html/semantics/interactive-elements/ tests
        https://bugs.webkit.org/show_bug.cgi?id=239790

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/closed-dialog-does-not-block-mouse-events-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-inlines-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-ancestor-is-inert-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-blocks-mouse-events-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/non-modal-dialog-does-not-block-mouse-events-expected.txt: Removed.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/simulated-click-inert-expected.txt: Removed.

2022-04-26  Karl Rackler  <rackler@apple.com>

        [ macOS ] webanimations/accelerated-animation-after-forward-filling-animation.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239794

        Unreviewed test gardening. 

        * platform/mac/TestExpectations:

2022-04-26  Oriol Brufau  <obrufau@igalia.com>

        [css-cascade] Fix cascade rollback for deferred properties
        https://bugs.webkit.org/show_bug.cgi?id=238125

        Reviewed by Antti Koivisto.

        Add custom expectation for mac-wk1 since scroll-behavior is disabled
        there, and thus not checked by the test.

        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt: Added.

2022-04-26  Karl Rackler  <rackler@apple.com>

        [ macOS ] webanimations/accelerated-animation-slot-invalidation.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239791

        Unreviewed test gardening. 

        * platform/mac/TestExpectations:

2022-04-26  Karl Rackler  <rackler@apple.com>

        [ macOS Debug wk2 ] Thirteen imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ are a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=239770

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-26  Simon Fraser  <simon.fraser@apple.com>

        [ iOS EWS ] css3/background/background-repeat-round-auto2.html is a image failure
        https://bugs.webkit.org/show_bug.cgi?id=238965
        <rdar://91454381>

        Reviewed by Tim Horton.

        Generic shaders can produce slightly different results to optimized shaders, and
        get swapped in racily, so disable them for testing on platforms where accelerated
        drawing is used.

        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:

2022-04-26  Simon Fraser  <simon.fraser@apple.com>

        Save a few drawing operations when painting layer contents
        https://bugs.webkit.org/show_bug.cgi?id=239756

        Reviewed by Tim Horton.

        Remove an extra save/restore, and a translate(0,0) when painting layers and there's just one
        dirty rect.

        * displaylists/extent-includes-shadow-expected.txt:
        * displaylists/layer-dispay-list-expected.txt:
        * displaylists/replay-skip-clipped-rect-expected.txt:

2022-04-26  Karl Rackler  <rackler@apple.com>

        [ macOS Debug wk2 ] Six imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ are a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=239770

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-26  Karl Rackler  <rackler@apple.com>

        [ macOS Debug wk2 ] Four imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ are a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=239770

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-26  Youenn Fablet  <youenn@apple.com>

        Service Worker loads should not expose some ResourceTiming information
        https://bugs.webkit.org/show_bug.cgi?id=239608

        Reviewed by Alex Christensen.

        * TestExpectations:

2022-04-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: add UI for blocking requests
        https://bugs.webkit.org/show_bug.cgi?id=239674

        Reviewed by Patrick Angle.

        * http/tests/inspector/network/intercept-request-with-error.html: Added.
        * http/tests/inspector/network/intercept-request-with-error-expected.txt: Added.
        * inspector/network/interceptRequestWithError.html: Removed.
        * inspector/network/interceptRequestWithError-expected.txt: Removed.
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        Reworked this test to use `WI.LocalResourceOverride` instead of the protocol.

2022-04-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: crash when a subresource is intercepted by a skip network local override with an error status code
        https://bugs.webkit.org/show_bug.cgi?id=239675

        Reviewed by Patrick Angle.

        * http/tests/inspector/network/intercept-request-subresource-with-response-error-status-code.html: Added.
        * http/tests/inspector/network/intercept-request-subresource-with-response-error-status-code-expected.txt: Added.

        * platform/mac-wk1/TestExpectations:

2022-04-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Enable change-array-by-copy
        https://bugs.webkit.org/show_bug.cgi?id=239678

        Reviewed by Saam Barati.

        * inspector/model/remote-object-get-properties-expected.txt:
        * js/Object-getOwnPropertyNames-expected.txt:
        * js/array-unscopables-properties-expected.txt:
        * js/script-tests/Object-getOwnPropertyNames.js:
        * js/script-tests/array-unscopables-properties.js:

2022-04-25  Chris Fleizach  <cfleizach@apple.com>

        AX: Don't expose aria-roledescription value on "generic" elements (e.g. div and span) unless explicit role value is also defined
        https://bugs.webkit.org/show_bug.cgi?id=174248
        <rdar://problem/33178050>

        Reviewed by Andres Gonzalez.

        * accessibility/ignored-aria-role-description-expected.txt: Added.
        * accessibility/ignored-aria-role-description.html: Added.

2022-04-25  Antti Koivisto  <antti@apple.com>

        [CSS Typed OM] Fix AttributeStyleMap.get for list values
        https://bugs.webkit.org/show_bug.cgi?id=239716

        Reviewed by Alan Bujtas.

        * css-typedom/typed-om-perspective-value-expected.txt: Added.
        * css-typedom/typed-om-perspective-value.html: Added.

2022-04-25  Ziran Sun  <zsun@igalia.com>

        UA stylesheet should include table { text-indent: initial } to conform with HTML standard
        https://bugs.webkit.org/show_bug.cgi?id=201297

        Reviewed by Tim Nguyen.

        * platform/glib/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets-expected.txt:

2022-04-25  Kimmo Kinnunen  <kkinnunen@apple.com>

        REGRESSION (249585@main): TestWebKitAPI.IPCTestingAPI.CanReceiveIPCSemaphore is timing out
        https://bugs.webkit.org/show_bug.cgi?id=239507

        Reviewed by Wenson Hsieh.

        * ipc/send-semaphore-expected.txt: Added.
        * ipc/send-semaphore.html: Added.

2022-04-24  Youenn Fablet  <youenn@apple.com>

        TextTrackLoader should use SameOrigin mode by default
        https://bugs.webkit.org/show_bug.cgi?id=239381

        Reviewed by Eric Carlson.

        * http/tests/security/contentSecurityPolicy/resources/track.vtt.py: Added.
        * http/tests/security/contentSecurityPolicy/track-redirect-allowed.html:
        * http/tests/security/contentSecurityPolicy/track-redirect-allowed2.html:
        * http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/track-redirect-blocked.html:
        * http/tests/security/text-track-crossorigin-expected.txt:
        * http/tests/security/text-track-crossorigin.html:

2022-04-23  Andres Gonzalez  <andresg_22@apple.com>

        AX ITM: Table row objects should return a non-null unignored parent even when a table object is not found in its ancestry.
        https://bugs.webkit.org/show_bug.cgi?id=239606
        <rdar://problem/92094205>

        Reviewed by Chris Fleizach.

        * accessibility/aria-expanded-supported-roles.html:
        * accessibility/mac/heading-clickpoint-expected.txt:
        * accessibility/mac/heading-clickpoint.html:
        * platform/mac/accessibility/aria-expanded-supported-roles-expected.txt:

2022-04-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATSPI] WTR: add implementation for AccessibilityUIElement::domIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=239598

        Reviewed by Andres Gonzalez.

        * platform/glib/accessibility/table-add-remove-row-expected.txt: Removed.

2022-04-22  Rob Buis  <rbuis@igalia.com>

        Should never be reached failure in WebCore::RenderElement::visibleInViewportStateChanged
        https://bugs.webkit.org/show_bug.cgi?id=191824

        Reviewed by Eric Carlson.

        * media/audio-viewport-state-change-crash-expected.txt: Added.
        * media/audio-viewport-state-change-crash.html: Added.

2022-04-22  Patrick Angle  <pangle@apple.com>

        Web Inspector: Regression(r287684) Resources from the memory cache show empty content in Network, Sources, and Search tabs
        https://bugs.webkit.org/show_bug.cgi?id=239667

        Reviewed by Devin Rousso.

        Add test steps to ensure that the resource has content, and that the base64Encoded value matches our
        expectations. While only the memory cache was affected by this regression, add the test steps to both
        the memory and disk caches to defend this functionality.

        * http/tests/inspector/network/resource-response-source-memory-cache-expected.txt:
        * http/tests/inspector/network/resource-response-source-memory-cache.html:
        * http/tests/inspector/network/resource-response-source-disk-cache-expected.txt:
        * http/tests/inspector/network/resource-response-source-disk-cache.html:

2022-04-22  Simon Fraser  <simon.fraser@apple.com>

        Focusing scroll container before scrolling breaks smooth scrolling
        https://bugs.webkit.org/show_bug.cgi?id=239605

        Reviewed by Wenson Hsieh.

        * fast/scrolling/programmatic-smooth-scroll-after-focus-expected.txt: Added.
        * fast/scrolling/programmatic-smooth-scroll-after-focus.html: Added.
        * platform/win/TestExpectations:

2022-04-22  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey ] fast/text/khmer-lao-font.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238917

        Unreviewed test gardening.

        * platform/mac-bigsur/fast/text/khmer-lao-font-expected.txt: Copied from LayoutTests/platform/mac/fast/text/khmer-lao-font-expected.txt.
        * platform/mac/fast/text/khmer-lao-font-expected.txt:

2022-04-22  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 arm64 ] imported/w3c/web-platform-tests/infrastructure/reftest-wait.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=230488

        Unreviewed test gardening. 

        Updated text expectation in include Monterey wk2 arm64

        * platform/mac-wk2/TestExpectations:

2022-04-22  Karl Rackler  <rackler@apple.com>

        [ macOS Release arm64 ] imported/w3c/web-platform-tests/resource-timing/resource_timing.worker.html is a flakey text failure
        https://bugs.webkit.org/show_bug.cgi?id=223472

        Unreviewed test gardening. 

        Updated test expectation [ Release arm64 ]

        * platform/mac/TestExpectations:

2022-04-22  Andres Gonzalez  <andresg_22@apple.com>

        Fix for accessibility/aria-grid-with-aria-owns-rows.html in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=239498
        <rdar://problem/91961398>

        Reviewed by Chris Fleizach and Tyler Wilcock.

        * accessibility/aria-grid-with-aria-owns-rows-expected.txt:
        * accessibility/aria-grid-with-aria-owns-rows.html:

2022-04-22  Alan Bujtas  <zalan@apple.com>

        Book content is clipped at page boundary when displaying list with bullet points
        https://bugs.webkit.org/show_bug.cgi?id=239638
        <rdar://89257768>

        Reviewed by Antti Koivisto.

        * fast/multicol/pagination/table-cell-one-line-pagination-expected.html: Added.
        * fast/multicol/pagination/table-cell-one-line-pagination.html: Added.

2022-04-22  Tyler Wilcock  <tyler_w@apple.com>

        AX: The isolated tree is not updated after role changes in AccessibilityRenderObject::updateRoleAfterChildrenCreation()
        https://bugs.webkit.org/show_bug.cgi?id=239549

        Reviewed by Chris Fleizach and Andres Gonzalez.

        * accessibility/mac/invalid-menu-role-does-not-send-notification-expected.txt:
        * accessibility/mac/invalid-menu-role-does-not-send-notification.html:
        Update test to use async-await to actually wait for changes to happen,
        which is required to make the test pass in isolated tree mode.

2022-04-21  Andres Gonzalez  <andresg_22@apple.com>

        AX ITM: Fix for multiple flaky tests in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=239583
        <rdar://problem/92064483>

        Reviewed by Chris Fleizach.

        Rewrote these flaky tests so that now pass in isolated tree mode:
        - Use expect() instead of shouldBe*() and log the output at the end of
        the test.
        - Avoid setting focus to an element just to get the accessible element.

        * accessibility/legend-children-are-visible-expected.txt:
        * accessibility/legend-children-are-visible.html:
        * accessibility/mac/aria-label-overrides-visible-text-expected.txt:
        * accessibility/mac/aria-label-overrides-visible-text.html:
        * accessibility/mac/aria-popup-buttons-on-native-elements-expected.txt:
        * accessibility/mac/aria-popup-buttons-on-native-elements.html:
        * accessibility/mac/link-with-title-expected.txt:
        * accessibility/mac/link-with-title.html:

2022-04-21  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 arm64 ] media/modern-media-controls/tracks-support/text-track-selected-via-media-api.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239634

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-21  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 arm64 ] fast/scrolling/mac/adjust-scroll-snap-during-gesture.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239627

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-21  Truitt Savell  <tsavell@apple.com>

        [ iOS 15.4 ] imported/w3c/web-platform-tests/css/css-color/opacity-overlapping-letters.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=239625

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-04-21  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 arm64 ] REGRESSION (r242313): Layout Test scrollingcoordinator/mac/multiple-fixed.html is a flaky time out and image diff
        https://bugs.webkit.org/show_bug.cgi?id=195635

        Unreviewed test gardening. 

        Adding new test expectation.

        * platform/mac-wk2/TestExpectations:

2022-04-21  Matteo Flores  <matteo_flores@apple.com>

        Implement ElementInternals
        https://bugs.webkit.org/show_bug.cgi?id=197960

        Unreviewed test gardening.

        * platform/ipad/TestExpectations:

2022-04-21  Youenn Fablet  <youenn@apple.com>

        A suspended remote shared worker should resume when a new SharedWorker is added
        https://bugs.webkit.org/show_bug.cgi?id=239325

        Reviewed by Chris Dumez.

        * http/tests/navigation/page-cache-shared-worker-expected.txt:
        * http/tests/navigation/page-cache-shared-worker.html:
        * http/tests/navigation/resources/page-cache-helper-for-sharedworker.html:
        * http/tests/navigation/resources/shared-worker-script.js:

2022-04-21  Karl Rackler  <rackler@apple.com>

        [ macOS Release ] webanimations/css-transition-retargeting-during-ready-promise.html is a flaky failure
        Updating test expectations to include Monterey Release
        https://bugs.webkit.org/show_bug.cgi?id=215335

        Unreviewed test gardening. 

        * platform/mac/TestExpectations:

2022-04-21  Eric Carlson  <eric.carlson@apple.com>

        AVSampleBufferRenderSynchronizer timeline sometimes goes backwards when playback begins
        https://bugs.webkit.org/show_bug.cgi?id=239471
        rdar://91117803

        Reviewed by Jer Noble.

        * media/media-source/media-source-current-time-expected.txt: Added.
        * media/media-source/media-source-current-time.html: Added.

2022-04-21  Tim Nguyen  <ntim@apple.com>

        [iOS] Rebaseline fast/attachment/attachment-disabled-rendering.html expectations
        https://bugs.webkit.org/show_bug.cgi?id=238960

        Unreviewed test gardening.

        The page dimensions are slightly different, but the <attachment> has 0 size as expected.

        * platform/ios-wk2/TestExpectations:
        * platform/ios/fast/attachment/attachment-disabled-rendering-expected.txt: Added.

2022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [ iOS ] platform/ios/ios/fast/text/opticalFont.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=239570
        <rdar://problem/92056238>

        Unreviewed test gardening.

        Rebase.

        * platform/ios/platform/ios/ios/fast/text/opticalFont-expected.txt:

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 ] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.tentative.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239577

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS Release wk2 ] webanimations/frame-rate/animation-frame-rate-alignment-started-with-one-frame-separation.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239574

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ Monterey Release wk2 ] imported/w3c/web-platform-tests/content-security-policy/inheritance/blob-url-in-main-window-self-navigate-inherits.sub.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239568

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r281913): Map toolbar flickers when dragging the map on https://gis.ee/
        https://bugs.webkit.org/show_bug.cgi?id=238589
        <rdar://90483049>

        Reviewed by Alan Bujtas.

        Move subtree-div-overlaps-multiple-negative-z-divs.html into the layer-creation directory.
        Add a new test.

        * compositing/layer-creation/overlap-with-negative-z-layers-expected.html: Added.
        * compositing/layer-creation/overlap-with-negative-z-layers.html: Added.
        * compositing/layer-creation/subtree-div-overlaps-multiple-negative-z-divs-expected.html: Renamed from LayoutTests/compositing/subtree-div-overlaps-multiple-negative-z-divs-expected.html.
        * compositing/layer-creation/subtree-div-overlaps-multiple-negative-z-divs.html: Renamed from LayoutTests/compositing/subtree-div-overlaps-multiple-negative-z-divs.html.
        * fast/harness/render-tree-as-text-options-expected.txt: Test progressed; update results.

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 ] media/audio-session-category-at-most-recent-playback.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239566

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Truitt Savell  <tsavell@apple.com>

        Some layout tests are failing on EWS but not post commit testing due to a OS difference
        https://bugs.webkit.org/show_bug.cgi?id=239564

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-04-20  Alan Bujtas  <zalan@apple.com>

        [IFC][Integration] Do not call WebPreferences::simpleLineLayoutEnabled in canUseForLineLayoutWithReason
        https://bugs.webkit.org/show_bug.cgi?id=239540

        Reviewed by Antti Koivisto.

        * TestExpectations:
        * editing/document-marker-null-check.html:
        * editing/text-iterator/count-mark-lineboxes.html:
        * fast/block/float/simple-line-layout-float-shrink-line-expected.html:
        * fast/block/line-layout/first-line-should-bail-out-of-simple-line-layout-expected.html:
        * fast/block/margin-collapse/empty-clear-blocks-complex.html:
        * fast/css/word-spacing-with-normal-layout.html:
        * fast/css3-text/css3-text-decoration/simple-line-layout-text-decoration-expected.html:
        * fast/css3-text/css3-text-justify/text-justify-last-line-simple-line-layout-expected.html:
        * fast/dom/Document/CaretRangeFromPoint/simple-line-layout-hittest-with-caret-range-from-point-expected.html:
        * fast/dom/Range/simple-line-layout-getclientrects-expected.html:
        * fast/forms/basic-textareas-quirks-simple-lines-expected.html:
        * fast/forms/basic-textareas-quirks.html:
        * fast/forms/basic-textareas-simple-lines-expected.html:
        * fast/forms/basic-textareas.html:
        * fast/forms/linebox-overflow-in-textarea-padding-simple-lines-expected.html:
        * fast/forms/linebox-overflow-in-textarea-padding.html:
        * fast/forms/negativeLineHeight-simple-lines-expected.html:
        * fast/forms/negativeLineHeight.html:
        * fast/forms/textAreaLineHeight-simple-lines-expected.html:
        * fast/forms/textAreaLineHeight.html:
        * fast/inline/hidpi-legacy-integral-rounding-on-hard-line-break-expected.html:
        * fast/inline/hidpi-legacy-integral-rounding-on-inline-boxes-expected.html:
        * fast/inline/simple-line-layout-16bit-content-expected.html:
        * fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling-expected.html:
        * fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table-expected.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table2-expected.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table2.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table3-expected.html:
        * fast/layoutformattingcontext/absolute-positioned-simple-table3.html:
        * fast/layoutformattingcontext/anonymous-inline-container-simple-expected.html:
        * fast/layoutformattingcontext/anonymous-inline-container-simple.html:
        * fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child-expected.html:
        * fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child.html:
        * fast/layoutformattingcontext/block-only/absolute-auto-with-sibling-margin-bottom.html:
        * fast/layoutformattingcontext/block-only/absolute-height-stretch.html:
        * fast/layoutformattingcontext/block-only/absolute-left-auto.html:
        * fast/layoutformattingcontext/block-only/absolute-left-right-top-bottom-auto.html:
        * fast/layoutformattingcontext/block-only/absolute-nested.html:
        * fast/layoutformattingcontext/block-only/absolute-nested2.html:
        * fast/layoutformattingcontext/block-only/absolute-position-left-right-margin.html:
        * fast/layoutformattingcontext/block-only/absolute-position-min-max-height.html:
        * fast/layoutformattingcontext/block-only/absolute-position-min-max-width.html:
        * fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context.html:
        * fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2.html:
        * fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple-expected.html:
        * fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple.html:
        * fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2-expected.html:
        * fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2.html:
        * fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding-expected.html:
        * fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html:
        * fast/layoutformattingcontext/block-only/absolute-simple.html:
        * fast/layoutformattingcontext/block-only/absolute-width-shrink-to-fit.html:
        * fast/layoutformattingcontext/block-only/absolute-width-stretch.html:
        * fast/layoutformattingcontext/block-only/absolute-with-static-block-position-nested.html:
        * fast/layoutformattingcontext/block-only/almost-intruding-left-float-simple.html:
        * fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins-expected.html:
        * fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins.html:
        * fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top-expected.html:
        * fast/layoutformattingcontext/block-only/block-root-top-should-start-from-float-top.html:
        * fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk.html:
        * fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk2.html:
        * fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk.html:
        * fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk2.html:
        * fast/layoutformattingcontext/block-only/border-simple.html:
        * fast/layoutformattingcontext/block-only/box-sizing-inflow-out-of-flow-simple.html:
        * fast/layoutformattingcontext/block-only/child-containing-block-margin-collapse-when-float-avoiders-expected.html:
        * fast/layoutformattingcontext/block-only/child-containing-block-margin-collapse-when-float-avoiders.html:
        * fast/layoutformattingcontext/block-only/collapsed-margin-with-min-height.html:
        * fast/layoutformattingcontext/block-only/collapsed-through-siblings.html:
        * fast/layoutformattingcontext/block-only/collapsed-through-with-parent.html:
        * fast/layoutformattingcontext/block-only/fixed-nested.html:
        * fast/layoutformattingcontext/block-only/float-and-siblings-with-margins.html:
        * fast/layoutformattingcontext/block-only/float-avoider-multiple-roots.html:
        * fast/layoutformattingcontext/block-only/float-avoider-simple-left.html:
        * fast/layoutformattingcontext/block-only/float-avoider-simple-right.html:
        * fast/layoutformattingcontext/block-only/float-avoider-with-margins.html:
        * fast/layoutformattingcontext/block-only/float-clear-with-auto-width-expected.html:
        * fast/layoutformattingcontext/block-only/float-clear-with-auto-width.html:
        * fast/layoutformattingcontext/block-only/float-left-when-container-has-padding-margin.html:
        * fast/layoutformattingcontext/block-only/float-min-max-height.html:
        * fast/layoutformattingcontext/block-only/float-min-max-width.html:
        * fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-with-no-border.html:
        * fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin.html:
        * fast/layoutformattingcontext/block-only/floating-box-clear-both-simple.html:
        * fast/layoutformattingcontext/block-only/floating-box-clear-right-simple.html:
        * fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-with-top-offset.html:
        * fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple.html:
        * fast/layoutformattingcontext/block-only/floating-box-right-simple.html:
        * fast/layoutformattingcontext/block-only/floating-box-with-clear-siblings.html:
        * fast/layoutformattingcontext/block-only/floating-box-with-clear-simple.html:
        * fast/layoutformattingcontext/block-only/floating-box-with-new-formatting-context.html:
        * fast/layoutformattingcontext/block-only/floating-box-with-relative-positioned-sibling.html:
        * fast/layoutformattingcontext/block-only/floating-left-and-right-with-clearance.html:
        * fast/layoutformattingcontext/block-only/floating-left-right-simple.html:
        * fast/layoutformattingcontext/block-only/floating-left-right-with-all-margins.html:
        * fast/layoutformattingcontext/block-only/floating-lefts-and-rights-simple.html:
        * fast/layoutformattingcontext/block-only/floating-multiple-lefts-in-body.html:
        * fast/layoutformattingcontext/block-only/floating-multiple-lefts-multiple-lines.html:
        * fast/layoutformattingcontext/block-only/floating-multiple-lefts.html:
        * fast/layoutformattingcontext/block-only/floating-with-new-block-formatting-context.html:
        * fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots-expected.html:
        * fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots.html:
        * fast/layoutformattingcontext/block-only/inflow-min-max-height.html:
        * fast/layoutformattingcontext/block-only/inflow-min-max-width.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-bottom-bottom.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-bottom-nested.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-first-last-are-floating.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-simple.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-top-nested.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-when-child-has-padding-border.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context2.html:
        * fast/layoutformattingcontext/block-only/margin-collapse-with-clearance.html:
        * fast/layoutformattingcontext/block-only/margin-left-right-sizing-out-of-flow.html:
        * fast/layoutformattingcontext/block-only/margin-left-right-sizing.html:
        * fast/layoutformattingcontext/block-only/margin-propagation-simple-content-height.html:
        * fast/layoutformattingcontext/block-only/margin-sibling-collapse-propagated.html:
        * fast/layoutformattingcontext/block-only/margin-simple.html:
        * fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple-expected.html:
        * fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple.html:
        * fast/layoutformattingcontext/block-only/min-max-height-percentage.html:
        * fast/layoutformattingcontext/block-only/negative-margin-simple.html:
        * fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-auto-margins.html:
        * fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-margins.html:
        * fast/layoutformattingcontext/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html:
        * fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box-expected.html:
        * fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box.html:
        * fast/layoutformattingcontext/block-only/out-of-flow-with-containing-block-border-padding.html:
        * fast/layoutformattingcontext/block-only/padding-nested.html:
        * fast/layoutformattingcontext/block-only/padding-simple.html:
        * fast/layoutformattingcontext/block-only/relative-auto-with-parent-offset.html:
        * fast/layoutformattingcontext/block-only/relative-auto.html:
        * fast/layoutformattingcontext/block-only/relative-bottom.html:
        * fast/layoutformattingcontext/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context.html:
        * fast/layoutformattingcontext/block-only/relative-right.html:
        * fast/layoutformattingcontext/block-only/relative-siblings.html:
        * fast/layoutformattingcontext/block-only/relative-simple.html:
        * fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple-expected.html:
        * fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple.html:
        * fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple-expected.html:
        * fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html:
        * fast/layoutformattingcontext/br-and-wbr-simple-expected.html:
        * fast/layoutformattingcontext/br-and-wbr-simple.html:
        * fast/layoutformattingcontext/br-in-inline-content-simple-expected.html:
        * fast/layoutformattingcontext/br-in-inline-content-simple.html:
        * fast/layoutformattingcontext/center-alignment-with-block-content-simple-expected.html:
        * fast/layoutformattingcontext/center-alignment-with-block-content-simple.html:
        * fast/layoutformattingcontext/display/stacking-item-bounds-expected.html:
        * fast/layoutformattingcontext/display/stacking-item-bounds.html:
        * fast/layoutformattingcontext/empty-block-level-box-with-clearance-expected.html:
        * fast/layoutformattingcontext/empty-block-level-box-with-clearance.html:
        * fast/layoutformattingcontext/empty-table-box-expected.html:
        * fast/layoutformattingcontext/empty-table-box.html:
        * fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple-expected.html:
        * fast/layoutformattingcontext/empty-table-with-specified-height-quirk-simple.html:
        * fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple-expected.html:
        * fast/layoutformattingcontext/empty-table-with-specified-height-standards-simple.html:
        * fast/layoutformattingcontext/fit-content-width-simple-expected.html:
        * fast/layoutformattingcontext/fit-content-width-simple.html:
        * fast/layoutformattingcontext/flex-box-simple.html:
        * fast/layoutformattingcontext/float-and-br-inline-content-only-expected.html:
        * fast/layoutformattingcontext/float-and-br-inline-content-only.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space-expected.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space2-expected.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space2.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space3-expected.html:
        * fast/layoutformattingcontext/float-avoider-available-horizontal-space3.html:
        * fast/layoutformattingcontext/float-avoider-with-inline-content-expected.html:
        * fast/layoutformattingcontext/float-avoider-with-inline-content.html:
        * fast/layoutformattingcontext/float-avoiding-br-last-line-expected.html:
        * fast/layoutformattingcontext/float-avoiding-br-last-line.html:
        * fast/layoutformattingcontext/float-avoiding-br-simple-expected.html:
        * fast/layoutformattingcontext/float-avoiding-br-simple.html:
        * fast/layoutformattingcontext/float-in-inline-context-simple-expected.html:
        * fast/layoutformattingcontext/float-in-inline-context-simple.html:
        * fast/layoutformattingcontext/float-inside-table-cell-simple-expected.html:
        * fast/layoutformattingcontext/float-inside-table-cell-simple.html:
        * fast/layoutformattingcontext/float-with-clear-simple-expected.html:
        * fast/layoutformattingcontext/float-with-clear-simple.html:
        * fast/layoutformattingcontext/floats-shrinking-line-simple-expected.html:
        * fast/layoutformattingcontext/floats-shrinking-line-simple.html:
        * fast/layoutformattingcontext/flow-integration-basic-paint.html:
        * fast/layoutformattingcontext/flow-integration-basic.html:
        * fast/layoutformattingcontext/height-percentage-quirk-to-icb-expected.html:
        * fast/layoutformattingcontext/height-percentage-quirk-to-icb.html:
        * fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper-expected.html:
        * fast/layoutformattingcontext/height-precentage-with-anonymous-wrapper.html:
        * fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing-expected.html:
        * fast/layoutformattingcontext/horizontal-sizing-with-trailing-letter-spacing.html:
        * fast/layoutformattingcontext/html-is-absolute-positioned-expected.html:
        * fast/layoutformattingcontext/html-is-absolute-positioned.html:
        * fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not-expected.html:
        * fast/layoutformattingcontext/inlin-box-content-fits-but-the-box-does-not.html:
        * fast/layoutformattingcontext/inline-box-overlaps-multiple-lines-expected.html:
        * fast/layoutformattingcontext/inline-box-overlaps-multiple-lines.html:
        * fast/layoutformattingcontext/inline-float-simple-expected.html:
        * fast/layoutformattingcontext/inline-float-simple.html:
        * fast/layoutformattingcontext/inline-max-width-height-simple-expected.html:
        * fast/layoutformattingcontext/inline-max-width-height-simple.html:
        * fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple-expected.html:
        * fast/layoutformattingcontext/inline-text-outside-of-inline-container-simple.html:
        * fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple-expected.html:
        * fast/layoutformattingcontext/intrusive-floats-and-stretchy-lines-simple.html:
        * fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space-expected.html:
        * fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html:
        * fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container-expected.html:
        * fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container.html:
        * fast/layoutformattingcontext/max-content-and-box-sizing-simple-expected.html:
        * fast/layoutformattingcontext/max-content-and-box-sizing-simple.html:
        * fast/layoutformattingcontext/min-max-content-width-simple-expected.html:
        * fast/layoutformattingcontext/min-max-content-width-simple.html:
        * fast/layoutformattingcontext/min-max-content-width-simple2-expected.html:
        * fast/layoutformattingcontext/min-max-content-width-simple2.html:
        * fast/layoutformattingcontext/min-max-content-width-with-floats-simple-expected.html:
        * fast/layoutformattingcontext/min-max-content-width-with-floats-simple.html:
        * fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple-expected.html:
        * fast/layoutformattingcontext/min-max-content-width-with-nested-floats-simple.html:
        * fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport.html:
        * fast/layoutformattingcontext/out-of-flow-positioned-line-breaks.html:
        * fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple-expected.html:
        * fast/layoutformattingcontext/out-of-flow-with-non-fixed-height-simple.html:
        * fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple-expected.html:
        * fast/layoutformattingcontext/overflow-at-inline-box-boundary-simple.html:
        * fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating-expected.html:
        * fast/layoutformattingcontext/quirk-margin-not-collapse-when-floating.html:
        * fast/layoutformattingcontext/replaced-and-trailing-trimmable-content-expected.html:
        * fast/layoutformattingcontext/replaced-and-trailing-trimmable-content.html:
        * fast/layoutformattingcontext/replaced-box-with-margin-on-baseline-expected.html:
        * fast/layoutformattingcontext/replaced-box-with-margin-on-baseline.html:
        * fast/layoutformattingcontext/run-expansion-extends-line-content-width-expected.html:
        * fast/layoutformattingcontext/run-expansion-extends-line-content-width.html:
        * fast/layoutformattingcontext/simple-absolute-positioned-inline-element-expected.html:
        * fast/layoutformattingcontext/simple-absolute-positioned-inline-element.html:
        * fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height-expected.html:
        * fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height.html:
        * fast/layoutformattingcontext/simple-inline-block-expected.html:
        * fast/layoutformattingcontext/simple-inline-block.html:
        * fast/layoutformattingcontext/simple-table-with-empty-td.html:
        * fast/layoutformattingcontext/subframe-with-display-none-html-expected.html:
        * fast/layoutformattingcontext/subframe-with-display-none-html.html:
        * fast/layoutformattingcontext/table-basic-row-baseline-align.html:
        * fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html:
        * fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html:
        * fast/layoutformattingcontext/table-cell-baseline-offset-simple-expected.html:
        * fast/layoutformattingcontext/table-cell-baseline-offset-simple.html:
        * fast/layoutformattingcontext/table-cell-baseline-offset-simple2-expected.html:
        * fast/layoutformattingcontext/table-cell-baseline-offset-simple2.html:
        * fast/layoutformattingcontext/table-cell-height-middle-align-simple-expected.html:
        * fast/layoutformattingcontext/table-cell-height-middle-align-simple.html:
        * fast/layoutformattingcontext/table-cell-vertical-alignment-simple-expected.html:
        * fast/layoutformattingcontext/table-cell-vertical-alignment-simple.html:
        * fast/layoutformattingcontext/table-colspan-simple-expected.html:
        * fast/layoutformattingcontext/table-colspan-simple.html:
        * fast/layoutformattingcontext/table-fixed-row-height-simple-expected.html:
        * fast/layoutformattingcontext/table-fixed-row-height-simple.html:
        * fast/layoutformattingcontext/table-fixed-width-colspans.html:
        * fast/layoutformattingcontext/table-fixed-width-variations-simple-expected.html:
        * fast/layoutformattingcontext/table-fixed-width-variations-simple.html:
        * fast/layoutformattingcontext/table-fixed-width-with-max-distribution.html:
        * fast/layoutformattingcontext/table-flex-width-border-collapse.html:
        * fast/layoutformattingcontext/table-flex-width-colspans.html:
        * fast/layoutformattingcontext/table-min-max-flex-distribution-simple-expected.html:
        * fast/layoutformattingcontext/table-min-max-flex-distribution-simple.html:
        * fast/layoutformattingcontext/table-min-max-width-empty-content-simple-expected.html:
        * fast/layoutformattingcontext/table-min-max-width-empty-content-simple.html:
        * fast/layoutformattingcontext/table-min-max-width-simple-expected.html:
        * fast/layoutformattingcontext/table-min-max-width-simple.html:
        * fast/layoutformattingcontext/table-missing-cells-simple-expected.html:
        * fast/layoutformattingcontext/table-missing-cells-simple.html:
        * fast/layoutformattingcontext/table-quirk-vertical-margin-simple-expected.html:
        * fast/layoutformattingcontext/table-quirk-vertical-margin-simple.html:
        * fast/layoutformattingcontext/table-simple-border-collapse-expected.html:
        * fast/layoutformattingcontext/table-simple-border-collapse-with-padding-expected.html:
        * fast/layoutformattingcontext/table-simple-border-collapse-with-padding.html:
        * fast/layoutformattingcontext/table-simple-border-collapse.html:
        * fast/layoutformattingcontext/table-simple-border-collapse2-expected.html:
        * fast/layoutformattingcontext/table-simple-border-collapse2.html:
        * fast/layoutformattingcontext/table-simple-border-collapse3-expected.html:
        * fast/layoutformattingcontext/table-simple-border-collapse3.html:
        * fast/layoutformattingcontext/table-simple-collapsed-row-border-expected.html:
        * fast/layoutformattingcontext/table-simple-collapsed-row-border.html:
        * fast/layoutformattingcontext/table-simple-collapsed-row-border2-expected.html:
        * fast/layoutformattingcontext/table-simple-collapsed-row-border2.html:
        * fast/layoutformattingcontext/table-simple-collapsed-tbody-border-expected.html:
        * fast/layoutformattingcontext/table-simple-collapsed-tbody-border.html:
        * fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content-expected.html:
        * fast/layoutformattingcontext/table-simple-fixed-width-with-wide-content.html:
        * fast/layoutformattingcontext/table-simple-multiple-sections-expected.html:
        * fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse-expected.html:
        * fast/layoutformattingcontext/table-simple-multiple-sections-with-border-spacing-and-collapse.html:
        * fast/layoutformattingcontext/table-simple-multiple-sections.html:
        * fast/layoutformattingcontext/table-simple-row-border-expected.html:
        * fast/layoutformattingcontext/table-simple-row-border.html:
        * fast/layoutformattingcontext/table-simple-rowspan-with-spacing-expected.html:
        * fast/layoutformattingcontext/table-simple-rowspan-with-spacing.html:
        * fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height-expected.html:
        * fast/layoutformattingcontext/table-simple-tall-cell-content-with-fixed-height.html:
        * fast/layoutformattingcontext/table-simple-thead-border-ignore-expected.html:
        * fast/layoutformattingcontext/table-simple-thead-border-ignore.html:
        * fast/layoutformattingcontext/table-simple-with-border.html:
        * fast/layoutformattingcontext/table-simple-with-fixed-widht-and-inline-content.html:
        * fast/layoutformattingcontext/table-simple-with-padding.html:
        * fast/layoutformattingcontext/table-space-distribution-mixed-width-type-simple-expected.html:
        * fast/layoutformattingcontext/table-space-distribution-mixed-width-type-simple.html:
        * fast/layoutformattingcontext/table-space-distribution-simple-expected.html:
        * fast/layoutformattingcontext/table-space-distribution-simple-mismatching.html:
        * fast/layoutformattingcontext/table-space-distribution-simple.html:
        * fast/layoutformattingcontext/table-space-distribution-simple2-expected.html:
        * fast/layoutformattingcontext/table-space-distribution-simple2.html:
        * fast/layoutformattingcontext/table-space-mixed-width-type-simple3-expected.html:
        * fast/layoutformattingcontext/table-space-mixed-width-type-simple3.html:
        * fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple-expected.html:
        * fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple.html:
        * fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2-expected.html:
        * fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2.html:
        * fast/layoutformattingcontext/table-space-width-100-percent-quirk-expected.html:
        * fast/layoutformattingcontext/table-space-width-100-percent-quirk.html:
        * fast/layoutformattingcontext/table-with-column-spanner-first-row.html:
        * fast/layoutformattingcontext/table-with-margin-content-simple-expected.html:
        * fast/layoutformattingcontext/table-with-margin-content-simple.html:
        * fast/layoutformattingcontext/table-with-margin-simple-expected.html:
        * fast/layoutformattingcontext/table-with-margin-simple.html:
        * fast/layoutformattingcontext/table-with-padding-and-border-simple-expected.html:
        * fast/layoutformattingcontext/table-with-padding-and-border-simple.html:
        * fast/layoutformattingcontext/table-with-percent-columns-and-spacing-expected.html:
        * fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html:
        * fast/layoutformattingcontext/table-with-percent-columns-only-no-content-expected.html:
        * fast/layoutformattingcontext/table-with-percent-columns-only-no-content.html:
        * fast/layoutformattingcontext/table-with-percent-columns-simple-expected.html:
        * fast/layoutformattingcontext/table-with-percent-columns-simple.html:
        * fast/layoutformattingcontext/table-with-percent-height-descendant.html:
        * fast/layoutformattingcontext/vertical-align-bottom-nested-expected.html:
        * fast/layoutformattingcontext/vertical-align-bottom-nested.html:
        * fast/layoutformattingcontext/vertical-align-middle-nested-expected.html:
        * fast/layoutformattingcontext/vertical-align-middle-nested.html:
        * fast/layoutformattingcontext/vertical-align-middle-simple-expected.html:
        * fast/layoutformattingcontext/vertical-align-middle-simple.html:
        * fast/layoutformattingcontext/vertical-align-top-nested-expected.html:
        * fast/layoutformattingcontext/vertical-align-top-nested.html:
        * fast/layoutformattingcontext/wbr-simple-expected.html:
        * fast/layoutformattingcontext/wbr-simple.html:
        * fast/multicol/orphans-ignored-expected.html:
        * fast/multicol/orphans-ignored.html:
        * fast/repaint/implicitly-positioned-block-repaint-complex-line-layout.html:
        * fast/replaced/width100percent-textarea.html:
        * fast/text/embed-at-end-of-pre-wrap-line-simple-lines-expected.html:
        * fast/text/embed-at-end-of-pre-wrap-line-simple-lines.html:
        * fast/text/embed-at-end-of-pre-wrap-line.html:
        * fast/text/font-with-no-space-glyph-expected.html:
        * fast/text/font-with-no-space-glyph.html:
        * fast/text/line-runs-rounding-simple-lines-expected.html:
        * fast/text/mark-matches-rendering-simple-lines-expected.html:
        * fast/text/multiple-renderers-with-hypen-on-boundary-expected.html:
        * fast/text/negative-letter-spacing-visual-overflow-expected.html:
        * fast/text/newline-width-expected.html:
        * fast/text/newline-width.html:
        * fast/text/no-wrap-in-pre-with-word-wrap-expected.html:
        * fast/text/no-wrap-in-pre-with-word-wrap.html:
        * fast/text/overflow-wrap-break-word-004.html:
        * fast/text/overflow-wrap-break-word-005.html:
        * fast/text/overflow-wrap-break-word-007.html:
        * fast/text/simple-line-hyphens-with-text-align-expected.html:
        * fast/text/simple-line-hyphens-with-word-letter-spacing-expected.html:
        * fast/text/simple-line-layout-and-multiline-inlineboxtree-expected.html:
        * fast/text/simple-line-layout-and-multiline-inlineboxtree.html:
        * fast/text/simple-line-layout-dynamic-letter-word-spacing-expected.html:
        * fast/text/simple-line-layout-fallback-space-glyph-expected.html:
        * fast/text/simple-line-layout-glyph-overflows-line-expected.html:
        * fast/text/simple-line-layout-hyphen-limit-after-expected.html:
        * fast/text/simple-line-layout-hyphen-limit-before-expected.html:
        * fast/text/simple-line-layout-hyphen-limit-lines-expected.html:
        * fast/text/simple-line-layout-hyphen-limit-lines2-expected.html:
        * fast/text/simple-line-layout-hyphenation-limit-lines-accross-words-expected.html:
        * fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak-expected.html:
        * fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html:
        * fast/text/simple-line-layout-line-box-contain-glyphs-expected.html:
        * fast/text/simple-line-layout-line-box-contain-glyphs.html:
        * fast/text/simple-line-layout-multiple-renderers-non-breaking-space-expected.html:
        * fast/text/simple-line-layout-multiple-renderers-with-float-expected.html:
        * fast/text/simple-line-layout-selection-with-overflow-expected.html:
        * fast/text/simple-line-layout-text-position-with-stroke-expected.html:
        * fast/text/simple-line-layout-with-justified-punctuation-expected.html:
        * fast/text/simple-line-layout-wrapping-multiple-renderers-hang-expected.html:
        * fast/text/simple-line-letterspacing-expected.html:
        * fast/text/simple-line-text-indent-expected.html:
        * fast/text/simple-line-text-measuring-with-trailing-space-expected.html:
        * fast/text/simple-line-with-br-expected.html:
        * fast/text/simple-line-with-multiple-renderers-expected.html:
        * fast/text/simple-line-wordspacing-expected.html:
        * fast/text/simple-lines-float-compare-expected.html:
        * fast/text/simple-lines-float-expected.html:
        * fast/text/simple-lines-float.html:
        * fast/text/simple-lines-intruding-wide-float-expected.html:
        * fast/text/simple-lines-range-low-line-height-expected.html:
        * fast/text/simple-lines-text-transform-expected.html:
        * fast/text/simple-lines-text-transform.html:
        * fast/text/whitespace/pre-wrap-008.html:
        * fast/text/whitespace/pre-wrap-015.html:
        * fast/text/whitespace/pre-wrap-016.html:
        * fast/text/whitespace/pre-wrap-line-test-simple-lines-expected.html:
        * fast/text/whitespace/pre-wrap-line-test.html:
        * fast/text/whitespace/pre-wrap-long-word-simple-lines-expected.html:
        * fast/text/whitespace/pre-wrap-long-word-simple-lines.html:
        * fast/text/whitespace/pre-wrap-spaces-after-newline-simple-lines-expected.html:
        * fast/text/whitespace/pre-wrap-spaces-after-newline.html:
        * fast/text/whitespace/simple-line-layout-tab-position-expected.html:
        * fast/text/word-break-break-all-010.html:
        * fast/text/word-break-break-all-011.html:
        * printing/simple-lines-break-expected.html:

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 ] imported/blink/fast/text/international-iteration-simple-text.html is a flaky failure
        Adding test expectation for newly affected macOS wk2
        https://bugs.webkit.org/show_bug.cgi?id=179853

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Unskip api/validation/createTexture.html 🎉
        https://bugs.webkit.org/show_bug.cgi?id=239447

        Reviewed by Kimmo Kinnunen.

        It passes now!!!!

        * http/tests/webgpu/webgpu/api/validation/createTexture-expected.txt:
        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-04-20  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r292508.
        https://bugs.webkit.org/show_bug.cgi?id=239561

        Links to test results are partly broken in layout-tests-
        results/results.html

        Reverted changeset:

        "Fix expected, actual links for variant-based imported wpt
        tests"
        https://bugs.webkit.org/show_bug.cgi?id=238832
        https://commits.webkit.org/r292508

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 ] fast/scrolling/overflow-scroll-past-max.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239554
        
        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-20  Karl Rackler  <rackler@apple.com>

        [ macOS wk2 ]  imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239546

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Update WebGPU CTS to revision 549d7c2f1637321a9247f0a3ab022f919e5ca5da
        https://bugs.webkit.org/show_bug.cgi?id=239444

        Reviewed by Kimmo Kinnunen.

        This includes a fix for api/validation/createTexture.

        * http/tests/webgpu/common/framework/fixture.js:
        (export.Fixture.prototype.eventualExpectOK):
        (export.Fixture):
        * http/tests/webgpu/common/internal/version.js:
        * http/tests/webgpu/cts.https.html:
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.spec.js:
        (g.test.string_appeared_here.desc.Test.that.specifying.limits.that.aren.requestDevice.to.reject.fn.async t):
        (string_appeared_here.fn.async t):
        (kLimits.beginSubcases.expandWithParams.p.switch.case):
        (kLimits.beginSubcases.expandWithParams.p.switch):
        (fn.async t):
        (fn.async t.switch.case):
        (65535.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js:
        (F.prototype.GetRenderPipelineForT2TCopyWithDepthTests):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js:
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async checkStencilTextureContent):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.DoCopyTextureToBufferWithDepthAspectTest):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/programmable_state_test.js:
        (export.ProgrammableStateTest.prototype.createBindingStatePipeline):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.spec.js:
        (VertexAndIndexStateTrackingTest.prototype.GetRenderPipelineForTest):
        (VertexAndIndexStateTrackingTest):
        (The.test.verifies.both.of.these.two.draw.calls.work.correctly.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/compute/basic.spec.js:
        (g.test.string_appeared_here.fn.async t):
        (kMaxComputeWorkgroupSize.p.largeDimension.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/buffer_sync_test.js:
        (export.checkOpsValidForContext):
        (export.BufferSyncTest.prototype.async createIntermediateBuffersAndTexturesForWriteOp):
        (export.BufferSyncTest.prototype.async createBuffersForReadOp):
        (export.BufferSyncTest.prototype.async createBufferWithValue):
        (export.BufferSyncTest.prototype.async createBufferWithValues):
        (export.BufferSyncTest.prototype.async createTextureWithValue):
        (export.BufferSyncTest.prototype.createStorageWriteComputePipeline):
        (export.BufferSyncTest.prototype.createTrivialRenderPipeline):
        (export.BufferSyncTest.prototype.createStorageWriteRenderPipeline):
        (export.BufferSyncTest.prototype.beginSimpleRenderPass):
        (export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInComputePass):
        (export.BufferSyncTest.prototype.encodeWriteByB2BCopy):
        (export.BufferSyncTest.prototype.encodeWriteByT2BCopy):
        (export.BufferSyncTest.prototype.writeByWriteBuffer):
        (export.BufferSyncTest.prototype.encodeWriteOp):
        (export.BufferSyncTest.prototype.createStorageReadComputePipeline):
        (export.BufferSyncTest.prototype.createBindGroupSrcDstBuffer):
        (export.BufferSyncTest.prototype.createVertexReadRenderPipeline):
        (export.BufferSyncTest.prototype.createUniformReadRenderPipeline):
        (export.BufferSyncTest.prototype.createStorageReadRenderPipeline):
        (export.BufferSyncTest.prototype.encodeReadAsStorageBufferInComputePass):
        (export.BufferSyncTest.prototype.encodeReadAsIndirectBufferInComputePass):
        (export.BufferSyncTest.prototype.encodeReadAsVertexBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadAsIndexBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadAsIndirectBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadAsIndexedIndirectBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadAsUniformBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadAsStorageBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeReadByB2BCopy):
        (export.BufferSyncTest.prototype.encodeReadByB2TCopy):
        (export.BufferSyncTest.prototype.encodeReadOp):
        (export.BufferSyncTest.prototype.async encodeWriteByB2BCopy): Deleted.
        (export.BufferSyncTest.prototype.async encodeWriteByT2BCopy): Deleted.
        (export.BufferSyncTest.prototype.async encodeWriteOp): Deleted.
        (export.BufferSyncTest.prototype.async createCommandBufferWithWriteOp): Deleted.
        (export.BufferSyncTest.prototype.async submitWriteOp): Deleted.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers.html: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer.spec.js: Added.
        (p.kBoundaryInfo.p.boundary.contexts.expandWithParams):
        (fn.async t):
        (true.fn.async t):
        (g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.render.bundle.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.either.1.or.2.fn.async t):
        (g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.compute.pass.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.2.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/operation_context_helper.js: Added.
        (combineContexts):
        (export.OperationContextHelper):
        (export.OperationContextHelper.prototype.ensureSubmit):
        (export.OperationContextHelper.prototype.popContext):
        (export.OperationContextHelper.prototype.makeDummyAttachment):
        (export.OperationContextHelper.prototype.ensureContext):
        (export.OperationContextHelper.prototype.flushRenderBundles):
        (export.OperationContextHelper.prototype.flushCommandBuffers):
        (export.OperationContextHelper.prototype.ensureBoundary):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.spec.js:
        (TextureSyncTestHelper):
        (TextureSyncTestHelper.prototype.performWriteOp):
        (TextureSyncTestHelper.prototype.ensureSubmit): Deleted.
        (TextureSyncTestHelper.prototype.popContext): Deleted.
        (TextureSyncTestHelper.prototype.makeDummyAttachment): Deleted.
        (TextureSyncTestHelper.prototype.ensureContext): Deleted.
        (TextureSyncTestHelper.prototype.flushRenderBundles): Deleted.
        (TextureSyncTestHelper.prototype.flushCommandBuffers): Deleted.
        (TextureSyncTestHelper.prototype.ensureBoundary): Deleted.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js:
        (combineContexts): Deleted.
        * http/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js:
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js:
        (kArrayLayers.fn.t.else):
        * http/tests/webgpu/webgpu/api/operation/rendering/basic.spec.js:
        * http/tests/webgpu/webgpu/api/operation/rendering/blending.spec.js:
        * http/tests/webgpu/webgpu/api/operation/rendering/depth.spec.js:
        * http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.spec.js:
        (fn.async t):
        * http/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js:
        (9.undefined.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/resource_init/buffer.spec.js:
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_copy.js:
        (export.const.checkContentsByBufferCopy):
        (export.const.checkContentsByTextureCopy):
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_ds_test.js:
        (const.checkContents):
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_sampling.js:
        (export.const.checkContentsBySampling):
        * http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js:
        (export.TextureZeroInitTest.prototype.initializeWithStoreOp):
        (export.TextureZeroInitTest.prototype.discardTexture):
        (export.TextureZeroInitTest):
        * http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.spec.js:
        (SamplerAnisotropicFilteringSlantedPlaneTest.prototype.async init):
        * http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.html: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js: Added.
        (makeInputTexelView):
        (viewFormat.fn.async t):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/texture_view/read.spec.js:
        * http/tests/webgpu/webgpu/api/operation/texture_view/write.spec.js:
        * http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js:
        (prototype.makeTestWGSL):
        * http/tests/webgpu/webgpu/api/validation/attachment_compatibility.spec.js:
        (F.prototype.createColorAttachment):
        (F.prototype.createRenderPipeline):
        (F):
        (string_appeared_here.filter.p.p.format.depthStencilInfo.stencil):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/buffer/create.spec.js:
        * http/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js:
        (prototype.async g): Deleted.
        * http/tests/webgpu/webgpu/api/validation/createComputePipeline.spec.js:
        (making.sure.that.the.test.working):
        * http/tests/webgpu/webgpu/api/validation/createRenderPipeline.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createTexture.spec.js:
        (format.unless):
        (2.fn.async t):
        (fn.async t):
        (format.fn.async t):
        (kTextureFormats.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createView.spec.js:
        (true.fn.async t):
        (kTextureFormats.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.spec.js:
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.spec.js:
        (kResourceStates.fn.async t):
        (false.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.clearing.an.error.buffer.fails.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.spec.js:
        (F.prototype.TestCopyBufferToBuffer):
        (F):
        (kResourceStates.fn.async t):
        (fn.async t):
        (kBufferUsages.fn.async t):
        (g.test.string_appeared_here.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js:
        (fn.async t):
        (kTextureFormats.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.spec.js:
        (F.prototype.createRenderPipeline):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js:
        (F.prototype.createComputePipelineWithLayout):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/general.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.spec.js:
        (g.test.string_appeared_here.desc.Tests.that.resolve.query.set must.be.with.valid.query.set and):
        (g.test.string_appeared_here.desc.Tests.that.resolve.query.set must):
        (kResourceStates.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.spec.js:
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js:
        (kResourceStates.fn.async t):
        (false.fn.async t):
        (fn.async t):
        (bytesPerRow.undefined.copyHeightInBlocks.1.bytesPerRow.undefined.bytesPerRow.kTextureFormatInfo.format.bytesPerBlock.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js:
        (export.ImageCopyTest.prototype.testBuffer):
        (export.ImageCopyTest):
        * http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js:
        (fn.async t):
        (unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js:
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js:
        * http/tests/webgpu/webgpu/api/validation/queue/submit.spec.js:
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.spec.js:
        (kResourceStates.fn.async t):
        (g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t.runTest):
        (g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.spec.js:
        (true.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js:
        (unless.p.kTextureFormatInfo.p.format.depth.kTextureFormatInfo.p.format.stencil.p.aspect0.string_appeared_here.p.type0.string_appeared_here.p.aspect1.string_appeared_here.p.type1.string_appeared_here.unless.p.p.binding1InBundle.p.type1.string_appeared_here.unless.p.p.compute.p.binding0InBundle.p.binding1InBundle.p.type1.string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.spec.js:
        (F.prototype.createBindGroupForTest):
        (F.prototype.isRangeNotOverlapped):
        (F):
        (false.unless.t.t.inSamePass.t.level0.t.level1.fn.async t):
        (false.fn.async t):
        (false.unless.t.t.inSamePass.t.baseLevel0.t.baseLevel1.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js:
        (F.prototype.createBindGroupLayoutForTest):
        (F.prototype.createBindGroupForTest):
        (F):
        (false.fn.async t):
        (usage0.string_appeared_here.usage0.string_appeared_here.usage1.string_appeared_here.usage1.string_appeared_here.fn.async t):
        (or.different.subresources.of.the.same.texture.texture.usages.in.copies.and.in.render.pass.consecutively.set bind): Deleted.
        * http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.html: Added.
        * http/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js: Added.
        (DeviceDestroyTests.prototype.async executeAfterDestroy):
        (DeviceDestroyTests.prototype.async executeCommandsAfterDestroy):
        (DeviceDestroyTests):
        (false.filter):
        (false.fn.async t):
        (fn.async t):
        (g.test.string_appeared_here.desc.Tests.creating.bind.group.on.destroyed.device.Tests.valid.combinations.of.Various.binded.resource.types.Various.valid.binding.entries.Maximum.set of):
        (g.test.string_appeared_here.desc.Tests.creating.bind.group.layouts.on.destroyed.device.Tests.valid.combinations.of.Various.valid.binding.entries.Maximum.set of):
        * http/tests/webgpu/webgpu/api/validation/validation_test.js:
        (export.ValidationTest.prototype.getNoOpShaderCode):
        (export.ValidationTest.prototype.createNoOpRenderPipeline):
        (export.ValidationTest.prototype.createNoOpComputePipeline):
        * http/tests/webgpu/webgpu/api/validation/vertex_state.spec.js:
        * http/tests/webgpu/webgpu/capability_info.js:
        (export.resolvePerAspectFormat):
        (export.viewCompatible):
        * http/tests/webgpu/webgpu/constants.js:
        * http/tests/webgpu/webgpu/gpu_test.js:
        (export.GPUTest.prototype.expectSingleColor):
        (export.GPUTest.prototype.readSinglePixelFrom2DTexture):
        (export.GPUTest.prototype.async expectDeviceLost):
        (export.GPUTest.prototype.makeTextureWithContents):
        (export.GPUTest.prototype.createEncoder):
        (export.GPUTest):
        (export.GPUTest.prototype.async makeBufferWithContents): Deleted.
        * http/tests/webgpu/webgpu/listing.js:
        * http/tests/webgpu/webgpu/shader/execution/evaluation_order-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/evaluation_order.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/evaluation_order.spec.js: Added.
        (run):
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.spec.js:
        (calculateResults):
        (makeCaseImpl):
        (4.fn.async t):
        (fullNumericRange): Deleted.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical.spec.js: Added.
        (makeCase):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js:
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js:
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js:
        (calculateMinMaxClamp):
        (calculateMedianClamp):
        (generateIntegerTestCases):
        (generateFloatTestCases):
        (4.fn.async t):
        (generateTestCases): Deleted.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js:
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js:
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/expression.js:
        * http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.js:
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/memory_model_setup.js:
        * http/tests/webgpu/webgpu/shader/execution/robust_access.spec.js:
        (runShaderTest):
        * http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.spec.js:
        (F.prototype.generateVertexShaderCode):
        * http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.spec.js:
        (DerivativesTest.prototype.async init):
        * http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.spec.js:
        * http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.spec.js:
        (and.the.layout.attributes.should.be.ignored.when.used.as.an.entry.point.IO.parameter.fn.async t):
        (and.uses.it.as.both.the.output.of.a.vertex.shader.and.the.input.to.a.fragment.shader.fn.async t):
        (and.uses.those.structures.as.parameter.and.return.types.entry.point.functions.and.regular.functions.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/zero_init.spec.js:
        * http/tests/webgpu/webgpu/shader/types.js:
        * http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.spec.js:
        * http/tests/webgpu/webgpu/shader/validation/shader_io/generic.spec.js:
        * http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js:
        (false.beginSubcases.fn.t.const.code.struct.VertexOut.location):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js:
        * http/tests/webgpu/webgpu/shader/validation/shader_io/util.js:
        (export.generateShader):
        * http/tests/webgpu/webgpu/shader/validation/tokens-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/tokens.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/tokens.spec.js: Added.
        (string_appeared_here.beginSubcases.fn.t.else):
        * http/tests/webgpu/webgpu/shader/validation/variable_and_const.spec.js:
        (fn.t.prototype.else):
        * http/tests/webgpu/webgpu/util/check_contents.js:
        * http/tests/webgpu/webgpu/util/color_space_conversion.js:
        (XYZ_to_lin_sRGB):
        (lin_P3_to_XYZ):
        (XYZ_to_lin_P3):
        (export.makeInPlaceColorConversion):
        * http/tests/webgpu/webgpu/util/command_buffer_maker.js:
        (export.CommandBufferMaker):
        * http/tests/webgpu/webgpu/util/conversion.js:
        (export.floatAsNormalizedInteger):
        (export.float32ToFloatBits):
        (export.numberToFloatBits):
        * http/tests/webgpu/webgpu/util/copy_to_texture.js:
        (export.CopyToTextureUtils.prototype.getExpectedPixels):
        (export.CopyToTextureUtils.prototype.doTestAndCheckResult):
        (export.CopyToTextureUtils):
        (isFp16Format): Deleted.
        (isFp32Format): Deleted.
        (isUnormFormat): Deleted.
        (export.CopyToTextureUtils.prototype.formatForExpectedPixels): Deleted.
        (export.CopyToTextureUtils.prototype.getSourceImageBitmapPixels): Deleted.
        (export.CopyToTextureUtils.prototype.checkCopyExternalImageResult): Deleted.
        (export.CopyToTextureUtils.prototype.async checkBufferWithRowPitch): Deleted.
        * http/tests/webgpu/webgpu/util/create_elements.js:
        (export.canCopyFromCanvasContext):
        (export.createCanvas):
        * http/tests/webgpu/webgpu/util/device_pool.js:
        (export.DevicePool.prototype.async reserve):
        (export.DevicePool.prototype.async release):
        (export.DevicePool):
        (canonicalizeDescriptor):
        (DeviceHolder.prototype.expectDeviceLost):
        * http/tests/webgpu/webgpu/util/math.js:
        * http/tests/webgpu/webgpu/util/texture.js: Added.
        (export.makeTextureWithContents):
        * http/tests/webgpu/webgpu/util/texture/layout.js:
        (export.getTextureCopyLayout):
        * http/tests/webgpu/webgpu/util/texture/texel_data.js:
        (export.makeClampToRange):
        (unpackComponentsBits):
        (makeNormalizedInfo):
        (makeIntegerInfo):
        (makeFloatInfo):
        (packComponents): Deleted.
        (export.const.kTexelRepresentationInfo.rgba32float.makeFloatInfo): Deleted.
        (export.getSingleDataType): Deleted.
        (export.getComponentReadbackTraits): Deleted.
        * http/tests/webgpu/webgpu/util/texture/texel_view.js: Added.
        (export.TexelView.prototype.fromTextureDataByReference):
        (export.TexelView.fromTexelsAsBytes):
        (export.TexelView.prototype.fromTexelsAsColors):
        (export.TexelView.prototype.writeTextureData):
        (export.TexelView):
        * http/tests/webgpu/webgpu/util/texture/texture_ok-expected.txt: Added.
        * http/tests/webgpu/webgpu/util/texture/texture_ok.html: Added.
        * http/tests/webgpu/webgpu/util/texture/texture_ok.js: Added.
        (makeTexelViewComparer):
        (makeTexelViewComparer.):
        * http/tests/webgpu/webgpu/util/texture/texture_ok.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.spec.js:
        (allCanvasTypes.fn.async t): Deleted.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js:
        (makeTestColorsTexelView):
        (F.prototype.generatePixel): Deleted.
        (F.prototype.getImagePixels): Deleted.
        (F): Deleted.
        (fn.async t): Deleted.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js:
        (F.prototype.init2DCanvasContentWithColorSpace):
        (F.prototype.init2DCanvasContent):
        (F.prototype.initGLCanvasContent):
        (F.prototype.getInitGPUCanvasData):
        (F.prototype.initGPUCanvasContent):
        (F.prototype.calculateSourceContentOnCPU):
        (F):
        (fn.async t):
        (F.prototype.getTestImageURLByColorSpace): Deleted.
        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-04-20  Yacine Bandou  <yacine.bandou@softathome.com>

        [GStreamer] REGRESSION(r285586): we never end the playback of some videos
        https://bugs.webkit.org/show_bug.cgi?id=239387

        Reviewed by Philippe Normand.

        * media/content/test-inaccurate-duration.mp4: Added.
        * media/video-inaccurate-duration-ended-expected.txt: Added.
        * media/video-inaccurate-duration-ended.html: Added.

2022-04-20  Cathie Chen  <cathiechen@igalia.com>

        Parsing of contain-intrinsic-size and adding a runtime flag for it
        https://bugs.webkit.org/show_bug.cgi?id=238181

        Reviewed by Simon Fraser.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:

2022-04-20  Tim Nguyen  <ntim@apple.com>

        Unprefix -webkit-user-select CSS property
        https://bugs.webkit.org/show_bug.cgi?id=208677

        Reviewed by Simon Fraser.

        * editing/selection/user-select-js-property-expected.txt:
        * editing/selection/user-select-js-property.html:
        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * fast/css/getComputedStyle/resources/property-names.js:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-04-20  Tim Nguyen  <ntim@apple.com>

        [Debug] Skip editing/inserting/insert-list-user-select-none-crash.html

        Unreviewed test gardening.

        This started crashing after r293028, but it's not a direct cause of that bug. You can also
        reproduce before r293028 by replacing `user-select: none;` in the test with `user-select: text`.

        * TestExpectations:

2022-04-19  Karl Rackler  <rackler@apple.com>

        [Release wk2 arm64] fast/selectors/selection-window-inactive-stroke-color.html is a flaky image-only failure
        https://bugs.webkit.org/show_bug.cgi?id=228337

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-19  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r292947.
        https://bugs.webkit.org/show_bug.cgi?id=239520

        Introduced new assertion failures

        Reverted changeset:

        "Make release assertion in Document::updateLayout more precise
        for FrameSelection::setSelection"
        https://bugs.webkit.org/show_bug.cgi?id=239431
        https://commits.webkit.org/r292947

2022-04-19  Ricky Mondello  <rmondello@apple.com>

        Update in-field icons for credential fields
        https://bugs.webkit.org/show_bug.cgi?id=239336

        Reviewed by Wenson Hsieh.

        * platform/mac/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:

2022-04-19  Karl Rackler  <rackler@apple.com>

        fast/css/sticky/sticky-left.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=227467

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-19  Tim Nguyen  <ntim@apple.com>

        user-select: none shouldn't affect editability
        https://bugs.webkit.org/show_bug.cgi?id=118009

        Reviewed by Antti Koivisto.

        - Removed tests that were testing old behavior
        - Added new tests for new behavior (imported from the Blink codebase)

        * editing/selection/4866671.html: Removed.
        * editing/selection/5779984-1-expected.txt: Removed.
        * editing/selection/5779984-1.html: Removed.
        * editing/selection/user-select-js-property-expected.txt: Added.
        * editing/selection/user-select-js-property.html: Added.
        * platform/gtk/editing/selection/4866671-expected.png: Removed.
        * platform/gtk/editing/selection/4866671-expected.txt: Removed.
        * platform/ios/TestExpectations:
        * platform/ios/editing/selection/4866671-expected.txt: Removed.
        * platform/mac/editing/selection/4866671-expected.png: Removed.
        * platform/mac/editing/selection/4866671-expected.txt: Removed.
        * platform/win/editing/selection/4866671-expected.txt: Removed.
        * platform/wincairo/editing/selection/4866671-expected.txt: Removed.

2022-04-19  Tim Nguyen  <ntim@apple.com>

        [iOS] Also skip resize-orthogonal-containing-block.html
        https://bugs.webkit.org/show_bug.cgi?id=239459

        Unreviewed test gardening.

        I should have done this with the other resize tests.

        * platform/ios/TestExpectations:

2022-04-18  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Unskip api/validation/createSampler.html 🎉
        https://bugs.webkit.org/show_bug.cgi?id=239448

        Reviewed by Darin Adler.

        Turns out we were already passing it.

        * http/tests/webgpu/webgpu/api/validation/createSampler-expected.txt:
        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-04-18  Tyler Wilcock  <tyler_w@apple.com>

        AX: Update the isolated tree in response to AXElementBusyChanged and AXTextChanged notifications
        https://bugs.webkit.org/show_bug.cgi?id=239434

        Reviewed by Chris Fleizach.

        * accessibility/text-updates-after-dynamic-change-expected.txt: Added.
        * accessibility/text-updates-after-dynamic-change.html: Added.
        * accessibility/aria-busy-updates-after-dynamic-change-expected.txt: Added.
        * accessibility/aria-busy-updates-after-dynamic-change.html: Added.
        * platform/glib/TestExpectations:
        Skip new test.
        * platform/ios/TestExpectations:
        Enable new tests.
        * platform/ios/accessibility/text-updates-after-dynamic-change-expected.txt: Added.
        * platform/win/TestExpectations:
        Skip aria-busy-updates-after-dynamic-change.html.

2022-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] fast/events/touch/force-press-event.html fails on iPhones with top safe area insets
        https://bugs.webkit.org/show_bug.cgi?id=239475

        Reviewed by Darin Adler.

        Adjust this test so that it simulates a force press over the center of the target element.

        * platform/iphone-7/fast/events/touch/force-press-event.html:

2022-04-18  Tim Nguyen  <ntim@apple.com>

        [iOS] Skip CSS resize tests added by r292559
        https://bugs.webkit.org/show_bug.cgi?id=239459

        Unreviewed test gardening.

        iOS doesn't support CSS resize.

        * platform/ios/TestExpectations:

2022-04-18  Ryan Haddad  <ryanhaddad@apple.com>

        REGRESSION (249698@main): 4 payment request layout tests failing on Big Sur
        https://bugs.webkit.org/show_bug.cgi?id=239461

        Unreviewed test gardening.

        * platform/mac-bigsur/http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt: Added.
        * platform/mac-bigsur/http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt: Added.
        * platform/mac-bigsur/imported/w3c/web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt: Added.
        * platform/mac-bigsur/imported/w3c/web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt: Added.

2022-04-18  Martin Robinson  <mrobinson@webkit.org>

        TestRunner testdriver does not properly focus elements before sending keys to them
        https://bugs.webkit.org/show_bug.cgi?id=237589

        Reviewed by Carlos Garcia Campos.

        * platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/input-change-event-properties-expected.txt: Added.
        * platform/ios-simulator/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt.
        * platform/ios/TestExpectations:
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/input-change-event-properties-expected.txt: Added.
        * platform/mac/imported/w3c/web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt: Added.
        * platform/mac/imported/w3c/web-platform-tests/css/selectors/focus-visible-008-expected.txt:

2022-04-16  Ryosuke Niwa  <rniwa@webkit.org>

        Make release assertion in Document::updateLayout more precise for FrameSelection::setSelection
        https://bugs.webkit.org/show_bug.cgi?id=239431

        Reviewed by Alan Bujtas.

        Add a regression test, and fix existing accessibility tests which were mutating DOM inside setSelection
        via should* functions. In production, this will never happen since accessibility notification will be sent
        to UI process asynchronously and accesssibility code won't try to mutate DOM synchronously.

        * accessibility/mac/focus-setting-selection-syncronizing-not-clearing-expected.txt: Rebaselined.
        * accessibility/mac/focus-setting-selection-syncronizing-not-clearing.html: Delay DOM mutations in should*
        until the notification is over.
        * accessibility/mac/selection-change-userinfo.html: Ditto.
        * accessibility/mac/selection-sync.html: Ditto.
        * accessibility/mac/selection-value-changes-for-aria-textbox.html: Ditto.
        * fast/forms/textarea-selection-update-during-DOMNodeRemoved-crash-expected.txt: Added.
        * fast/forms/textarea-selection-update-during-DOMNodeRemoved-crash.html: Added.

2022-04-15  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey wk2 ] 7 /paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed rebasline & test gardening.

        * http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt:
        * platform/mac-wk2/TestExpectations:
        * platform/ios-wk2/TestExpectations:

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 ] WebGL conformance tests are a flaky time out
        Adding additional tests
        https://bugs.webkit.org/show_bug.cgi?id=239388

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 debug ] WebGL conformance tests are a flaky time out
        Adding additional tests
        https://bugs.webkit.org/show_bug.cgi?id=239386

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 ] 2 css-transforms tests are flaky failing
        https://bugs.webkit.org/show_bug.cgi?id=239407

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-15  Antoine Quint  <graouts@apple.com>

        WKWebView false positive when testing a.relList.supports("ar"), fails to open USDZ in AR QuickLook
        https://bugs.webkit.org/show_bug.cgi?id=239135
        <rdar://problem/91798041>

        Reviewed by Tim Horton.

        Add tests to check a.relList.supports("ar") returns the expected value based on
        the SystemPreviewEnabled setting value.

        * system-preview/rel-ar-setting-disabled-expected.txt: Added.
        * system-preview/rel-ar-setting-disabled.html: Added.
        * system-preview/rel-ar-setting-enabled-expected.txt: Added.
        * system-preview/rel-ar-setting-enabled.html: Added.

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Mac ] fast/css/counters/element-removal-crash.xhtml is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239405

        Unreviewed test gardening. 

        * platform/mac/TestExpectations:

2022-04-15  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Implement getTransports() and getAuthenticatorData() on AuthenticatorAttestationResponse
        https://bugs.webkit.org/show_bug.cgi?id=238966
        rdar://problem/91449906

        Reviewed by Brent Fulgham.

        Add getTransports() to test.

        * http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
        * http/wpt/webauthn/resources/util.js:

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 ] WebGL conformance tests are a flaky time out
        https://bugs.webkit.org/show_bug.cgi?id=239388

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-15  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 debug ] WebGL conformance tests are a flaky time out
        https://bugs.webkit.org/show_bug.cgi?id=239386

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-15  Youenn Fablet  <youenn@apple.com>

        Sandboxed iframe loads should match a service worker registration based on sandbox flags
        https://bugs.webkit.org/show_bug.cgi?id=239379

        Reviewed by Chris Dumez.

        * TestExpectations:

2022-04-15  Rob Buis  <rbuis@igalia.com>

        Import css/css-sizing/aspect-ratio tests from WPT
        https://bugs.webkit.org/show_bug.cgi?id=239378

        Reviewed by Tim Nguyen.

        * TestExpectations:

2022-04-15  Youenn Fablet  <youenn@apple.com>

        ServiceWorker.postMessage() doesn't work from inside iframe
        https://bugs.webkit.org/show_bug.cgi?id=213984
        <rdar://problem/65203340>

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/about-blank-iframe-expected.txt: Added.
        * http/wpt/service-workers/about-blank-iframe-worker.js: Added.
        * http/wpt/service-workers/about-blank-iframe.html: Added.
        * http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html:
        * http/tests/workers/service/client-removed-from-clients-while-in-page-cache-expected.txt:
        * http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html:
        * http/tests/workers/service/other_resources/test.html:
        * http/tests/workers/service/resources/getClientIds-worker.js:

2022-04-14  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Default initialize GTK-specific print info in WebKit::PrintInfo
        https://bugs.webkit.org/show_bug.cgi?id=196542

        Reviewed by Adrian Perez de Castro.

        * LayoutTests/platform/gtk/TestExpectations: Remove now passing tests
        * platform/gtk/editing/execCommand/print-expected.png: Update expectations
        * platform/gtk/editing/execCommand/print-expected.txt:

2022-04-14  Antoine Quint  <graouts@apple.com>

        [model] ASVInlinePreview objects don't get cleared when the model source changes
        https://bugs.webkit.org/show_bug.cgi?id=239064
        <rdar://problem/90391037>

        Reviewed by Dean Jackson.

        Add a new test which loads a <model> element with a valid resource, checks its UUID against
        those loaded in the UI process, and then removes the <model> source to check that same UUID
        is not longer loaded.

        This test is currently disabled on OpenSource bots.

        * model-element/model-element-inline-preview-deletion-upon-source-change-expected.txt: Added.
        * model-element/model-element-inline-preview-deletion-upon-source-change.html: Added.
        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-14  Matteo Flores  <matteo_flores@apple.com>

        EXPECTATIONS: [ Monterey wk2 ] 7 /paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed test gardening.

        * TestExpectations:
        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-04-14  Caitlin Potter  <caitp@igalia.com>

        [JSC] ShadowRealm global object has a mutable prototype
        https://bugs.webkit.org/show_bug.cgi?id=239332

        Reviewed by Yusuke Suzuki.

        Add a new layout test to verify changes to verify that ShadowRealmGlobalObject has a properly
        mutable prototype.

        * js/ShadowRealm-globalThis-expected.txt: Added.
        * js/ShadowRealm-globalThis.html: Added.

2022-04-14  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        calc(): Serialize top level min/max/hypot as calc()
        https://bugs.webkit.org/show_bug.cgi?id=239019

        Reviewed by Darin Adler.

        * fast/css/calc-parsing-expected.txt:
        * fast/css/calc-parsing.html:

2022-04-14  Karl Rackler  <rackler@apple.com>

        [ Mac ] editing/execCommand/insert-ordered-list-and-delete.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239345

        Unreviewed test gardening. 

        * platform/mac/TestExpectations:

2022-04-14  Karl Rackler  <rackler@apple.com>

        [ Mac wk2 arm64 ] scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=225529

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-13  Kate Cheney  <katherine_cheney@apple.com>

        [ iOS ] imported/w3c/web-platform-tests/content-security-policy/worker-src/service-* tests are consistently failing (229875)
        https://bugs.webkit.org/show_bug.cgi?id=229875
        <rdar://problem/82727204>

        Unreviewed. Updating test expectations to enable CSP worker-src tests.

        * platform/ios-wk2/TestExpectations:

2022-04-14  Youenn Fablet  <youenn@apple.com>

        Expose workers as service worker clients and implement registration matching for dedicated workers
        https://bugs.webkit.org/show_bug.cgi?id=239066

        Reviewed by Chris Dumez.

        * TestExpectations:
        * http/wpt/service-workers/controlled-dedicatedworker.https-expected.txt: Added.
        * http/wpt/service-workers/controlled-dedicatedworker.https.html: Added.
        * http/wpt/service-workers/resources/controlled-worker.js: Added.

2022-04-14  Youenn Fablet  <youenn@apple.com>

        A shared worker in a cached page should not allow the remote shared worker to continue executing
        https://bugs.webkit.org/show_bug.cgi?id=239286

        Reviewed by Chris Dumez.

        * http/tests/navigation/page-cache-shared-worker-expected.txt: Added.
        * http/tests/navigation/page-cache-shared-worker.html: Added.
        * http/tests/navigation/resources/page-cache-helper-for-sharedworker.html: Added.
        * http/tests/navigation/resources/shared-worker-script.js: Added.
        * platform/mac-wk1/TestExpectations:
        * platform/win/TestExpectations:

2022-04-13  Myles C. Maxfield  <mmaxfield@apple.com>

        Revert r291846 because it caused a 3% performance regression
        https://bugs.webkit.org/show_bug.cgi?id=239323
        <rdar://problem/91046238>

        Rubber-stamped by Stephanie Lewis.

        * TestExpectations:
        * fast/text/accessibility-bold-expected-mismatch.html: Removed.
        * fast/text/accessibility-bold.html: Removed.
        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-13  Antoine Quint  <graouts@apple.com>

        [web-animations] REGRESSION(r291527): assertion hit during teardown of document with CSS Animations
        https://bugs.webkit.org/show_bug.cgi?id=239291
        rdar://90699078

        Reviewed by Dean Jackson.

        Add a new test that would have asserted prior to the source change.

        * webanimations/css-animation-resolution-during-teardown-expected.txt: Added.
        * webanimations/css-animation-resolution-during-teardown.html: Added.

2022-04-13  Alan Bujtas  <zalan@apple.com>

        REGRESSION (r292043): [ Mac ] fast/block/positioning/fixed-container-with-relative-parent.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239101
        <rdar://problem/91603539>

        Reviewed by Antti Koivisto.

        * fast/block/fixed-inside-absolute-positioned-expected.html: Added.
        * fast/block/fixed-inside-absolute-positioned.html: Added.
        * platform/mac-wk1/TestExpectations:

2022-04-13  Truitt Savell  <tsavell@apple.com>

        [ Monterey WK2 ] media/media-source/media-source-webm-vorbis-partial.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=239308

        Unreviewed test gardening

        * platform/mac-wk2/TestExpectations:

2022-04-13  Andres Gonzalez  <andresg_22@apple.com>

        Rewrite accessibility/mac/stale-table-rows.html to properly check that the number of rows and columns are correct after grid changes.
        https://bugs.webkit.org/show_bug.cgi?id=239292
        <rdar://problem/91705969>

        Reviewed by Chris Fleizach.

        This test had a weak success criterion that was passing when two
        expressions were equal without checking the actual value of the
        expressions, which was incorrect in isolated tree mode. This is a
        rewrite of the test that makes the success criteria more strict and
        modernize the test to be async so that it can pass in isolated tree
        mode. In addition, renamed the test to better reflect what it is
        actually doing.

        * accessibility/mac/grid-add-remove-rows-expected.txt: Added.
        * accessibility/mac/grid-add-remove-rows.html: Added.
        * accessibility/mac/stale-table-rows-expected.txt: Renamed to above.
        * accessibility/mac/stale-table-rows.html: Renamed to above.

2022-04-13  Karl Rackler  <rackler@apple.com>

        [ Monterey wk2 release ] imported/w3c/web-platform-tests/content-security-policy/inheritance/blob-url-inherits-from-initiator.sub.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=239307

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r292817.
        https://bugs.webkit.org/show_bug.cgi?id=239305

        some dialog tests are asserting

        Reverted changeset:

        "REGRESSION (r292043): [ Mac ] fast/block/positioning/fixed-
        container-with-relative-parent.html is a flaky image failure"
        https://bugs.webkit.org/show_bug.cgi?id=239101
        https://commits.webkit.org/r292817

2022-04-13  Karl Rackler  <rackler@apple.com>

        [ Mac wk2 ] http/tests/cache-storage/cache-origins.https.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239304

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-13  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey wk2 ] 7 /paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed test gardening.

        * TestExpectations:

2022-04-13  Truitt Savell  <tsavell@apple.com>

        [ Monterey ] 4 http/tests/paymentrequest tests failing
        https://bugs.webkit.org/show_bug.cgi?id=239300

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-13  Antti Koivisto  <antti@apple.com>

        [CSS Container Queries] Correct container selection for pseudo-elements
        https://bugs.webkit.org/show_bug.cgi?id=239279

        Reviewed by Simon Fraser.

        * TestExpectations:

2022-04-13  Alan Bujtas  <zalan@apple.com>

        REGRESSION (r292043): [ Mac ] fast/block/positioning/fixed-container-with-relative-parent.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239101
        <rdar://problem/91603539>

        Reviewed by Antti Koivisto.

        * fast/block/fixed-inside-absolute-positioned-expected.html: Added.
        * fast/block/fixed-inside-absolute-positioned.html: Added.
        * platform/mac-wk1/TestExpectations:

2022-04-13  Simon Fraser  <simon.fraser@apple.com>

        [css-scroll-snap] scrollIntoView fails with scroll-snap-type on :root
        https://bugs.webkit.org/show_bug.cgi?id=239063
        <rdar://problem/91603363>

        Reviewed by Dean Jackson.

        Make UIHelper.waitForScrollCompletion() work on iOS.

        * fast/scrolling/ios/constrain-scrollintoview-position-expected.txt: Added.
        * fast/scrolling/ios/constrain-scrollintoview-position.html: Added.
        * resources/ui-helper.js:
        (window.UIHelper.async waitForScrollCompletion.await.new.Promise.):
        (window.UIHelper.async waitForScrollCompletion.await.new.Promise):
        (window.UIHelper.async waitForScrollCompletion):

2022-04-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove support for drawing cropped image overlays when hovering over "Copy Cropped Image"
        https://bugs.webkit.org/show_bug.cgi?id=239269

        Reviewed by Darin Adler.

        * fast/images/text-recognition/image-overlay-cropped-image-expected.txt: Removed.
        * fast/images/text-recognition/image-overlay-cropped-image.html: Removed.

2022-04-12  Devin Rousso  <drousso@apple.com>

        [Modern Media Controls] allow skipping by durations other than 15s
        https://bugs.webkit.org/show_bug.cgi?id=239260
        <rdar://problem/91441576>

        Reviewed by Eric Carlson.

        * media/modern-media-controls/skip-back-button/skip-back-button.html:
        * media/modern-media-controls/skip-back-button/skip-back-button-expected.txt:
        * media/modern-media-controls/skip-forward-button/skip-forward-button.html:
        * media/modern-media-controls/skip-forward-button/skip-forward-button-expected.txt:

2022-04-12  Karl Rackler  <rackler@apple.com>

        [ Mac wk2 ] fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-choose-value-from-picker.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=239257

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations:

2022-04-12  Myles C. Maxfield  <mmaxfield@apple.com>

        [WKTR] [DRT] Only enable WebGPU for the LayoutTests/http/tests/webgpu directory
        https://bugs.webkit.org/show_bug.cgi?id=238779

        Reviewed by Darin Adler.

        * platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
        * platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:

2022-04-12  Karl Rackler  <rackler@apple.com>

        [ BigSur+ wk2 Release ] css3/masking/reference-clip-path-animate-transform-repaint.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=230504
        Marking test for BigSur "+"

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-12  Ada Chan  <adachan@apple.com>

        [WebXR] Implement the WebXRFrame methods for getting joints' poses and radii
        https://bugs.webkit.org/show_bug.cgi?id=238968

        Reviewed by Dean Jackson.

        Add more constants for a valid joint value and device init dictionary
        that represents a device with hand tracking support enabled.

        Add new tests for testing hand input related methods in XRFrame.

        * http/wpt/webxr/resources/webxr_test_constants_single_view.js:
        * http/wpt/webxr/xrFrame_fillJointRadii-expected.txt: Added.
        * http/wpt/webxr/xrFrame_fillJointRadii.html: Added.
        * http/wpt/webxr/xrFrame_fillJointRadii_missing_joint_pose-expected.txt: Added.
        * http/wpt/webxr/xrFrame_fillJointRadii_missing_joint_pose.html: Added.
        * http/wpt/webxr/xrFrame_fillPoses-expected.txt: Added.
        * http/wpt/webxr/xrFrame_fillPoses.html: Added.
        * http/wpt/webxr/xrFrame_fillPoses_missing_joint_pose-expected.txt: Added.
        * http/wpt/webxr/xrFrame_fillPoses_missing_joint_pose.html: Added.
        * http/wpt/webxr/xrFrame_getJointPose-expected.txt: Added.
        * http/wpt/webxr/xrFrame_getJointPose.html: Added.
        * http/wpt/webxr/xrFrame_getJointPose_missing_joint_pose-expected.txt: Added.
        * http/wpt/webxr/xrFrame_getJointPose_missing_joint_pose.html: Added.
        * http/wpt/webxr/xrHand-expected.txt: Added.
        * http/wpt/webxr/xrHand.html: Added.
        * http/wpt/webxr/xrHandInput_gc.html:
        * platform/win/TestExpectations: Skip other folders with WebXR tests

2022-04-12  Karl Rackler  <rackler@apple.com>

        REGRESSION (r292043): [ Mac ] fast/block/positioning/fixed-container-with-relative-parent.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=239101

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-04-12  Tyler Wilcock  <tyler_w@apple.com>

        AX: Incorrect role on dynamic lists
        https://bugs.webkit.org/show_bug.cgi?id=238831

        Reviewed by Andres Gonzalez.

        * accessibility/list-with-dynamically-changing-content-expected.txt: Added.
        * accessibility/list-with-dynamically-changing-content.html: Added.
        * platform/ios/accessibility/list-with-dynamically-changing-content-expected.txt: Added.
        * platform/ios/TestExpectations: Enable new test.
        * platform/win/TestExpectations: Skip new test.

2022-04-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Make fast/text/otsvg-canvas.html more robust
        https://bugs.webkit.org/show_bug.cgi?id=239109
        <rdar://problem/88838078>

        Unreviewed test gardening.

        Turns out loading fonts is asynchronous.

        * fast/text/otsvg-canvas.html:
        * platform/mac-wk1/TestExpectations:

2022-04-11  Tyler Wilcock  <tyler_w@apple.com>

        AX: Update isolated tree in response to AXReadOnlyStatusChanged, AXRequiredStatusChanged, and AXPressedStateChanged notifications
        https://bugs.webkit.org/show_bug.cgi?id=239047

        Reviewed by Chris Fleizach.

        * accessibility/aria-readonly-updates-after-dynamic-change-expected.txt: Added.
        * accessibility/aria-readonly-updates-after-dynamic-change.html: Added.
        * accessibility/aria-required-updates-after-dynamic-change-expected.txt: Added.
        * accessibility/aria-required-updates-after-dynamic-change.html: Added.
        * accessibility/mac/aria-pressed-button-attributes-expected.txt:
        * accessibility/mac/aria-pressed-button-attributes.html:
        Add testcases that dynamically change aria-pressed and expect the
        right attributes.
        * platform/ios/TestExpectations: Enable new tests.
        * platform/win/TestExpectations: Skip new tests.

2022-04-11  Patrick Angle  <pangle@apple.com>

        Web Inspector: preserve DOM.NodeId if a node is removed and re-added
        https://bugs.webkit.org/show_bug.cgi?id=189687

        Reviewed by Devin Rousso.

        Update test to reflect that DOM breakpoints are now able to be reattached to their original node upon insertion
        following removal.

        * inspector/dom-debugger/dom-breakpoint-node-removed-ancestor.html:
        * inspector/dom-debugger/dom-breakpoint-node-removed-ancestor-expected.txt:
        * inspector/dom-debugger/dom-breakpoint-node-removed-direct-expected.txt:

        * inspector/dom-debugger/resources/dom-breakpoint-utilities.js:
        (TestPage.registerInitializer.InspectorTest.DOMBreakpoint.createBreakpoint):
        - Add an event handler to log the setting of the domNode for breakpoints. In order to prevent spurious output
        when removing breakpoints, instrument the removal of breakpoints to remove the testing event handler before the
        node is changed.

2022-04-11  Matteo Flores  <matteo_flores@apple.com>

        [ Mac wk2 Debug ] accessibility/ancestor-computation.html is a constant timeout
        https://bugs.webkit.org/show_bug.cgi?id=239099

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-11  Alan Bujtas  <zalan@apple.com>

        [ iOS iPhone 12 ] fast/hidpi & fast/layers/hidpi tests are flaky text/image failing
        https://bugs.webkit.org/show_bug.cgi?id=232384
        <rdar://problem/84714121>

        Reviewed by Wenson Hsieh.

        * platform/ios/TestExpectations:

2022-04-11  Truitt Savell  <tsavell@apple.com>

        REGRESSION (249023-249029@main): [ Monterey ] http/wpt/cache-storage/cache-storage-networkprocess-crash.html is a flaky CRASH with ASSERTION FAILED: m_pageMap.isEmpty()
        https://bugs.webkit.org/show_bug.cgi?id=239095

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-04-11  Matteo Flores  <matteo_flores@apple.com>

        [ Mac ] http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=239091

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-11  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey wk2 ] 4 http/tests/inspector/paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations: Fixed expectations due to wk2 expectation

2022-04-11  Jer Noble  <jer.noble@apple.com>

        REGRESSION(r292051-r292022): [ iOS ] media/video-object-fit.html is a constant image failure
        https://bugs.webkit.org/show_bug.cgi?id=238634
        <rdar://problem/91125776>

        Reviewed by Eric Carlson.

        * platform/ios-wk2/TestExpectations:

2022-04-11  Matteo Flores  <matteo_flores@apple.com>

        webgl/2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec.html crashes
        https://bugs.webkit.org/show_bug.cgi?id=237840

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-04-11  Youenn Fablet  <youenn@apple.com>

        Expose more ServiceWorker interfaces to workers
        https://bugs.webkit.org/show_bug.cgi?id=238992

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/resources/serviceworker-in-sharedworker.js: Added.
        * http/wpt/service-workers/resources/serviceworker-in-worker.js: Added.
        * http/wpt/service-workers/serviceworker-in-dedicatedworker.https-expected.txt: Added.
        * http/wpt/service-workers/serviceworker-in-dedicatedworker.https.html: Added.
        * http/wpt/service-workers/serviceworker-in-sharedworker.https-expected.txt: Added.
        * http/wpt/service-workers/serviceworker-in-sharedworker.https.html: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/notifications/idlharness.https.any.worker-expected.txt:

2022-04-11  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey wk2 ] 4 http/tests/inspector/paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed test gardening.

        * TestExpectations:

2022-04-11  Andres Gonzalez  <andresg_22@apple.com>

        Rewrite accessibility/table-modification-crash.html to test that the AX tree reflects the changes made to the table rows.
        https://bugs.webkit.org/show_bug.cgi?id=239013
        <rdar://problem/91498453>

        Reviewed by Darin Adler.

        Renamed and rewrote this test to actually test more than just that it
        doesn't crash. Now we check that the AX tree reflects the changes of
        adding and removing table rows.

        * accessibility/table-add-remove-row-expected.txt: Added.
        * accessibility/table-add-remove-row.html: Added.
        * accessibility/table-modification-crash-expected.txt: Removed.
        * accessibility/table-modification-crash.html: Removed.
        * platform/glib/accessibility/table-add-remove-row-expected.txt:
        * platform/win/TestExpectations:

2022-04-10  Tyler Wilcock  <tyler_w@apple.com>

        Fix accessibility/aria-invalid.html in isolated tree mode
        https://bugs.webkit.org/show_bug.cgi?id=238978

        Reviewed by Chris Fleizach.

        * accessibility/aria-invalid-expected.txt:
        * accessibility/aria-invalid.html:
        Rewrite to call `debug` only once at the end of the test. Also made
        this test use accessibleElementById instead of
        accessibilityController.focusedElement.
        * resources/accessibility-helper.js:
        Add new `expect` function, which is like the more ubiquitous
        `shouldBe` from js-test.js, but returns the output as a string instead
        of calling `debug` to output to a console DOM element.

2022-04-09  Myles C. Maxfield  <mmaxfield@apple.com>

        [WKTR] Reset minimum font size WKPreference between tests
        https://bugs.webkit.org/show_bug.cgi?id=239027
        <rdar://problem/88938768>

        Reviewed by Chris Dumez.

        Remove unnecessary ephemeral session.

        * fast/forms/visual-hebrew-text-field.html:

2022-04-09  Alan Bujtas  <zalan@apple.com>

        REGRESSION (Safari 15.4): Focused element doesn't render outline when it has an underline
        https://bugs.webkit.org/show_bug.cgi?id=238998
        <rdar://problem/91484512>

        Reviewed by Antti Koivisto.

        * fast/repaint/incorrect-outline-repaint-expected.txt: Added.
        * fast/repaint/incorrect-outline-repaint.html: Added.
        * fast/text/simple-line-layout-text-stroke-width.html: now we produce a slightly different (more accurate)
        vertical repaint range. However this test is about moving the content horizontally, so let's make this
        test more robust by focusing on the horizontal part. 

2022-04-08  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey wk2 ] 4 http/tests/inspector/paymentrequest/* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238908

        Unreviewed test rebaslining.

        * http/tests/inspector/paymentrequest/payment-request-internal-properties.https-expected.txt:
        * http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt:
        * http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt:
        * http/tests/paymentrequest/payment-response-retry-method.https-expected.txt:

2022-04-08  Matteo Flores  <matteo_flores@apple.com>

        Unreviewed, reverting r292521.

        This broke the test further.

        Reverted changeset:

        "[ Mac ] accessibility/mac/expanded-notification.html is a
        flaky text failure"
        https://bugs.webkit.org/show_bug.cgi?id=238830
        https://commits.webkit.org/r292521

2022-04-08  Alan Bujtas  <zalan@apple.com>

        imported/blink/fast/multicol/vertical-lr/float-content-break.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=239002

        Unreviewed.

        * platform/mac/TestExpectations:

2022-04-08  Alan Bujtas  <zalan@apple.com>

        Do not use std::numeric_limits<float>::min() as the initial value to collect max values for glyph overflow
        https://bugs.webkit.org/show_bug.cgi?id=238334

        Reviewed by Simon Fraser.

        * platform/ios/fast/block/lineboxcontain/glyphs-expected.txt:
        * platform/ios/fast/css-generated-content/initial-letter-basic-expected.txt:
        * platform/ios/fast/css-generated-content/initial-letter-border-padding-expected.txt:
        * platform/ios/fast/css-generated-content/initial-letter-raised-expected.txt:
        * platform/ios/fast/css-generated-content/initial-letter-sunken-expected.txt:
        * platform/ios/mathml/opentype/opentype-stretchy-expected.txt:
        * platform/ios/mathml/presentation/roots-expected.txt:
        * platform/mac/fast/block/lineboxcontain/glyphs-expected.txt:
        * platform/mac/fast/css-generated-content/initial-letter-basic-expected.txt:
        * platform/mac/fast/css-generated-content/initial-letter-border-padding-expected.txt:
        * platform/mac/fast/css-generated-content/initial-letter-raised-expected.txt:
        * platform/mac/fast/css-generated-content/initial-letter-sunken-expected.txt:
        * platform/mac/mathml/opentype/opentype-stretchy-expected.txt:
        * platform/mac/mathml/presentation/roots-expected.txt:

2022-04-08  Alan Bujtas  <zalan@apple.com>

        [ iOS EWS ] fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping.html is a flaky image failure.
        https://bugs.webkit.org/show_bug.cgi?id=237218
        <rdar://problem/89484834>

        Unreviewed.

        * fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping-expected.html:
        * fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping.html: Change font family to Ahem.

2022-04-08  Andres Gonzalez  <andresg_22@apple.com>

        Fix for accessibility/table-sections.html in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=238970
        <rdar://problem/91451873>

        Reviewed by Chris Fleizach.

        Fixed this test in ITM by splitting the test into two smaller, faster
        tests:
        accessibility/table-multiple-tbodies.html
        accessibility/table-thead-tfoot.html
        In addition, the new tests write to the console only once after all the
        accessibility calls are made.

        * TestExpectations: Removed the old test marked as Slow.
        * accessibility/resources/table-helper.js: Added.
        (tableProperties): Helper function used in several tests.
        * accessibility/table-attributes.html:
        * accessibility/table-multiple-tbodies-expected.txt: Copied from LayoutTests/accessibility/table-sections-expected.txt.
        * accessibility/table-multiple-tbodies.html: Added.
        * accessibility/table-sections.html: Removed.
        * accessibility/table-thead-tfoot-expected.txt: Added.
        * accessibility/table-thead-tfoot.html: Added.
        * platform/glib/accessibility/table-multiple-tbodies-expected.txt: Renamed from LayoutTests/accessibility/table-sections-expected.txt.
        * platform/glib/accessibility/table-sections-expected.txt: Removed.
        * platform/glib/accessibility/table-thead-tfoot-expected.txt: Added.
        * platform/win/TestExpectations:
        * platform/wincairo-wk1/TestExpectations:
        * platform/wincairo/TestExpectations:

2022-04-08  Andres Gonzalez  <andresg_22@apple.com>

        Fix for accessibility/roles-table-and-cell.html in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=238936
        <rdar://problem/91414958>

        Reviewed by Chris Fleizach.

        Fixes this test in isolated tree mode by not writing to the console
        until the end of the test.

        * accessibility/roles-table-and-cell-expected.txt:
        * accessibility/roles-table-and-cell.html:

2022-04-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        Incorrect CORP/COEP check in 304 responses
        https://bugs.webkit.org/show_bug.cgi?id=238238
        <rdar://problem/90706510>

        Reviewed by Youenn Fablet.

        Mark some tests with DumpJSConsoleLogInStdErr modifier.

        * TestExpectations:

2022-04-07  Matteo Flores  <matteo_flores@apple.com>

        [ iOS EWS ] css3/background/background-repeat-round-auto2.html is a image failure
        https://bugs.webkit.org/show_bug.cgi?id=238965

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-04-07  Matteo Flores  <matteo_flores@apple.com>

        [ iOS EWS ] fast/attachment/attachment-disabled-rendering.html is a text missing failure
        https://bugs.webkit.org/show_bug.cgi?id=238960

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-04-07  Devin Rousso  <drousso@apple.com>

        [GPU Process] Test failures in forms
        https://bugs.webkit.org/show_bug.cgi?id=236927
        <rdar://problem/89196867>

        Unreviewed, fix test failures and adjust related expectations.

        * fast/forms/autofocus-readonly-attribute.html:
        This test appeared to be failing because it ended before the `"focus"` event had a chance
        to fire. Make the test async by delaying its completion until after a `requestAnimationFrame`
        which should be enough time for the `"focus"` event to be dispatched (and handled).

        * fast/forms/input-text-autofocus.html:
        * fast/forms/input-text-autofocus-expected.txt:
        Slightly rework this test to manually tell the `testRunner` to `waitUntilDone`, as for some
        reason the `js-test-{pre,post}` test harness seems to somehow not output the `PASS` messages
        while still finishing the test (i.e. not a timeout).

        * platform/ios-simulator-wk2/TestExpectations:
        * platform/ios-wk2/TestExpectations:
        * platform/ipad/TestExpectations:
        Remove non-skipped expectations for:
        - fast/forms/ios/choose-select-option.html
        - fast/forms/autofocus-readonly-attribute.html
        - fast/forms/input-text-autofocus.html
        Note that `fast/forms/ios/choose-select-option.html` is still skipped on iPad, because there
        is already a `platform/ipad/fast/forms/choose-select-option.html` specifically to test iPad.

2022-04-07  Tyler Wilcock  <tyler_w@apple.com>

        AX ITM: ARIATreeItemContent, ARIATreeRows, and DisclosedRows properties need to be updated after dynamic page changes
        https://bugs.webkit.org/show_bug.cgi?id=238844

        Reviewed by Chris Fleizach.

        * accessibility/mac/tree-properties-update-after-dynamic-change-expected.txt: Added.
        * accessibility/mac/tree-properties-update-after-dynamic-change.html: Added.

2022-04-07  Alan Bujtas  <zalan@apple.com>

        Unreviewed test gardening.

        * imported/blink/fast/multicol/vertical-lr/float-content-break-expected.html:
        .html is rendered using the legacy codepath while -expected.html is renderer using the modern codepath.
        In case of fractional pixel values, they sometimes produce different final baselines due to (unintentional) implicit flooring in legacy line layout.
        While most of these intentional/unintentional floors/ceils are matched (with FIXMEs) in the modern line layout, some would make the line layout
        codebase a lot more complicated. These type of bugs are mostly not visible to the user anyway ever since we have stopped swapping between modern
        and legacy line layout dynamically (e.g. on selection).
        * imported/blink/fast/multicol/vertical-lr/float-content-break.html:
        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:

2022-04-07  Tim Nguyen  <ntim@apple.com>

        [CSS resize property] Correct minimum size computation to allow resizing below initial size
        https://bugs.webkit.org/show_bug.cgi?id=135335

        Reviewed by Simon Fraser.

        Tests ported from the Chromium changeset: https://chromium-review.googlesource.com/c/chromium/src/+/545395/
        They've been tweaked to:
        - not rely on <textarea>
        - use WPT harness instead of Chrome specific methods
        - use async functions instead of callbacks

        * fast/css/resize-above-min-size-and-below-initial-size-expected.txt: Added.
        * fast/css/resize-above-min-size-and-below-initial-size.html: Added.
        * fast/css/resize-below-min-intrinsic-size-large-scrollbars-expected.txt: Added.
        * fast/css/resize-below-min-intrinsic-size-large-scrollbars.html: Added.
        * fast/css/resize-below-min-intrinsic-size-expected.txt: Added.
        * fast/css/resize-below-min-intrinsic-size.html: Added.
        * fast/css/resize-below-min-size-expected.txt: Added.
        * fast/css/resize-below-min-size-zoomed-expected.txt: Added.
        * fast/css/resize-below-min-size-zoomed.html: Added.
        * fast/css/resize-below-min-size.html: Added.
        * fast/css/resize-orthogonal-containing-block-expected.txt: Added.
        * fast/css/resize-orthogonal-containing-block.html: Added.

2022-04-07  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r292419): [ iOS EWS ] imported/w3c/web-platform-tests/css/selectors/invalidation/user-action-pseudo-classes-in-has.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238954

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-04-07  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290770): [ Mac wk2 ] imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-050.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238033

        Unreviewed test gardening

        * platform/mac-wk2/TestExpectations:

2022-04-07  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey ] fast/text/khmer-lao-font.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238917

        Unreviewed test gardening

        * platform/mac/TestExpectations:

2022-04-07  Kate Cheney  <katherine_cheney@apple.com>

        [ BigSur wk1 ] printing/css2.1/page-break-after-000.html is a flaky failure (231102)
        https://bugs.webkit.org/show_bug.cgi?id=231102
        <rdar://problem/83781666>

        Unreviewed. Fixing expectations for a no-longer-flaky test.

        * platform/mac-wk1/TestExpectations:

2022-04-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Adjust and refactor some UA styles and logic for injecting Live Text
        https://bugs.webkit.org/show_bug.cgi?id=238912
        rdar://91383570

        Reviewed by Aditya Keerthi.

        Add a layout test to exercise "block"-style Live Text injection, in the case where the injected text contains
        newlines. The resulting selected text should preserve the newline.

        * fast/images/text-recognition/image-overlay-block-with-newlines-expected.txt: Added.
        * fast/images/text-recognition/image-overlay-block-with-newlines.html: Added.

2022-04-07  Alan Bujtas  <zalan@apple.com>

        Fix the expected failure type.

        Unreviewed.

        * platform/mac-wk1/TestExpectations:

2022-04-07  Alan Bujtas  <zalan@apple.com>

        A float avoider should never take a vertical position where a float is present even when its used width is zero
        https://bugs.webkit.org/show_bug.cgi?id=238895

        Reviewed by Antti Koivisto.

        * TestExpectations: inline-size-bfc-floats.html: never produced correct rendering, the red box just happened to be hidden (which made this test pass).
        * fast/block/float/float-avoider-with-zero-width-expected.html: Added.
        * fast/block/float/float-avoider-with-zero-width.html: Added.

2022-04-07  Tim Nguyen  <ntim@apple.com>

        [:has() pseudo-class] Support invalidation for :autofill pseudo class
        https://bugs.webkit.org/show_bug.cgi?id=238899

        Reviewed by Antti Koivisto.

        * fast/forms/input-autofilled-expected.txt:
        * fast/forms/input-autofilled.html:

2022-04-06  Myles C. Maxfield  <mmaxfield@apple.com>

        NBSP characters drawn in fonts that don't support the space character turn into boxes
        https://bugs.webkit.org/show_bug.cgi?id=238836
        <rdar://problem/91130503>

        Reviewed by Alan Bujtas.

        * fast/text/nbsp-no-space-expected.html: Added.
        * fast/text/nbsp-no-space.html: Added.
        * fast/text/resources/Ahem-nbsp-no-space.ttf: Added. Supports NBSP but not space.
        * fast/text/resources/Ahem-visible-tab-and-space.ttf: Added. Has visible glyphs for tab and space.

2022-04-06  Andres Gonzalez  <andresg_22@apple.com>

        [ Mac ] accessibility/mac/expanded-notification.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238830
        rdar://91313419

        Reviewed by Chris Fleizach.

        Fixes the flakiness by checking the number of notifications received in
        the same async block where the changes are occuring. This now passes
        with no flakiness in both isolated tree mode on and off.

        * accessibility/mac/expanded-notification-expected.txt:
        * accessibility/mac/expanded-notification.html:
        * platform/mac/TestExpectations:

2022-04-06  J Pascoe  <j_pascoe@apple.com>

        Fix expected, actual links for variant-based imported wpt tests
        https://bugs.webkit.org/show_bug.cgi?id=238832
        rdar://problem/91313891

        Reviewed by Brent Fulgham.

        The changes to LayoutTests/fast/harness/results.html were wiped when
        preparing https://bugs.webkit.org/show_bug.cgi?id=231544, causing the
        links not to match. This patch fixes it.

        * fast/harness/results.html:

2022-04-06  Matteo Flores  <matteo_flores@apple.com>

        REBASLINE: [ Monterey ] fast/text/khmer-lao-font.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238917

        Unreviewed test rebasline.

        * platform/mac/fast/text/khmer-lao-font-expected.txt:

2022-04-06  Matteo Flores  <matteo_flores@apple.com>

        [ Mac , iOS Debug ] imported/w3c/web-platform-tests/html/cross-origin-opener-policy/resource-popup.https.html is a flaky failure.
        https://bugs.webkit.org/show_bug.cgi?id=228127

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:Fixed typo
        * platform/mac-wk2/TestExpectations:Fixed typo

2022-04-06  Jonathan Bedard  <jbedard@apple.com>

        Remove Mojave references in TestExpectations
        https://bugs.webkit.org/show_bug.cgi?id=238890
        <rdar://problem/91375011>

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations: Remove Mojave references.
        * platform/mac-wk2/TestExpectations: Ditto.
        * platform/mac/TestExpectations: Ditto.

2022-04-06  Jonathan Bedard  <jbedard@apple.com>

        Remove Catalina references in TestExpectations
        https://bugs.webkit.org/show_bug.cgi?id=238886
        <rdar://problem/91373532>

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations: Remove Catalina references.
        * platform/mac-wk2/TestExpectations: Ditto.
        * platform/mac/TestExpectations: Ditto.

2022-04-06  J Pascoe  <j_pascoe@apple.com>

        pbkdf2.https.any.worker.html fails on WPE, GTK2 ports
        https://bugs.webkit.org/show_bug.cgi?id=238885

        Unreviewed test gardening.

        * platform/gtk/TestExpectations:
        * platform/wpe/TestExpectations:

2022-04-06  Robert Jenner  <Jenner@apple.com>

        [ Monterey wk2 Release ] imported/w3c/web-platform-tests/css/css-text/white-space/pre-wrap-012.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=238880

        Unreviewed test gardening. 

        * platform/mac-wk2/TestExpectations: Marked expectations as [ Pass ImageOnlyFailure ] while test is reviewed.

2022-04-06  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] Text filled with pattern sometimes draw with incorrect color
        https://bugs.webkit.org/show_bug.cgi?id=236924
        rdar://89196811

        Reviewed by Myles C. Maxfield.

        * platform/ios-wk2/TestExpectations:

2022-04-06  Oriol Brufau  <obrufau@igalia.com>

        [css] Turn -webkit-border-image into a shorthand
        https://bugs.webkit.org/show_bug.cgi?id=237487

        Reviewed by Antti Koivisto.

        Update tests to take into account that '-webkit-border-image' is a shorthand.

        * fast/borders/border-image-legacy-expected.txt: Added.
        * fast/borders/border-image-legacy.html: Added.
        * fast/css/border-image-style-length-expected.txt:
        * fast/css/border-image-style-length.html:
        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * fast/css/getComputedStyle/resources/property-names.js:
        * fast/css/image-set-parsing-expected.txt:
        * fast/css/image-set-parsing.html:
        * fast/css/uri-token-parsing-expected.txt:
        * fast/css/uri-token-parsing.html:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-04-06  Alan Bujtas  <zalan@apple.com>

        [CSS-Contain] Grid layout should take "contain: inline-size" into account when computing the grid item's logical width
        https://bugs.webkit.org/show_bug.cgi?id=238850

        Reviewed by Antti Koivisto.

        * TestExpectations:

2022-04-06  Oriol Brufau  <obrufau@igalia.com>

        [css] Turn -webkit-text-orientation into a legacy shorthand
        https://bugs.webkit.org/show_bug.cgi?id=238356

        Reviewed by Antti Koivisto.

        * fast/text/text-orientation-parse-competition-expected.txt:
        * fast/text/text-orientation-parse-competition.html:
        Check that if a stylesheet specifies both -webkit-text-orientation and
        text-orientation for the same element, the last specified one wins.

        * fast/text/text-orientation-parse-stylesheet-expected.txt:
        * fast/text/text-orientation-parse-stylesheet.html:
        Check that only -webkit-text-orientation accepts `sideways-right`, and
        that it's mapped to `sideways` at parse time.

2022-04-06  Youenn Fablet  <youenn@apple.com>

        Implement ServiceWorkerWindowClient.navigate
        https://bugs.webkit.org/show_bug.cgi?id=238738

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/navigate-iframes-window-client.https-expected.txt: Added.
        * http/wpt/service-workers/navigate-iframes-window-client.https.html: Added.
        * http/wpt/service-workers/navigate-window-client-worker.js: Added.
        * platform/glib/TestExpectations:
        * platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https-expected.txt: Removed.
        * platform/mac-wk2/TestExpectations:

2022-04-05  Ada Chan  <adachan@apple.com>

        [WebXR] Add a new enum type to represent session features
        https://bugs.webkit.org/show_bug.cgi?id=238837

        Reviewed by Dean Jackson.

        Test listing "hand-tracking" as an optional feature while the device does not
        support it allows the session to be created.
        Test listing "hand-tracking" as a required feature while the device does not
        support it would not create the session.

        * http/wpt/webxr/resources/webxr_test_constants_single_view.js:
        * http/wpt/webxr/xrDevice_requestSession_hand_tracking_feature.https-expected.txt: Added.
        * http/wpt/webxr/xrDevice_requestSession_hand_tracking_feature.https.html: Added.

2022-04-05  Matt Woodrow  <mattwoodrow@apple.com>

        Support transitions/animations on grid-template-columns|rows
        https://bugs.webkit.org/show_bug.cgi?id=204580

        Reviewed by Antoine Quint.

        * TestExpectations:

2022-04-05  Matteo Flores  <matteo_flores@apple.com>

        [ Mac ] accessibility/mac/expanded-notification.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238830

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-04-05  Tim Nguyen  <ntim@apple.com>

        Re-import css/selectors WPT
        https://bugs.webkit.org/show_bug.cgi?id=238820

        Reviewed by Simon Fraser.

        Upstream commit: https://github.com/web-platform-tests/wpt/commit/ef2b67e4a79e8f8d37556533e6dc715d2c692a78

        * TestExpectations:

2022-04-05  Alan Bujtas  <zalan@apple.com>

        [CSS-Contain] Flex layout should take "contain: inline-size" into account when computing the flex item's logical width
        https://bugs.webkit.org/show_bug.cgi?id=238805

        Reviewed by Antti Koivisto.

        * TestExpectations:

2022-04-05  Matteo Flores  <matteo_flores@apple.com>

        [ iOS Mac ] http/tests/workers/service/openwindow-from-notification-click.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238824

        Unreviewed test gardening.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-05  Alan Bujtas  <zalan@apple.com>

        [CSS-Contain] Add support for contain: inline-size
        https://bugs.webkit.org/show_bug.cgi?id=238787

        Reviewed by Antti Koivisto.

        * TestExpectations:

2022-04-05  Cameron McCormack  <heycam@apple.com>

        Skip editing-word-with-marker-1.html
        https://bugs.webkit.org/show_bug.cgi?id=238767

        Unreviewed test gardening.

        * TestExpectations:

2022-04-05  Tim Nguyen  <ntim@apple.com>

        [iOS] Add timeout expectations for focus-after-close.html WPT

        Unreviewed test gardening.

        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt: Added.

2022-04-04  Ziran Sun  <zsun@igalia.com>

        [Forms] change the default appearance of button, checkbox etc. to 'auto'
        https://bugs.webkit.org/show_bug.cgi?id=236012

        Reviewed by Tim Nguyen.

        * platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/appearance/default-styles-expected.txt: Removed.
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/rendering/widgets/appearance/default-styles-expected.txt: Removed.

2022-04-04  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r291770-r291762): [ iOS ] css3/background/background-repeat-round-auto1.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=238781

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-04-04  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290676?): [ iOS ] media/video-played-ranges-1.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238771

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-04-04  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] http/wpt/mediarecorder/mute-tracks.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=238774

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-04-04  Matt Woodrow  <mattwoodrow@apple.com>

        intersectsWithAncestor should take fragmented boxes into account.
        https://bugs.webkit.org/show_bug.cgi?id=238648

        Reviewed by Dean Jackson.

        * compositing/backing/backing-store-columns-inside-position-fixed-expected.txt: Added.
        * compositing/backing/backing-store-columns-inside-position-fixed.html: Added.

        Adds new test that scrolls content split into columns until the first column is offscreen, to confirm
        that we still have a backing store.

2022-04-04  Alan Bujtas  <zalan@apple.com>

        [CSS-contain] Update select element based test failures.

        Unreviewed.

        * TestExpectations:

2022-04-04  Tyler Wilcock  <tyler_w@apple.com>

        AccessibilityNodeObject::elementRect should use children rects for display:contents AX objects
        https://bugs.webkit.org/show_bug.cgi?id=238680

        Reviewed by Chris Fleizach and Andres Gonzalez.

        * accessibility/node-only-object-element-rect-expected.txt: Added.
        * accessibility/node-only-object-element-rect.html: Added.
        * platform/glib/accessibility/node-only-object-element-rect-expected.txt: Added.
        * platform/ios/TestExpectations: Enable new test.
        * platform/ios/accessibility/node-only-object-element-rect-expected.txt: Added.
        * platform/win/accessibility/node-only-object-element-rect-expected.txt: Added.

2022-04-04  J Pascoe  <j_pascoe@apple.com>

        [ iOS 15 ] imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html is flaky timing out
        https://bugs.webkit.org/show_bug.cgi?id=231544
        rdar://problem/84122086

        Reviewed by Brent Fulgham.

        Remove timeout expectation.

        * platform/ios-wk2/TestExpectations:

2022-04-04  Tim Nguyen  <ntim@apple.com>

        Conditionally inject <attachment> styles based on runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=238739

        Reviewed by Tim Horton.

        Update test expectations, now that display is no longer forced to inline-block by appearance, and now that
        color is no longer unconditionally set on iOS to -apple-system-blue.

        * fast/attachment/attachment-disabled-rendering-expected.txt:
        * fast/attachment/attachment-disabled-rendering.html:
        * platform/ios/fast/attachment/attachment-disabled-rendering-expected.txt: Removed.
        * platform/mac/fast/attachment/attachment-disabled-rendering-expected.png:
        * platform/win/fast/attachment/attachment-disabled-rendering-expected.txt: Removed.
        * platform/wpe/fast/attachment/attachment-disabled-rendering-expected.txt: Removed.

2022-04-04  Youenn Fablet  <youenn@apple.com>

        Service-Worker-Navigation-Preload header not being sent when Navigation Preload is enabled.
        https://bugs.webkit.org/show_bug.cgi?id=238564

        Reviewed by Alex Christensen.

        * http/wpt/service-workers/resources/service-worker-iframe-preload-after-response-script.py: Added.
        * http/wpt/service-workers/service-worker-iframe-preload-after-response-worker.js: Added.
        * http/wpt/service-workers/service-worker-iframe-preload-after-response.https-expected.txt: Added.
        * http/wpt/service-workers/service-worker-iframe-preload-after-response.https.html: Added.

2022-04-04  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] [iOS] Sometimes the text drop shadow is not drawn
        https://bugs.webkit.org/show_bug.cgi?id=236923
        rdar://89196794

        Reviewed by Simon Fraser.

        Unskip failed the text drop shadow layout test.

        * platform/ios-wk2/TestExpectations:

2022-04-04  Cathie Chen  <cathiechen@igalia.com>

        REGRESSION(r291797): [wk1] 5 contain-intrinsic-size* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238584

        Reviewed by Simon Fraser.

        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-031-expected.txt: Removed.
        * platform/mac-wk1/imported/w3c/web-platform-tests/resize-observer/change-layout-in-error-expected.txt: Removed.

2022-04-04  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Unskip the first few passing WebGPU tests
        https://bugs.webkit.org/show_bug.cgi?id=238709

        Reviewed by Tim Nguyen.

        The tests pass, so they shouldn't be marked as skip.

        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-04-02  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Automatically relayout the page when new fonts are installed
        https://bugs.webkit.org/show_bug.cgi?id=238483
        <rdar://problem/80544133>

        Reviewed by Chris Dumez.

        * TestExpectations:
        * fast/text/install-font-style-recalc-expected.txt: Added.
        * fast/text/install-font-style-recalc.html: Added.
        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-04-02  Alan Bujtas  <zalan@apple.com>

        [Ruby] Remove incorrect implicit integral floor in RenderRubyText::adjustInlineDirectionLineBounds
        https://bugs.webkit.org/show_bug.cgi?id=238671

        Reviewed by Simon Fraser.

        * TestExpectations:
        * fast/ruby/bopomofo-mixed-expected.txt:
        * platform/mac/fast/css/bidi-override-in-anonymous-block-expected.txt:
        * platform/mac/fast/ruby/bopomofo-expected.txt:
        * platform/mac/fast/ruby/bopomofo-letter-spacing-expected.txt:
        * platform/mac/fast/ruby/bopomofo-rl-expected.txt:
        * platform/mac/fast/ruby/ruby-run-break-expected.txt:
        * platform/mac/fast/ruby/ruby-runs-expected.txt:
        * platform/mac/fast/ruby/ruby-runs-spans-expected.txt:
        * platform/mac/fast/ruby/ruby-text-before-after-content-expected.txt:
        * platform/mac/fast/ruby/rubyDOM-insert-rt-expected.txt:
        * platform/mac/fast/ruby/rubyDOM-insert-text1-expected.txt:

2022-04-02  Ziran Sun  <zsun@igalia.com>

        [css-ui] Only apply 'overflow:visible' to elements that support menulist appearance
        https://bugs.webkit.org/show_bug.cgi?id=238501

        Reviewed by Tim Nguyen.

        Unskip the tests that are now passing. 
        * TestExpectations:

2022-04-02  Youenn Fablet  <youenn@apple.com>

        Remove notifications from notification list when notification gets closed
        https://bugs.webkit.org/show_bug.cgi?id=238665

        Reviewed by Darin Adler.

        * http/tests/workers/service/getnotifications-stop-expected.txt: Added.
        * http/tests/workers/service/getnotifications-stop.html: Added.
        * http/tests/workers/service/resources/getNotifications-iframe.html: Added.

2022-04-01  Alan Bujtas  <zalan@apple.com>

        [CSS-contain] Update select element failures with bugzilla link.

        Unreviewed.

        * TestExpectations:

2022-04-01  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * platform/ios-wk2/TestExpectations: Forms test was flaky before turning GPUP on by default,
        move it out of the section of GPUP-specific failures. Update WebGL failure with bugzilla link.

2022-04-01  Ryan Haddad  <ryanhaddad@apple.com>

        REGRESSION(r292072): [ Mac iOS ] http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238580

        Unreviewed test gardening.

        Remove expectations as cause has been reverted.

        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-04-01  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r292072.
        https://bugs.webkit.org/show_bug.cgi?id=238690

        Caused webAPIStatistics test failures

        Reverted changeset:

        "[Cocoa] Automatically relayout the page when new fonts are
        installed"
        https://bugs.webkit.org/show_bug.cgi?id=238483
        https://commits.webkit.org/r292072

2022-04-01  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290822?): [ wk1 ] storage/websql/change-version.html is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=238689

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-04-01  Yusuke Suzuki  <ysuzuki@apple.com>

        Change one-shot maxTimerNestingLevel from 5 to 10
        https://bugs.webkit.org/show_bug.cgi?id=237168

        Reviewed by Sam Weinig, Saam Barati, and Cameron McCormack .

        * fast/dom/timer-increase-min-interval.html:
        * fast/dom/timer-throttling-hidden-page-expected.txt:
        * fast/dom/timer-throttling-hidden-page.html:

2022-04-01  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        This is based on auditing the failing tests cited after turning DOM in GPUP on by default.
        * TestExpectations: One test was flaky on the bots before we turned on the flag.
        * platform/ios-simulator-wk2/TestExpectations: Some tests have fail/pass results only when the iOS sim is on an arm64 host.
        * platform/ios-wk2/TestExpectations: Lots of tests no longer fail.
        * platform/ios/TestExpectations:

2022-04-01  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r292072): [ wk1 ] fast/text/install-font-style-recalc.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238641

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-01  Ben Nham  <nham@apple.com>

        Add more push-related logging
        https://bugs.webkit.org/show_bug.cgi?id=238591

        Reviewed by Youenn Fablet.

        Modify test cases to check for user gesture error console message.

        * http/tests/push-api/subscribe-default-permissions-expected.txt:
        * http/tests/push-api/subscribe-default-permissions-iframe-same-origin-expected.txt:
        * http/tests/push-api/subscribe-deny-permissions-on-prompt-expected.txt:

2022-04-01  Kate Cheney  <katherine_cheney@apple.com>

        CSP: WASM fails to execute after window.open
        https://bugs.webkit.org/show_bug.cgi?id=238562
        <rdar://problem/90778752>

        Reviewed by Brent Fulgham.

        Layout test coverage. Copy some wasm helper scripts into the http directory.

        * platform/win/TestExpectations:
        We don't support wasm on win.        

        * http/tests/security/contentSecurityPolicy/allow-wasm-after-window-open-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/allow-wasm-after-window-open.html: Added.
        * http/tests/security/contentSecurityPolicy/resources/load_wasm.js: Added.
        (createWasmModule):
        * http/tests/security/contentSecurityPolicy/resources/run-web-assembly.html: Added.
        * http/tests/security/contentSecurityPolicy/resources/wasm-builder.js: Added.
        (const._fail):
        (const.isNotA.assert.isNotA):
        (const):
        (switch.typeof):
        (Builder):
        (Builder.prototype.setChecked):
        (Builder.prototype.setPreamble):
        (Builder.prototype._functionIndexSpaceKeyHash):
        (Builder.prototype._registerFunctionToIndexSpace):
        (Builder.prototype._getFunctionFromIndexSpace):
        (Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
        (Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.const.codeBuilder.End.switch.case.string_appeared_here.e):
        (Builder.prototype._registerSectionBuilders.this.Unknown):

2022-04-01  Alan Bujtas  <zalan@apple.com>

        [Ruby] Statically positioned out-of-flow block boxes are mispositioned
        https://bugs.webkit.org/show_bug.cgi?id=238653

        Reviewed by Antti Koivisto.

        * TestExpectations:
        * fast/ruby/ruby-with-out-of-flow-base-content-expected.html: Added.
        * fast/ruby/ruby-with-out-of-flow-base-content.html: Added.

2022-04-01  Ryan Haddad  <ryanhaddad@apple.com>

        REGRESSION(r292072): [ Mac iOS ] http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238580

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-04-01  Tim Nguyen  <ntim@apple.com>

        [css-logical] Add support for block/inline CSS values for resize property
        https://bugs.webkit.org/show_bug.cgi?id=218088

        Reviewed by Antti Koivisto.

        Add tests for functionality.

        * fast/css/resize-single-axis-expected.txt:
        * fast/css/resize-single-axis.html:

2022-04-01  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerRegistration.getNotifications should list all persistent notifications
        https://bugs.webkit.org/show_bug.cgi?id=238544

        Reviewed by Darin Adler.

        * http/tests/workers/service/getnotifications-expected.txt:
        * http/tests/workers/service/getnotifications.html:

2022-04-01  Youenn Fablet  <youenn@apple.com>

        Notification should be exposed to ServiceWorker contexts
        https://bugs.webkit.org/show_bug.cgi?id=238548

        Reviewed by Chris Dumez.

        * http/tests/workers/service/resources/shownotification-worker.js:

2022-04-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add support for element.computedStyleMap()
        https://bugs.webkit.org/show_bug.cgi?id=238375

        Reviewed by Alex Christensen.

        Update test expectations.

        * platform/glib/imported/w3c/web-platform-tests/css/css-color/system-color-compute-expected.txt:
        * platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt: Removed.
        * platform/ios/imported/w3c/web-platform-tests/css/css-color/system-color-compute-expected.txt:

2022-04-01  Youenn Fablet  <youenn@apple.com>

        Persistent notifications should work in document scopes as well as service worker global scopes
        https://bugs.webkit.org/show_bug.cgi?id=238601

        Reviewed by Brady Eidson.

        * http/tests/workers/service/shownotification-allowed-document-expected.txt: Added.
        * http/tests/workers/service/shownotification-allowed-document.html: Added.

2022-03-31  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] [iOS] Vertical text is incorrectly displaced
        https://bugs.webkit.org/show_bug.cgi?id=232917
        rdar://85483031

        Reviewed by Myles C. Maxfield.

        Unskip failed vertical text layout tests.

        * platform/ios-wk2/TestExpectations:

2022-03-31  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Unreviewed test gardening

        * platform/wincairo-wk1/TestExpectations:
        * platform/wincairo/TestExpectations:

2022-03-31  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r292127): [ BigSur+ wk1 ] imported/w3c/web-platform-tests/css/css-contain/contain-body-overflow-002.html is a constant image failure
        https://bugs.webkit.org/show_bug.cgi?id=238642

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-03-31  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] [iOS] Text decoration is always drawn with solid stroke style
        https://bugs.webkit.org/show_bug.cgi?id=236909
        rdar://89196615

        Reviewed by Simon Fraser.

        Unskip failed text decoration layout tests.

        * platform/ios-wk2/TestExpectations:

2022-03-31  Jon Lee  <jonlee@apple.com>

        Unreviewed test gardening.

        We had some confusing test expectations as a result of iPad-unique failures. Move those failures into
        ipad/TestExpectations and leave ios* TestExpectation clear.
        * platform/ios-simulator/TestExpectations:
        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations: Additional test progressions.
        * platform/ipad/TestExpectations:
        * platform/mac-wk2/TestExpectations: Be more specific in related test failures on Mac.

2022-03-31  Patrick Angle  <pangle@apple.com>

        Web Inspector: Support Container Queries in the Styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=238346

        Reviewed by Devin Rousso.

        * inspector/css/getMatchedStylesForNodeContainerGrouping-expected.txt: Added.
        * inspector/css/getMatchedStylesForNodeContainerGrouping.html: Added.

2022-03-31  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r292051-r292022): [ iOS ] media/video-object-fit.html is a constant image failure
        https://bugs.webkit.org/show_bug.cgi?id=238634

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-31  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r292072): [ Mac iOS ] http/tests/webAPIStatistics/canvas-read-and-write-data-collection.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238580

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-31  Devin Rousso  <drousso@apple.com>

        REGRESSION(r292107): [ Mac iOS ] http/tests/paymentrequest/updateWith-shippingOptions.https.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238581
        <rdar://problem/91074265>

        Unreviewed, adjust test results. This test is expected to fail pre macOS 12.3 and iOS 15.4.

        * http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt:

2022-03-31  Ben Nham  <nham@apple.com>

        Remove push subscriptions when permissions are reset
        https://bugs.webkit.org/show_bug.cgi?id=238068

        Reviewed by Youenn Fablet.

        Fix an issue with a layout test that didn't register for notification permissions.

        * http/wpt/service-workers/service-worker-spinning-push.https.html:

2022-03-31  Alan Bujtas  <zalan@apple.com>

        [CSS contain] Containment disables the special handling of the HTML body element for overflow viewport propagation [part2]
        https://bugs.webkit.org/show_bug.cgi?id=238572

        Reviewed by Simon Fraser.

        * TestExpectations: Progressions.

2022-03-31  Tim Nguyen  <ntim@apple.com>

        [iOS] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/default-color.html is a constant failure
        https://bugs.webkit.org/show_bug.cgi?id=238599

        Unreviewed test gardening.

        iOS has no dark mode support.

        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/default-color-expected.txt: Added.

2022-03-30  Alan Bujtas  <zalan@apple.com>

        Add explanation as to why contain-size-button-001.html/002.html WPT tests fail.

        Unreviewed.

        * TestExpectations:

2022-03-30  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Link WebCore with WebGPU.framework 🎉
        https://bugs.webkit.org/show_bug.cgi?id=236751

        Reviewed by Dean Jackson.

        Once we enable WebGPU, the WebGPU tests will start crashing all over the place.
        Let's temporarily mark them as skip until the crashing stops.

        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/mac-wk1/TestExpectations:

2022-03-30  Kate Cheney  <katherine_cheney@apple.com>

        Migrate manifest version content security policy filtering for extensions into WebKit
        https://bugs.webkit.org/show_bug.cgi?id=238230
        <rdar://problem/60081492>

        Reviewed by Timothy Hatcher.

        Layout test coverage. We don’t allow loading of hosts
        other than localhost and 127.0.0.1 in our test infrastructure,
        so that made it difficult to write a test for remote sources
        being blocked in manifest V3, and for blocked TLDs with wildcards
        for manifest v2. We have existing unit test coverage for our isPublicSuffix
        function.

        * TestExpectations:
        * platform/wk2/TestExpectations:
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-blob-scheme-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-blob-scheme-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-insecure-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-insecure-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-missing-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-missing-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-scheme-only-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-scheme-only.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-unsafe-eval-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-unsafe-eval-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-unsafe-inline-blocked-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-unsafe-inline-blocked.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-wildcard-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-wildcard-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-wildcard-prohibited-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/default-src/manifest-v2-default-src-wildcard-prohibited.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-host-only-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-host-only-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-scheme-only-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-scheme-only-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-wildcard-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/img-src/manifest-v2-img-src-wildcard-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-blob-scheme-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-blob-scheme-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-hash-source-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-hash-source-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-insecure-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-insecure-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-missing-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-missing-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-scheme-only-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-scheme-only.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-unsafe-eval-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-unsafe-eval-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-unsafe-inline-blocked-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-unsafe-inline-blocked.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-wildcard-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-wildcard-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-wildcard-blocked-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v2/script-src/manifest-v2-script-src-wildcard-blocked.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-block-non-https-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-block-non-https-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-block-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-block-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-can-load-insecure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-can-load-insecure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-can-load-secure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-can-load-secure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-self-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/default-src/manifest-v3-default-src-self.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-host-only-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-host-only-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-scheme-only-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-scheme-only-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-wildcard-allowed-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/img-src/manifest-v3-img-src-wildcard-allowed.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-non-https-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-non-https-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-partial-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-partial-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-block-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-can-load-insecure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-can-load-insecure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-can-load-secure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-can-load-secure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-self-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/object-src/manifest-v3-object-src-self.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/resources/check-style.js: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/resources/load-blob.js: Added.
        (script.onload):
        (script.onerror):
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-non-https-scheme-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-non-https-scheme.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-partial-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-partial-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-block-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-blockes-nonces-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-blockes-nonces.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-blocks-hashes-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-blocks-hashes.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-can-load-insecure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-can-load-insecure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-can-load-secure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-can-load-secure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-self-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/script-src/manifest-v3-script-src-self.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/style-src/manifest-v3-style-src-allows-keywords-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/style-src/manifest-v3-style-src-allows-keywords.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-block-partial-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-block-partial-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-block-wildcard-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-block-wildcard.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-can-load-insecure-loopback-ip-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-can-load-insecure-loopback-ip.html: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-self-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/extensions/manifest-v3/worker-src/manifest-v3-worker-src-self.html: Added.

2022-03-30  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r291797): [ wk1 ] 5 imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size* tests are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=238584

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-03-30  Matteo Flores  <matteo_flores@apple.com>

        [ Mac , iOS Debug ] imported/w3c/web-platform-tests/html/cross-origin-opener-policy/resource-popup.https.html is a flaky failure.
        https://bugs.webkit.org/show_bug.cgi?id=228127

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-03-30  Alan Bujtas  <zalan@apple.com>

        [CSS contain] Containment disables the special handling of the HTML body element for overflow viewport propagation.
        https://bugs.webkit.org/show_bug.cgi?id=238526

        Reviewed by Simon Fraser.

        * TestExpectations:
        * fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping-expected.html:
        * fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping.html:

2022-03-30  Youenn Fablet  <youenn@apple.com>

        Implement persistent notification handling
        https://bugs.webkit.org/show_bug.cgi?id=238498

        Reviewed by Brady Eidson.

        * http/tests/workers/service/shownotification-allowed.html:

2022-03-30  Devin Rousso  <drousso@apple.com>

        Unreviewed, fix test after r285521 and r271735

        * http/tests/paymentrequest/updateWith-shippingOptions.https.html:
        Remove a duplicate `assert_equals` added in r271735 (which should've been removed in r285521).
        Drive-by: Also check that the `selected` of each provided shipping method/option matches.

2022-03-30  Youenn Fablet  <youenn@apple.com>

        Implement ServiceWorker WindowClient.ancestorOrigins
        https://bugs.webkit.org/show_bug.cgi?id=238441

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/resources/third-party-worker.js:
        * http/wpt/service-workers/third-party-registration.html:

2022-03-29  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Unreviewed test gardening

        * platform/wincairo-wk1/TestExpectations:
        * platform/wincairo/TestExpectations:
        * platform/wincairo/fast/text/softHyphen-expected.txt: Removed.

2022-03-29  Tyler Wilcock  <tyler_w@apple.com>

        AX: Don't detach children in AXIsolatedTree::applyPendingChanges for nodes being updated (removed and added)
        https://bugs.webkit.org/show_bug.cgi?id=238460

        Reviewed by Chris Fleizach and Andres Gonzalez.

        * accessibility/search-traversal-after-role-change-expected.txt: Added.
        * accessibility/search-traversal-after-role-change.html: Added.
        * platform/glib/TestExpectations: Skip new test.
        * platform/ios/TestExpectations: Enable new test.
        * platform/ios/accessibility/search-traversal-after-role-change-expected.txt: Added.
        * platform/win/TestExpectations: Skip new test.

2022-03-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: Sources: allow Response Local Overrides to map to a file on disk
        https://bugs.webkit.org/show_bug.cgi?id=238236
        <rdar://problem/59009154>

        Reviewed by Patrick Angle.

        * http/tests/inspector/network/local-resource-override-mapped-to-file.html: Added.
        * http/tests/inspector/network/local-resource-override-mapped-to-file-expected.txt: Added.

        * TestExpectations:
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        Skip this test everywhere except mac-wk2.

2022-03-29  Matt Woodrow  <mattwoodrow@apple.com>

        Don't mutate children during RenderGrid::computeIntrinsicLogicalWidths unless we're about to re-layout.
        https://bugs.webkit.org/show_bug.cgi?id=237732

        Reviewed by Dean Jackson.

        Don't mutate children during computeIntrinsicWidth

        * TestExpectations:
        * fast/css-grid-layout/compute-intrinsic-logical-widths-should-not-mutate-children-expected.html: Added.
        * fast/css-grid-layout/compute-intrinsic-logical-widths-should-not-mutate-children.html: Added.
        * platform/ios/TestExpectations:

        Marked existing WPT as passing on MacOS (since we run layout multiple times there).
        Added new test for this implementation-specific bug.

2022-03-29  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Automatically relayout the page when new fonts are installed
        https://bugs.webkit.org/show_bug.cgi?id=238483
        <rdar://problem/80544133>

        Reviewed by Chris Dumez.

        * fast/text/install-font-style-recalc-expected.txt: Added.
        * fast/text/install-font-style-recalc.html: Added.

2022-03-29  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update test expectations and baselines. Unreviewed test gardening.
        https://bugs.webkit.org/show_bug.cgi?id=238506

        * platform/glib/TestExpectations:
        * platform/glib/css2.1/t0505-c16-descendant-01-e-expected.txt:
        * platform/glib/fast/lists/002-expected.txt:
        * platform/gtk/css1/box_properties/margin_right-expected.txt:
        * platform/gtk/css1/box_properties/padding_right-expected.txt:
        * platform/gtk/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
        * platform/gtk/fast/inline/emptyInlinesWithinLists-expected.txt:
        * platform/gtk/fast/lists/003-expected.txt:
        * platform/wpe/css1/box_properties/margin_right-expected.txt:
        * platform/wpe/css1/box_properties/padding_right-expected.txt:
        * platform/wpe/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
        * platform/wpe/fast/inline/emptyInlinesWithinLists-expected.txt:
        * platform/wpe/fast/lists/003-expected.txt:

2022-03-29  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290898?): [ iOS ] animations/shadow-host-child-change.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=238519

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-29  Fujii Hironori  <Hironori.Fujii@sony.com>

        drop-shadow filter doesn't work correctly in tiled backing layer
        https://bugs.webkit.org/show_bug.cgi?id=236800
        <rdar://problem/89382612>

        Reviewed by Simon Fraser.

        * css3/filters/drop-shadow-in-tiled-backing-expected.html: Added.
        * css3/filters/drop-shadow-in-tiled-backing.html: Added.
        * platform/ios-wk2/TestExpectations:

2022-03-29  Matteo Flores  <matteo_flores@apple.com>

        [ iOS Mac ] imported/w3c/web-platform-tests/fetch/metadata/download.https.sub.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238469

        Unreviewed test gardening.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-29  Eric Carlson  <eric.carlson@apple.com>

        [macOS] Muted video is sometimes paused when entering fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=238462
        rdar://89104216

        Reviewed by Jer Noble.

        * media/fullscreen-when-muted-expected.txt: Added.
        * media/fullscreen-when-muted.html: Added.

2022-03-29  Antti Koivisto  <antti@apple.com>

        [CSS Container Queries] Support CSSOM
        https://bugs.webkit.org/show_bug.cgi?id=238500

        Reviewed by Simon Fraser.

        * TestExpectations:

2022-03-29  Sam Sneddon  <gsnedders@apple.com>

        Re-import web-platform-tests/css/css-conditional
        https://bugs.webkit.org/show_bug.cgi?id=237896

        Reviewed by Tim Nguyen.

        This used to be web-platform-tests/css/conditional, so this also
        combines the rename, but is ultimately this is just an update.

        * TestExpectations:

2022-03-29  Alan Bujtas  <zalan@apple.com>

        Make fast/repaint/list-item-equal-style-change-no-repaint.html less prone to flakiness
        https://bugs.webkit.org/show_bug.cgi?id=238480

        Reviewed by Simon Fraser.
        
        Use Internals::layoutCount to check whether animation triggers layout.

        * fast/repaint/list-item-equal-style-change-no-repaint-expected.txt:
        * fast/repaint/list-item-equal-style-change-no-repaint.html:

2022-03-29  Tim Nguyen  <ntim@apple.com>

        Re-import inert and <dialog> WPT
        https://bugs.webkit.org/show_bug.cgi?id=238502

        Reviewed by Antti Koivisto.

        Upstream commit: https://github.com/web-platform-tests/wpt/commit/46e50fc357127c76c898675cd30ae34090a2268d

        Main changes:
        - Removes .tentative.html suffix from inert tests
        - Adds default-color.html test for <dialog>

        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest-expected.txt: Renamed from LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt.
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing-expected.txt: Renamed from LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt.
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-node-is-uneditable-expected.txt: Renamed from LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-node-is-uneditable.tentative-expected.txt.
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-svg-hittest-expected.txt: Renamed from LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-svg-hittest.tentative-expected.txt.

2022-03-28  Alan Bujtas  <zalan@apple.com>

        [ macOS & Win ] fast/repaint/list-item-equal-style-change-no-repaint.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=215723
        <rdar://problem/67520729>

        Reviewed by Simon Fraser.

        * platform/mac/TestExpectations:

2022-03-28  Lauro Moura  <lmoura@igalia.com>

        [AT-SPI] accessibility/native-text-control-attributed-string.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=237821

        Reviewed by Carlos Garcia Campos.

        * platform/gtk/TestExpectations:
        * platform/gtk/accessibility/native-text-control-attributed-string-expected.txt: Added.
        * platform/wpe/TestExpectations:

2022-03-28  Matteo Flores  <matteo_flores@apple.com>

        [ iPadOS ] 3 svg/filters/* tests are constant image failures
        https://bugs.webkit.org/show_bug.cgi?id=237689

        Unreviewed test gardening.

        * platform/ipad/TestExpectations:

2022-03-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r290794): [ iOS Debug ] 4 editing/selection/* tests are constant timeouts
        https://bugs.webkit.org/show_bug.cgi?id=238155
        rdar://90593957

        Reviewed by Aditya Keerthi.

        Unmark several tests that no longer need to be marked as [ Slow ].

        * platform/ios/TestExpectations:

2022-03-28  Cameron McCormack  <heycam@apple.com>

        Remove the 1ms minimum for setTimeout
        https://bugs.webkit.org/show_bug.cgi?id=221124
        <rdar://problem/73852354>

        Reviewed by Sam Weinig.

        * TestExpectations: Disable console output in some worker tests where
        the reduced timeout would cause intemittent failures due to the
        console message sometimes not making it to the test output in time.
        * js/script-tests/weakref-finalizationregistry.js:
        (turnEventLoop): Use a timeout of 1ms instead of 0ms so that
        the deferred work task that calls the JS FinalizationRegistry
        callback gets a chance to run before we continue on to the
        assertion that it was run.

2022-03-28  Antti Koivisto  <antti@apple.com>

        [CSS Container Queries] Another WPT import
        https://bugs.webkit.org/show_bug.cgi?id=238459

        Reviewed by Tim Nguyen.

        * TestExpectations:

2022-03-28  Kate Cheney  <katherine_cheney@apple.com>

        REGRESSION (r291587): [ iOS ] editing/deleting/insert-in-orphaned-selection-crash.html is a constant text failure (238282)
        https://bugs.webkit.org/show_bug.cgi?id=238282
        <rdar://problem/90720306>

        Reviewed by Aditya Keerthi.

        In r291587 we started dropping native appearance for non-form control elements with
        specified author style. This is the correct behavior, but requires adjusting this
        test which relies on the appearance of a table element in order to reproduce a
        non-appearance related crash. This patch updates the test to add table data tags which
        ensure the table element gets included in the selectAll() command to keep the test passing.

        * editing/deleting/insert-in-orphaned-selection-crash.html:
        * platform/ios-wk2/TestExpectations:

2022-03-28  Brady Eidson  <beidson@apple.com>

        Support ServiceWorkerClients.openWindow.
        <rdar://90616651> and https://bugs.webkit.org/show_bug.cgi?id=238400

        Reviewed by Youenn Fablet.

        WKTR knows how to openWindow() now.
        
        So test:
        - The success case
        - Failure due to a disallowed URL
        - Failure due to a lack of a related user gesture.
        
        * http/tests/workers/service/openwindow-from-notification-click-expected.txt: Added.
        * http/tests/workers/service/openwindow-from-notification-click.html: Added.
        * http/tests/workers/service/resources/openwindow-client.html: Added.
        * http/tests/workers/service/resources/shownotification-openwindow-worker.js: Added.
        (async const):
        (let.messageClients):
        (clients.openWindow.string_appeared_here.then.async client):
        (catch.async error):
        (async event):
        (async tryShow):
        (async getNotes):
        * platform/gtk/TestExpectations:

2022-03-28  Ziran Sun  <zsun@igalia.com>

        [Forms] Alias appearance <compat-auto> keywords to 'auto' for button
        https://bugs.webkit.org/show_bug.cgi?id=238252

        Reviewed by Darin Adler.

        Unskip the tests that are now passing.
        -webkit-appearance: square-button doesnt work for ::-webkit-file-upload-button any more.
        Replace it with -webkit-appearance: none in fast/forms/file/file-style-inheritance.html.
        This is also in line with the change in Chromium.
        * TestExpectations:
        * fast/forms/file/file-style-inheritance.html:

2022-03-28  Cameron McCormack  <heycam@apple.com>

        Remove pending UA shadow tree state when an input element is removed from the document
        https://bugs.webkit.org/show_bug.cgi?id=238429
        <rdar://90682918>

        Reviewed by Antti Koivisto.

        * fast/forms/lazy-shadow-tree-creation-move-document-crash-expected.txt: Added.
        * fast/forms/lazy-shadow-tree-creation-move-document-crash.html: Added.

2022-03-27  Matt Woodrow  <mattwoodrow@apple.com>

        Preserve repeat() notation for grid-templates
        https://bugs.webkit.org/show_bug.cgi?id=202259

        Reviewed by Dean Jackson.

        * fast/css-grid-layout/grid-repeat-calc-expected.txt:
        * fast/css-grid-layout/grid-repeat-calc.html:
        * fast/css-grid-layout/non-grid-element-repeat-get-set-expected.txt:
        * fast/css-grid-layout/non-grid-element-repeat-get-set.html:

        Update expected results to use repeat() notation.

2022-03-27  Matt Woodrow  <mattwoodrow@apple.com>

        Use the sizing algorithm's available size to compute grid gap.
        https://bugs.webkit.org/show_bug.cgi?id=236956

        Reviewed by Tim Nguyen.

        * TestExpectations:

        Existing subgrid tests marked as passing.

2022-03-27  Matt Woodrow  <mattwoodrow@apple.com>

        Lazily allocate backing store for grid columns.
        https://bugs.webkit.org/show_bug.cgi?id=212201

        Reviewed by Dean Jackson.

        * TestExpectations:

        Remove skip annotation for test grid-limits-001 that now passes.

2022-03-27  Alan Bujtas  <zalan@apple.com>

        [LFC][IFC] ASSERTs in BoxGeometry when loading Twitter page
        https://bugs.webkit.org/show_bug.cgi?id=238421
        <rdar://89980547>

        Reviewed by Antti Koivisto.

        * fast/inline/trailing-empty-bidi-inline-box-expected.txt: Added.
        * fast/inline/trailing-empty-bidi-inline-box.html: Added.

2022-03-27  Alexander Mikhaylenko  <alexm@gnome.org>

        [GTK][WPE] Support CSS accent-color
        https://bugs.webkit.org/show_bug.cgi?id=238398

        Reviewed by Carlos Garcia Campos.

        * platform/gtk/TestExpectations: Enable accent-color tests for GTK.

2022-03-26  Noam Rosenthal  <noam@webkit.org>

        Import clip-path W3C tests
        https://bugs.webkit.org/show_bug.cgi?id=238373

        Reviewed by Tim Nguyen.

        Updated expectations for newly imported failing clip-path tests.

        * TestExpectations:

2022-03-26  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Import WebGPU Conformance Test Suite
        https://bugs.webkit.org/show_bug.cgi?id=238123

        Reviewed by Dean Jackson.

        This patch imports the WebGPU Conformance Test Suite, from https://github.com/gpuweb/cts, as of
        git commit 09f024e50e84f191ee4546ef4021707faa376096. Rather than the CTS having a bunch of HTML
        files, one for each test, the CTS instead has a single HTML file which takes a query parameter
        which describes the name of a test to run. Therefore, in order to make it work with our test
        infrastructure (which requires a bunch of HTML files), we create a bunch of HTML files which just
        redirect to the CTS test runner, accompanied by the relevant query parameter. There is a script
        in Tools/Scripts which copies the contents of the CTS and generates these HTML files.

        The WebGPU Conformance Test Suite:
        1. Is disabled by default
        2. Is enabled on macOS and iOS
        3. Is disabled on macOS-WK2 and iOS-WK2 (because of https://bugs.webkit.org/show_bug.cgi?id=233621)
        4. Each test individually fails, because we're still implementing our WebGPU implementation, so each test
               is individually marked as [ Pass Failure ImageOnlyFailure Timeout ].

        * TestExpectations:
        * http/tests/webgpu/common/framework/fixture.js: Added.
        (export.SkipTestCase):
        (export.UnexpectedPassError):
        (export.Fixture):
        (export.Fixture.prototype.get params):
        (export.Fixture.prototype.async init):
        (export.Fixture.prototype.async finalize):
        (export.Fixture.prototype.doInit):
        (export.Fixture.prototype.doFinalize):
        (export.Fixture.prototype.trackForCleanup):
        (export.Fixture.prototype.tryTrackForCleanup):
        (export.Fixture.prototype.debug):
        (export.Fixture.prototype.skip):
        (export.Fixture.prototype.warn):
        (export.Fixture.prototype.fail):
        (export.Fixture.prototype.async immediateAsyncExpectation):
        (export.Fixture.prototype.eventualAsyncExpectation):
        (export.Fixture.prototype.expectErrorValue):
        (export.Fixture.prototype.shouldResolve):
        (export.Fixture.prototype.async shouldReject):
        (export.Fixture.prototype.async shouldThrow):
        (export.Fixture.prototype.expect):
        (export.Fixture.prototype.expectOK):
        * http/tests/webgpu/common/framework/fixture.js.map: Added.
        * http/tests/webgpu/common/framework/params_builder.js: Added.
        (export.ParamsBuilderBase):
        (export.builderIterateCasesWithSubcases):
        (export.CaseParamsBuilder.prototype.iterateCasesWithSubcases):
        (export.CaseParamsBuilder.prototype.Symbol.iterator):
        (export.CaseParamsBuilder.prototype.expandWithParams):
        (export.CaseParamsBuilder.prototype.expand):
        (export.CaseParamsBuilder.prototype.combineWithParams):
        (export.CaseParamsBuilder.prototype.combine):
        (export.CaseParamsBuilder.prototype.filter):
        (export.CaseParamsBuilder.prototype.unless):
        (export.CaseParamsBuilder.prototype.beginSubcases):
        (export.CaseParamsBuilder):
        (export.const.kUnitCaseParamsBuilder.new.CaseParamsBuilder):
        (export.SubcaseParamsBuilder):
        (export.SubcaseParamsBuilder.prototype.iterateCasesWithSubcases):
        (export.SubcaseParamsBuilder.prototype.expandWithParams):
        (export.SubcaseParamsBuilder.prototype.expand):
        (export.SubcaseParamsBuilder.prototype.combineWithParams):
        (export.SubcaseParamsBuilder.prototype.combine):
        (export.SubcaseParamsBuilder.prototype.filter):
        (export.SubcaseParamsBuilder.prototype.unless):
        (filterGenerator):
        * http/tests/webgpu/common/framework/params_builder.js.map: Added.
        * http/tests/webgpu/common/framework/resources.js: Added.
        (export.getResourcePath):
        (export.setBaseResourcePath):
        * http/tests/webgpu/common/framework/resources.js.map: Added.
        * http/tests/webgpu/common/framework/test_group.js: Added.
        * http/tests/webgpu/common/framework/test_group.js.map: Added.
        * http/tests/webgpu/common/internal/file_loader.js: Added.
        (export.TestFileLoader.prototype.importSpecFile):
        (export.TestFileLoader.prototype.async loadTree):
        (export.TestFileLoader.prototype.async loadCases):
        (export.TestFileLoader):
        (export.DefaultTestFileLoader.prototype.async listing):
        (export.DefaultTestFileLoader.prototype.import):
        (export.DefaultTestFileLoader):
        * http/tests/webgpu/common/internal/file_loader.js.map: Added.
        * http/tests/webgpu/common/internal/logging/log_message.js: Added.
        (export.LogMessageWithStack):
        (export.LogMessageWithStack.prototype.setStackHidden):
        (export.LogMessageWithStack.prototype.toJSON):
        (export.prettyPrintLog):
        * http/tests/webgpu/common/internal/logging/log_message.js.map: Added.
        * http/tests/webgpu/common/internal/logging/logger.js: Added.
        (export.Logger):
        (export.Logger.prototype.record):
        (export.Logger.prototype.asJSON):
        * http/tests/webgpu/common/internal/logging/logger.js.map: Added.
        * http/tests/webgpu/common/internal/logging/result.js: Added.
        * http/tests/webgpu/common/internal/logging/result.js.map: Added.
        * http/tests/webgpu/common/internal/logging/test_case_recorder.js: Added.
        (export.TestCaseRecorder):
        (export.TestCaseRecorder.prototype.start):
        (export.TestCaseRecorder.prototype.finish):
        (export.TestCaseRecorder.prototype.beginSubCase):
        (export.TestCaseRecorder.prototype.endSubCase):
        (export.TestCaseRecorder.prototype.injectResult):
        (export.TestCaseRecorder.prototype.debug):
        (export.TestCaseRecorder.prototype.info):
        (export.TestCaseRecorder.prototype.skipped):
        (export.TestCaseRecorder.prototype.warn):
        (export.TestCaseRecorder.prototype.expectationFailed):
        (export.TestCaseRecorder.prototype.validationFailed):
        (export.TestCaseRecorder.prototype.threw):
        (export.TestCaseRecorder.prototype.logImpl):
        * http/tests/webgpu/common/internal/logging/test_case_recorder.js.map: Added.
        * http/tests/webgpu/common/internal/params_utils.js: Added.
        (export.paramKeyIsPublic):
        (export.extractPublicParams):
        (export.publicParamsEquals):
        (typeAssert):
        (export.mergeParams):
        * http/tests/webgpu/common/internal/params_utils.js.map: Added.
        * http/tests/webgpu/common/internal/query/compare.js: Added.
        (export.compareQueries):
        (compareOneLevel):
        (comparePaths):
        (export.comparePublicParamsPaths):
        * http/tests/webgpu/common/internal/query/compare.js.map: Added.
        * http/tests/webgpu/common/internal/query/encode_selectively.js: Added.
        (export.encodeURIComponentSelectively):
        * http/tests/webgpu/common/internal/query/encode_selectively.js.map: Added.
        * http/tests/webgpu/common/internal/query/json_param_value.js: Added.
        (stringifyFilter):
        (export.stringifyParamValue):
        (export.stringifyParamValueUniquely):
        (export.parseParamValue):
        * http/tests/webgpu/common/internal/query/json_param_value.js.map: Added.
        * http/tests/webgpu/common/internal/query/parseQuery.js: Added.
        (export.parseQuery):
        (parseQueryImpl):
        (parseBigPart):
        (parseSingleParam):
        (parseSingleParamValue):
        * http/tests/webgpu/common/internal/query/parseQuery.js.map: Added.
        * http/tests/webgpu/common/internal/query/query.js: Added.
        (export.TestQueryMultiFile):
        (export.TestQueryMultiFile.prototype.get depthInLevel):
        (export.TestQueryMultiFile.prototype.toString):
        (export.TestQueryMultiFile.prototype.toStringHelper):
        (export.TestQueryMultiTest):
        (export.TestQueryMultiTest.prototype.get depthInLevel):
        (export.TestQueryMultiTest.prototype.toStringHelper):
        (export.TestQueryMultiCase):
        (export.TestQueryMultiCase.prototype.get depthInLevel):
        (export.TestQueryMultiCase.prototype.toStringHelper):
        (export.TestQuerySingleCase.prototype.get depthInLevel):
        (export.TestQuerySingleCase.prototype.toStringHelper):
        (export.TestQuerySingleCase):
        (export.parseExpectationsForTestQuery):
        (export.relativeQueryString):
        * http/tests/webgpu/common/internal/query/query.js.map: Added.
        * http/tests/webgpu/common/internal/query/separators.js: Added.
        * http/tests/webgpu/common/internal/query/separators.js.map: Added.
        * http/tests/webgpu/common/internal/query/stringify_params.js: Added.
        (export.stringifyPublicParams):
        (export.stringifyPublicParamsUniquely):
        (export.stringifySingleParam):
        (stringifySingleParamUniquely):
        (stringifySingleParamValue):
        * http/tests/webgpu/common/internal/query/stringify_params.js.map: Added.
        * http/tests/webgpu/common/internal/query/validQueryPart.js: Added.
        * http/tests/webgpu/common/internal/query/validQueryPart.js.map: Added.
        * http/tests/webgpu/common/internal/stack.js: Added.
        (export.extractImportantStackTrace):
        * http/tests/webgpu/common/internal/stack.js.map: Added.
        * http/tests/webgpu/common/internal/test_group.js: Added.
        (export.makeTestGroup):
        (export.makeTestGroupForUnitTesting):
        (export.TestGroup):
        (export.TestGroup.prototype.iterate):
        (export.TestGroup.prototype.checkName):
        (export.TestGroup.prototype.test):
        (export.TestGroup.prototype.validate):
        (TestBuilder):
        (TestBuilder.prototype.desc):
        (TestBuilder.prototype.uniqueId):
        (TestBuilder.prototype.specURL):
        (TestBuilder.prototype.fn):
        (TestBuilder.prototype.batch):
        (TestBuilder.prototype.unimplemented):
        (TestBuilder.prototype.validate):
        (TestBuilder.prototype.params):
        (TestBuilder.prototype.paramsSimple):
        (TestBuilder.prototype.paramsSubcasesOnly):
        (TestBuilder.prototype.iterate):
        (prototype.async runTest):
        (prototype.async run):
        * http/tests/webgpu/common/internal/test_group.js.map: Added.
        * http/tests/webgpu/common/internal/test_suite_listing.js: Added.
        * http/tests/webgpu/common/internal/test_suite_listing.js.map: Added.
        * http/tests/webgpu/common/internal/tree.js: Added.
        (export.TestTree):
        (export.TestTree.prototype.iterateCollapsedNodes):
        (export.TestTree.prototype.iterateLeaves):
        (export.TestTree.prototype.dissolveSingleChildTrees):
        (export.TestTree.prototype.toString):
        (export.TestTree.iterateSubtreeNodes):
        (export.TestTree.iterateSubtreeLeaves):
        (export.TestTree.propagateCounts):
        (export.TestTree.countsToString):
        (export.TestTree.subtreeToString):
        (export.async loadTreeForQuery):
        (setSubtreeDescriptionAndCountTODOs):
        (makeTreeForSuite):
        (addSubtreeForDirPath):
        (addSubtreeForFilePath):
        (addSubtreeForTestPath):
        (getOrInsertSubtree):
        (insertLeaf):
        (dissolveSingleChildTrees):
        (readableNameForCase):
        * http/tests/webgpu/common/internal/tree.js.map: Added.
        * http/tests/webgpu/common/internal/util.js: Added.
        (export.StacklessError):
        * http/tests/webgpu/common/internal/util.js.map: Added.
        * http/tests/webgpu/common/internal/version.js: Added.
        * http/tests/webgpu/common/runtime/cmdline.js: Added.
        (usage):
        (i.a.startsWith):
        * http/tests/webgpu/common/runtime/cmdline.js.map: Added.
        * http/tests/webgpu/common/runtime/helper/options.js: Added.
        (getWindowURL):
        (export.optionEnabled):
        * http/tests/webgpu/common/runtime/helper/options.js.map: Added.
        * http/tests/webgpu/common/runtime/helper/sys.js: Added.
        (node):
        (deno.existsSync):
        (deno):
        * http/tests/webgpu/common/runtime/helper/sys.js.map: Added.
        * http/tests/webgpu/common/runtime/helper/test_worker-worker.js: Added.
        (self.onmessage.async ev):
        * http/tests/webgpu/common/runtime/helper/test_worker-worker.js.map: Added.
        * http/tests/webgpu/common/runtime/helper/test_worker.js: Added.
        (export.TestWorker):
        (export.TestWorker.prototype.async run):
        * http/tests/webgpu/common/runtime/helper/test_worker.js.map: Added.
        * http/tests/webgpu/common/runtime/server.js: Added.
        (usage):
        * http/tests/webgpu/common/runtime/server.js.map: Added.
        * http/tests/webgpu/common/runtime/standalone.js: Added.
        (window.onbeforeunload):
        (emptySubtreeResult):
        (mergeSubtreeResults):
        (memoize):
        (makeTreeNodeHTML):
        (makeCaseHTML.const.runSubtree.async if):
        (makeCaseHTML):
        (const.runMySubtree.async if):
        (makeSubtreeHTML):
        (const.runMySubtree.async const):
        (makeSubtreeChildrenHTML):
        (consoleLogError):
        (async appendTo):
        (makeTreeNodeHeaderHTML):
        (async const):
        (qs.push):
        * http/tests/webgpu/common/runtime/standalone.js.map: Added.
        * http/tests/webgpu/common/runtime/wpt.js: Added.
        (const.wpt_fn.async const):
        (async const):
        * http/tests/webgpu/common/runtime/wpt.js.map: Added.
        * http/tests/webgpu/common/tools/checklist.js: Added.
        (usage):
        (async loadQueryListFromTextFile):
        (checkForOverlappingQueries):
        (async console):
        (catch):
        * http/tests/webgpu/common/tools/checklist.js.map: Added.
        * http/tests/webgpu/common/tools/crawl.js: Added.
        (async crawlFilesRecursively.async const):
        (async crawlFilesRecursively):
        (async export.async crawl):
        (export.makeListing):
        * http/tests/webgpu/common/tools/crawl.js.map: Added.
        * http/tests/webgpu/common/tools/dev_server.js: Added.
        (const.babelConfig.string_appeared_here):
        (dirtyCompileCache):
        (dirtyListingAndCompileCache):
        (app.use):
        (async req):
        (port.const.iface.of.Object.values.os.networkInterfaces):
        * http/tests/webgpu/common/tools/dev_server.js.map: Added.
        * http/tests/webgpu/common/tools/gen_listings.js: Added.
        (usage):
        (argv.indexOf):
        (async for):
        * http/tests/webgpu/common/tools/gen_listings.js.map: Added.
        * http/tests/webgpu/common/tools/gen_wpt_cts_html.js: Added.
        (printUsageAndExit):
        (async let):
        (expLoop):
        (const.prefix.of.argsPrefixes.of.tree.iterateCollapsedNodes):
        (catch):
        (async generateFile):
        * http/tests/webgpu/common/tools/gen_wpt_cts_html.js.map: Added.
        * http/tests/webgpu/common/tools/version.js: Added.
        * http/tests/webgpu/common/tools/version.js.map: Added.
        * http/tests/webgpu/common/util/collect_garbage.js: Added.
        (export.async attemptGarbageCollection.gcRec):
        (export.async attemptGarbageCollection):
        * http/tests/webgpu/common/util/collect_garbage.js.map: Added.
        * http/tests/webgpu/common/util/colors.js: Added.
        * http/tests/webgpu/common/util/colors.js.map: Added.
        * http/tests/webgpu/common/util/data_tables.js: Added.
        (export.keysOf):
        (export.numericKeysOf):
        (export.makeTable):
        * http/tests/webgpu/common/util/data_tables.js.map: Added.
        * http/tests/webgpu/common/util/navigator_gpu.js: Added.
        (defaultGPUProvider):
        (export.setGPUProvider):
        (export.getGPU):
        * http/tests/webgpu/common/util/navigator_gpu.js.map: Added.
        * http/tests/webgpu/common/util/preprocessor.js: Added.
        (prototype.checkDepth):
        (prototype.applyTo):
        (Else.prototype.applyTo):
        (Else):
        (export.pp):
        * http/tests/webgpu/common/util/preprocessor.js.map: Added.
        * http/tests/webgpu/common/util/timeout.js: Added.
        * http/tests/webgpu/common/util/timeout.js.map: Added.
        * http/tests/webgpu/common/util/types.js: Added.
        (export.assertTypeTrue):
        * http/tests/webgpu/common/util/types.js.map: Added.
        * http/tests/webgpu/common/util/util.js: Added.
        (export.ErrorWithExtra):
        (export.assert):
        (export.assertOK):
        (export.async assertReject):
        (export.unreachable):
        (export.now):
        (export.resolveOnTimeout):
        (export.PromiseTimeoutError):
        (export.rejectOnTimeout):
        (export.raceWithRejectOnTimeout):
        (export.sortObjectByKey):
        (export.objectEquals):
        (export.range):
        (export.iterRange):
        (subarrayAsU8):
        * http/tests/webgpu/common/util/util.js.map: Added.
        * http/tests/webgpu/cts.https-expected.txt: Added.
        * http/tests/webgpu/cts.https.html: Added.
        * http/tests/webgpu/resources/Di-3d.png: Added.
        * http/tests/webgpu/resources/README.md: Added.
        * http/tests/webgpu/resources/red-green.bt601.vp9.webm: Added.
        * http/tests/webgpu/resources/red-green.mp4: Added.
        * http/tests/webgpu/resources/red-green.theora.ogv: Added.
        * http/tests/webgpu/resources/red-green.webmvp8.webm: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice.html: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.html: Added.
        * http/tests/webgpu/webgpu/api/operation/adapter/requestDevice_limits.spec.js: Added.
        (g.test.string_appeared_here.desc.Test.that.specifying.limits.that.aren.requestDevice.to.reject.fn.async t):
        (string_appeared_here.fn.async t):
        (65535.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/buffers/map-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map.html: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map.spec.js: Added.
        (and.the.contents.of.buffers.returned.by.getMappedRange.on.buffers.are.mapped.read.mapped.write.mappedAtCreation.range.used.getMappedRange.mapRegion.used.mapAsync.mapRegionBoundModes.is.used.to.get mapRegion):
        (getRegionForMap):
        * http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer.spec.js: Added.
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/buffers/map_detach-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_detach.html: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_detach.spec.js: Added.
        (unless.p.p.mappedAtCreation.false.p.mapMode.undefined.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/buffers/map_oom-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_oom.html: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/map_oom.spec.js: Added.
        (true.fn.async t):
        (kBufferUsages.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/buffers/mapping_test.js: Added.
        (export.MappingTest.prototype.checkMapWrite):
        (export.MappingTest.prototype.checkMapWriteZeroed):
        (export.MappingTest.prototype.expectZero):
        (export.MappingTest):
        * http/tests/webgpu/webgpu/api/operation/buffers/threading-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/threading.html: Added.
        * http/tests/webgpu/webgpu/api/operation/buffers/threading.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/basic-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/basic.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/basic.spec.js: Added.
        (g.test.string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer.spec.js: Added.
        (p.dstOffset.p.copySize.8.fn.async t):
        (and.check.contents.of.both.fn.async t):
        (then.checks.the.dst.buffer.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js: Added.
        (F.prototype.GetInitialData):
        (F.prototype.GetInitialDataPerMipLevel):
        (F.prototype.GetInitialStencilDataPerMipLevel):
        (F.prototype.DoCopyTextureToTextureTest):
        (F.prototype.InitializeStencilAspect):
        (F.prototype.VerifyStencilAspect):
        (F.prototype.GetRenderPipelineForT2TCopyWithDepthTests):
        (F.prototype.GetBindGroupLayoutForT2TCopyWithDepthTests):
        (F.prototype.GetBindGroupForT2TCopyWithDepthTests):
        (F.prototype.InitializeDepthAspect):
        (F.prototype.VerifyDepthAspect):
        (F):
        (kRegularTextureFormats.filter):
        (3.unless.p.p.dimension.string_appeared_here.p.srcCopyLevel.0.p.dstCopyLevel.0.fn.async t):
        (kCompressedTextureFormats.filter):
        (2.fn.async t):
        (3.fn.async t):
        (g.test.string_appeared_here.desc.Validate.the.correctness.of.copyTextureToTexture.with.depth.and.stencil.aspect.For.all.the.texture.formats.with.stencil.aspect.Initialize.the.stencil.aspect.of.the.source.texture.with.writeTexture.Copy.the.stencil.aspect.from.the.source.texture.into.the.destination.texture.Copy.the.stencil.aspect.of.the.destination.texture.into.another.staging.buffer.and.check.its.content.Test.the.copies.from.into.zero.non.zero.array.layer.mipmap.levels.Test.copying.multiple.array.layers.For.all.the.texture.formats.with.depth.aspect.Initialize.the.depth.aspect.of.the.source.texture.with.a.draw.call.Copy.the.depth.aspect.from.the.source.texture.into.the.destination.texture.Validate.the.content.in.the.destination.texture.with.the.depth.comparison.string_appeared_here):
        (async fn):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js: Added.
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.number.instead.of.GPUExtent3DDict.copy_various_mip_levels.test.that.copying.various.mip.levels.works.all.formats.Also.covers.special.code.paths.the.physical.size.of.the.subresource.is.not.equal.to.the.logical.size.bufferSize.offset.bytesPerImage.copyExtent.depthOrArrayLayers.and.copyExtent.needs.to.be.clamped.copy_with_no_image_or_slice_padding_and_undefined_values.test.that.when.copying.a.single.row.we.can.set any.bytesPerRow.value.and.when.copying.a.single.slice.we.can.set rowsPerImage):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.number.instead.of.GPUExtent3DDict.copy_various_mip_levels.test.that.copying.various.mip.levels.works.all.formats.Also.covers.special.code.paths.the.physical.size.of.the.subresource.is.not.equal.to.the.logical.size.bufferSize.offset.bytesPerImage.copyExtent.depthOrArrayLayers.and.copyExtent.needs.to.be.clamped.copy_with_no_image_or_slice_padding_and_undefined_values.test.that.when.copying.a.single.row.we.can.set any):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.getTexelOffsetInBytes):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.iterateBlockRows):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.generateData):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.undefDataLayoutIfNeeded):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.undefOrArrayCopyViewIfNeeded):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.arrayCopySizeIfNeeded):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyTextureToBufferWithAppliedArguments):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.uploadLinearTextureDataToTextureSubBox):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyPartialTextureToBufferAndCheckContents):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyWholeTextureToNewBuffer):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.updateLinearTextureDataSubBox):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.copyWholeTextureToBufferAndCheckContentsWithUpdatedData):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async uploadTextureAndVerifyCopy):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async DoUploadToStencilTest):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async DoCopyFromStencilTest):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.async checkStencilTextureContent):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.initializeDepthAspectWithRendering):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest.prototype.DoCopyTextureToBufferWithDepthAspectTest):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.ImageCopyTest):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including.formatCanBeTested):
        (0.and.is.isnstring_appeared_heret.power.of.2.values.also.including):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/programmable_state_test.js: Added.
        (export.ProgrammableStateTest.prototype.getBindGroupLayout):
        (export.ProgrammableStateTest.prototype.getBindGroupLayouts):
        (export.ProgrammableStateTest.prototype.createBindGroup):
        (export.ProgrammableStateTest.prototype.setBindGroup):
        (export.ProgrammableStateTest.prototype.createBindingStatePipeline):
        (export.ProgrammableStateTest.prototype.setPipeline):
        (export.ProgrammableStateTest.prototype.dispatchOrDraw):
        (export.ProgrammableStateTest):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking.spec.js: Added.
        (export.const.description.Ensure.state.is.set correctly):
        (fn.async t):
        (g.test.string_appeared_here.desc.Test.that.the.order.in.you.set the):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state.spec.js: Added.
        (Set.the.state.in.different.ways.to.make.sure.it.gets.the.correct.value.in.the.end.state.unset.default.state.explicitly.set once):
        (set import):
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.html: Added.
        * http/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.spec.js: Added.
        (export.const.description.Ensure.state.is.set correctly):
        (VertexAndIndexStateTrackingTest.prototype.GetRenderPipelineForTest):
        (VertexAndIndexStateTrackingTest):
        (size.multiple.times.in.different.orders.still.keeps.the.correctness.of.each.draw.call.fn.async t):
        (and.check.they.were.drawn.correctly.fn.async t):
        (the.vertex.buffer.stride.is.part.of.SetVertexBuffer.instead.of.the.pipeline.fn.async t):
        (The.test.verifies.both.of.these.two.draw.calls.work.correctly.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.setting.not.setting.the.index.buffer.does.not.impact.a.non.indexed.draw.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/compute/basic-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/compute/basic.html: Added.
        * http/tests/webgpu/webgpu/api/operation/compute/basic.spec.js: Added.
        (g.test.string_appeared_here.fn.async t):
        (kMaxComputeWorkgroupSize.p.largeDimension.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name.html: Added.
        * http/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/device/lost-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/device/lost.html: Added.
        * http/tests/webgpu/webgpu/api/operation/device/lost.spec.js: Added.
        (DeviceLostTests.prototype.getDeviceLostWithTimeout):
        (DeviceLostTests.prototype.expectDeviceDestroyed):
        (DeviceLostTests):
        (async export):
        * http/tests/webgpu/webgpu/api/operation/labels-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/labels.html: Added.
        * http/tests/webgpu/webgpu/api/operation/labels.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/buffer_sync_test.js: Added.
        (export.BufferSyncTest.prototype.async createBufferWithValue):
        (export.BufferSyncTest.prototype.async createTextureWithValue):
        (export.BufferSyncTest.prototype.createBindGroup):
        (export.BufferSyncTest.prototype.createStorageWriteComputePipeline):
        (export.BufferSyncTest.prototype.createStorageWriteRenderPipeline):
        (export.BufferSyncTest.prototype.beginSimpleRenderPass):
        (export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInRenderPass):
        (export.BufferSyncTest.prototype.encodeWriteAsStorageBufferInComputePass):
        (export.BufferSyncTest.prototype.async encodeWriteByB2BCopy):
        (export.BufferSyncTest.prototype.async encodeWriteByT2BCopy):
        (export.BufferSyncTest.prototype.writeByWriteBuffer):
        (export.BufferSyncTest.prototype.async encodeWriteOp):
        (export.BufferSyncTest.prototype.async createCommandBufferWithWriteOp):
        (export.BufferSyncTest.prototype.async submitWriteOp):
        (export.BufferSyncTest.prototype.verifyData):
        (export.BufferSyncTest.prototype.verifyDataTwoValidValues):
        (export.BufferSyncTest):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr.html: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/rw_and_wr.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww.html: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/buffer/ww.spec.js: Added.
        (kAllWriteOps.fn.async t):
        (true.fn.async t):
        (g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.render.bundle.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.either.1.or.2.fn.async t):
        (g.test.string_appeared_here.desc.Test.write.after.write.operations.in.the.same.compute.pass.The.first.write.will.write.1.into.a.storage.buffer.The.second.write.will.write.2.into.the.same.buffer.in.the.same.pass.Expected.data.in.buffer.is.2.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.html: Added.
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.spec.js: Added.
        (TextureSyncTestHelper):
        (TextureSyncTestHelper.prototype.performReadOp):
        (TextureSyncTestHelper.prototype.performWriteOp):
        (TextureSyncTestHelper.prototype.ensureSubmit):
        (TextureSyncTestHelper.prototype.popContext):
        (TextureSyncTestHelper.prototype.makeDummyAttachment):
        (TextureSyncTestHelper.prototype.ensureContext):
        (TextureSyncTestHelper.prototype.flushRenderBundles):
        (TextureSyncTestHelper.prototype.flushCommandBuffers):
        (TextureSyncTestHelper.prototype.ensureBoundary):
        (p.kBoundaryInfo.p.boundary.contexts.expandWithParams):
        * http/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js: Added.
        (combineContexts):
        (export.checkOpsValidForContext):
        * http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone.html: Added.
        * http/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone.spec.js: Added.
        (g.test.string_appeared_here.desc.Await.onSubmittedWorkDone.once.without.having.submitted.any.work.fn.async t):
        (g.test.string_appeared_here.desc.Await.onSubmittedWorkDone.once.after.submitting.some.work.writeBuffer.fn.async t):
        (g.test.string_appeared_here.desc.Await.1000.onSubmittedWorkDone.calls.in.serial.fn.async t):
        (g.test.string_appeared_here.desc.Await.1000.onSubmittedWorkDone.calls.in.parallel.with.Promise.all.fn.async t):
        (g.test.string_appeared_here.desc.Issue.200.onSubmittedWorkDone.calls.and.make.sure.they.resolve.in.the.right.order.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/pipeline/default_layout-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/pipeline/default_layout.html: Added.
        * http/tests/webgpu/webgpu/api/operation/pipeline/default_layout.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/queue/writeBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/queue/writeBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/queue/writeBuffer.spec.js: Added.
        (F.prototype.calculateRequiredBufferSize):
        (F.prototype.testWriteBuffer):
        (F):
        * http/tests/webgpu/webgpu/api/operation/render_pass/clear_value-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/clear_value.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/clear_value.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/resolve-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/resolve.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js: Added.
        (some.with.and.some.without.a.resolveTarget.renderPass.storeOp.set to):
        (1.fn.t.i.t.params.slotsToResolve.includes):
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeOp-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js: Added.
        (work.correctly.a.render.pass.with.a.color.attachment.All.renderable.color.formats.mip.level.set to):
        (array.layer.set to):
        (2D.textures.TODO.depth.slice.set to):
        (work.correctly.a.render.pass.with.a.depth.stencil.attachment.All.renderable.depth.stencil.formats.mip.level.set to):
        (2D.textures.TODO.test.depth24plus.and.depth24plus.stencil8.formats.TODO.test.that.depth.and.stencil.aspects.are.set separately.TODO.depth.slice.set to):
        (2D.textures.TODO.test.depth24plus.and.depth24plus.stencil8.formats.TODO.test.that.depth.and.stencil.aspects.are.set separately):
        (kStoreOps.fn.t.else):
        (kEncodableTextureFormats.filter):
        (kArrayLayers.fn.t.else):
        (kNumColorAttachments.fn.t.i.else):
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeop2-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeop2.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pass/storeop2.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests.spec.js: Added.
        (faceIsCulled):
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/entry_point_name.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js: Added.
        (F.prototype.getFragmentShaderCode):
        (F):
        (4.filter.x.x.componentCount.kTexelRepresentationInfo.x.format.componentOrder.length.fn.async t):
        (filter.x.x.output.length.kTexelRepresentationInfo.x.format.componentOrder.length.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology.spec.js: Added.
        (v1.v3.v5.Topology.triangle.strip.4.triangles.v2.v4.v6.Triangle.list.locations.None.Center.of.two.triangle):
        (Point2D):
        (Point2D.prototype.toNDC):
        (Point2D.getMidpoint):
        (Point2D.getCentroid):
        (getPointTestLocations):
        (getLineTestLocations):
        (getPrimitiveRestartLineTestLocations):
        (getLineStripTestLocations):
        (getTriangleListTestLocations):
        (getTriangleStripTestLocations):
        (getDefaultTestLocations):
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js: Added.
        (fragment.shader.output.mask):
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline.html: Added.
        * http/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline.spec.js: Added.
        (F):
        * http/tests/webgpu/webgpu/api/operation/rendering/basic-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/basic.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/basic.spec.js: Added.
        (g.test.string_appeared_here.fn.async t):
        (false.fn.async t.async const):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/rendering/blending-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/blending.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/blending.spec.js: Added.
        (mapColor):
        (computeBlendFactor):
        (computeBlendOperation):
        (fn.t.switch):
        * http/tests/webgpu/webgpu/api/operation/rendering/depth-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/depth.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/depth.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.each.depth.compare.works):
        * http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/operation/rendering/draw-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/draw.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js: Added.
        (and.base_vertex.is.used.to.select.the.second.set The):
        (9.undefined.fn.async t):
        (string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.switch):
        (string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.b.switch):
        (string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.vertexIndex.instanceIndex.bufferLayouts.forEach):
        (string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.const.pipeline.t.device.createRenderPipeline.vertex.module.t.device.createShaderModule.stage.vertex.fn.main.input.Inputs.Outputs.join):
        (string_appeared_here.unless.p.p.vertex_attribute_count.p.vertex_buffer_count.unless.p.p.step_mode.string_appeared_here.p.vertex_buffer_count.1.fn.t.const.pipeline.t.device.createRenderPipeline.fragment.module.t.device.createShaderModule.stage.fragment.fn.main):
        * http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/indirect_draw.spec.js: Added.
        (F.prototype.MakeIndexBuffer):
        (F.prototype.MakeVertexBuffer):
        (F.prototype.MakeIndirectBuffer):
        (F):
        * http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index.html: Added.
        * http/tests/webgpu/webgpu/api/operation/rendering/robust_access_index.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/resource_init/buffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/resource_init/buffer.html: Added.
        * http/tests/webgpu/webgpu/api/operation/resource_init/buffer.spec.js: Added.
        (F.prototype.GetBufferUsageFromMapMode):
        (F.prototype.async CheckGPUBufferContent):
        (F.prototype.TestBufferZeroInitInBindGroup):
        (F.prototype.CreateRenderPipelineForTest):
        (F.prototype.RecordInitializeTextureColor):
        (F.prototype.CheckBufferAndOutputTexture):
        (F):
        (12.fn.async t):
        (kMapModeOptions.fn.async t):
        (16.fn.async t):
        (kBufferUsagesForMappedAtCreationTests.fn.async t):
        (the.contents.of.the.GPUBuffer.have.already.been.initialized.to.0.fn.async t):
        (8.fn.async t):
        (fn.async t):
        (g.test.string_appeared_here.desc.Verify.when.we.resolve.a.query.set into):
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_copy.js: Added.
        (export.const.checkContentsByBufferCopy):
        (export.const.checkContentsByTextureCopy):
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_ds_test.js: Added.
        (makeFullscreenVertexModule):
        (const.checkContents):
        * http/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_sampling.js: Added.
        (export.const.checkContentsBySampling):
        * http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.html: Added.
        * http/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js: Added.
        (initializedStateAsColor):
        (getRequiredTextureUsage):
        (export.TextureZeroInitTest):
        (export.TextureZeroInitTest.prototype.get textureWidth):
        (export.TextureZeroInitTest.prototype.get textureHeight):
        (export.TextureZeroInitTest.prototype.get textureDepth):
        (export.TextureZeroInitTest.prototype.get textureDepthOrArrayLayers):
        (export.TextureZeroInitTest.prototype.iterateUninitializedSubresources):
        (export.TextureZeroInitTest.prototype.iterateInitializedSubresources):
        (export.TextureZeroInitTest.prototype.generateTextureViewDescriptorsForRendering):
        (export.TextureZeroInitTest.prototype.initializeWithStoreOp):
        (export.TextureZeroInitTest.prototype.initializeWithCopy):
        (export.TextureZeroInitTest.prototype.initializeTexture):
        (export.TextureZeroInitTest.prototype.discardTexture):
        (kTextureAspects.unless):
        (kUninitializeMethods.unless):
        (expandWithParams):
        (sampleCount.1.layerCount.1.unless):
        (true.filter):
        (g.test.string_appeared_here.params.kTestParams.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/sampling/anisotropy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.html: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/anisotropy.spec.js: Added.
        (by.testing.how.many.unique.sample.values.come.out.of.the.sample.operation.Check.anisotropy.is.done.in.the.correct.direction.by.having.a.2D.gradient.and.checking.we.get more):
        (SamplerAnisotropicFilteringSlantedPlaneTest.prototype.copyRenderTargetToBuffer):
        (SamplerAnisotropicFilteringSlantedPlaneTest.prototype.async init):
        (SamplerAnisotropicFilteringSlantedPlaneTest.prototype.drawSlantedPlane):
        (SamplerAnisotropicFilteringSlantedPlaneTest):
        (as.the.sampling.rate.is.different.We.will.also.check.those.large.maxAnisotropy.values.are.clamped.so.that.rendering.is.the.same.as.the.supported.upper.limit.say.16.A.similar.webgl.demo.is.at.https.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/operation/sampling/filter_mode-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/filter_mode.html: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp.html: Added.
        * http/tests/webgpu/webgpu/api/operation/sampling/lod_clamp.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info.html: Added.
        * http/tests/webgpu/webgpu/api/operation/shader_module/compilation_info.spec.js: Added.
        (return.vec4.f32):
        (return.unknown):
        (g.test.string_appeared_here.desc.Test.that.compilationInfo.can.be.called.on.any.ShaderModule.Test.both.valid.and.invalid.shader.modules.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.Test.that.the.compilation.info.valid.shader.modules.contains.no.errors.Test.that.the.compilation.info.invalid.shader.modules.contains.at.least.one.error.paramsSimple.kAllShaderSources.fn.async t):
        (indicating.an.unknown.position.Test.invalid.shader.modules.containing.containing.at.least.one.error.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.paramsSimple.kInvalidShaderSources.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.message.offsets.and.lengths.are.valid.and.align.with.any.reported.lineNum.and.linePos.Test.valid.and.invalid.shader.modules.Test.shader.modules.containing.only.ASCII.and.those.containing.unicode.characters.paramsSimple.kAllShaderSources.fn.async t):
        * http/tests/webgpu/webgpu/api/operation/texture_view/read-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/read.html: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/read.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/write-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/write.html: Added.
        * http/tests/webgpu/webgpu/api/operation/texture_view/write.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/uncapturederror-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/uncapturederror.html: Added.
        * http/tests/webgpu/webgpu/api/operation/uncapturederror.spec.js: Added.
        * http/tests/webgpu/webgpu/api/operation/vertex_state/correctness-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.html: Added.
        * http/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js: Added.
        (mapBufferAttribs):
        (mapStateAttribs):
        (prototype.makeTestWGSL):
        (prototype.makeTestPipeline):
        (prototype.submitRenderPass):
        (prototype.generateTestData):
        (prototype.expandTestData):
        (prototype.interleaveVertexDataInto):
        (prototype.createTestAndPipelineData):
        (prototype.createExpectedBG):
        (prototype.createVertexBuffers):
        (prototype.runTest):
        (fn.t.i):
        * http/tests/webgpu/webgpu/api/operation/vertex_state/index_format-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/operation/vertex_state/index_format.html: Added.
        * http/tests/webgpu/webgpu/api/operation/vertex_state/index_format.spec.js: Added.
        (IndexFormatTest.prototype.MakeRenderPipeline):
        (IndexFormatTest.prototype.CreateIndexBuffer):
        (IndexFormatTest.prototype.run):
        (IndexFormatTest.prototype.CreateExpectedUint8Array):
        (IndexFormatTest):
        (in.the.case.of.incorrect.results.This.shows.the.expected.result.marked.string_appeared_here.is.different.from.what.you.would.get if):
        * http/tests/webgpu/webgpu/api/validation/attachment_compatibility-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/attachment_compatibility.html: Added.
        * http/tests/webgpu/webgpu/api/validation/attachment_compatibility.spec.js: Added.
        (F.prototype.createAttachmentTextureView):
        (F.prototype.createColorAttachment):
        (F.prototype.createDepthAttachment):
        (F.prototype.createRenderPipeline):
        (F):
        (kDepthStencilAttachmentFormats.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/buffer/create-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/create.html: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/create.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/destroy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/destroy.html: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/destroy.spec.js: Added.
        (kBufferUsages.fn.async t):
        (g.test.string_appeared_here.desc.string_appeared_here.fn.async t):
        (fn.async t):
        (unless.p.p.mappedAtCreation.false.p.mapMode.undefined.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/buffer/mapping-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/mapping.html: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/mapping.spec.js: Added.
        (F.prototype.async testMapAsyncCall):
        (F.prototype.testGetMappedRangeCall):
        (F.prototype.createMappableBuffer):
        (F):
        (kBufferUsages.fn.async t):
        (kMapModeOptions.fn.async t):
        (fn.async t):
        (kSizeAlignment.2.fn.async t):
        (validation.can.be.performed.asynchronously.in.the.GPU.process.so.the.Content.process.doesn.fn.async t):
        (after.a.mapAsync.call.or.after.being.created.mapped.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.old.getMappedRange.returned.arraybuffer.does.not.exist.after.unmap.and.newly.returned.arraybuffer.after.new.map.has.correct.subrange.fn.async t):
        (g.test.string_appeared_here.desc.string_appeared_here.fn.async t):
        (or.after.mappedAtCreation.or.mapAsync.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/buffer/threading-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/threading.html: Added.
        * http/tests/webgpu/webgpu/api/validation/buffer/threading.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control.html: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/depth_clip_control.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types.html: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.that.creating.query.set shouldn):
        (true.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats.html: Added.
        * http/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats.spec.js: Added.
        (false.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createBindGroup-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createBindGroup.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js: Added.
        (clone):
        (3.fn.async t):
        (2.fn.async t):
        (allBindingEntries.false.fn.t.switch):
        (allBindingEntries.false.fn.t.t.expectValidationError):
        (kTextureUsages.unless):
        (fn.async t):
        (string_appeared_here.fn.async t):
        (kTextureViewDimensions.fn.async t):
        (256.fn.t.t.expectValidationError):
        (bufferBindingEntries.true.fn.t.t.expectValidationError):
        (string_appeared_here.fn.t.t.expectValidationError):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createBindGroupLayout-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js: Added.
        (clone):
        (fn.async t):
        (allBindingEntries.false.fn.async t):
        (kTextureViewDimensions.fn.async t):
        (1.fn.async t):
        (prototype.async g):
        * http/tests/webgpu/webgpu/api/validation/createComputePipeline-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createComputePipeline.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createComputePipeline.spec.js: Added.
        (F.prototype.getShaderModule):
        (F.prototype.getInvalidShaderModule):
        (F.prototype.doCreateComputePipelineTest):
        (F):
        (fn.async t):
        (making.sure.that.the.test.working):
        * http/tests/webgpu/webgpu/api/validation/createPipelineLayout-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createPipelineLayout.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js: Added.
        (clone):
        (kBufferBindingTypes.fn.async t):
        (g.test.string_appeared_here.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createRenderPipeline-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createRenderPipeline.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createRenderPipeline.spec.js: Added.
        (F.prototype.getFragmentShaderCode):
        (F.prototype.getDescriptor):
        (F.prototype.getPipelineLayout):
        (F.prototype.createTexture):
        (F.prototype.doCreateRenderPipelineTest):
        (F):
        (true.fn.async t):
        (kTextureFormats.fn.async t):
        (kCompareFunctions.fn.async t):
        (kStencilOperations.fn.async t):
        (fn.async t):
        (4.fn.async t):
        (kRenderableColorTextureFormats.fn.async t):
        (kBlendOperations.fn.async t):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createSampler-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createSampler.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createSampler.spec.js: Added.
        (4e30.fn.async t):
        (g.test.string_appeared_here.desc.string_appeared_here.params.u.u.beginSubcases.combineWithParams.u.combine):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createTexture-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createTexture.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createTexture.spec.js: Added.
        (format.fn.async t):
        (kTextureFormats.fn.async t):
        (dimension.string_appeared_here.largestDimension.0.fn.async t):
        (format.string_appeared_here.dimension.string_appeared_here.dimension.string_appeared_here.size.0.kTextureFormatInfo.format.blockWidth.0.size.1.kTextureFormatInfo.format.blockHeight.0.fn.async t):
        (g.test.string_appeared_here.desc.Test.mip.level.count.bound.check.when.mipLevelCount.is.bigger.than.integer.bit.width.fn.async t):
        (format.unless):
        (fn.async t):
        (2.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/createView-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/createView.html: Added.
        * http/tests/webgpu/webgpu/api/validation/createView.spec.js: Added.
        (kTextureFormats.fn.async t):
        (undefined.fn.t.t.expectValidationError):
        (kTextureAspects.fn.async t):
        (validateCreateViewLayersLevels):
        (const.lastArrayLayer.of.new.Set):
        (fn.t.t.expectValidationError):
        (const.lastMipLevel.of.new.Set):
        (fn.async t):
        (kResourceStates.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/create_pipeline-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/create_pipeline.html: Added.
        * http/tests/webgpu/webgpu/api/validation/create_pipeline.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.spec.js: Added.
        (fn.async t):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/buffer_texture_copies.spec.js: Added.
        (ImageCopyTest.prototype.testCopyBufferToTexture):
        (ImageCopyTest.prototype.testCopyTextureToBuffer):
        (ImageCopyTest.prototype.testWriteTexture):
        (ImageCopyTest):
        (string_appeared_here.fn.async t):
        (fn.async t):
        (8.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.spec.js: Added.
        (F.prototype.TestClearBuffer):
        (F):
        (g.test.string_appeared_here.desc.Test.that.clearing.an.error.buffer.fails.fn.async t):
        (fn.async t):
        (kBufferUsages.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js: Added.
        (F.prototype.createComputePipeline):
        (F.prototype.createIndirectBuffer):
        (F):
        (1.fn.t.else):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.spec.js: Added.
        (F.prototype.TestCopyBufferToBuffer):
        (F):
        (g.test.string_appeared_here.fn.async t):
        (kBufferUsages.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js: Added.
        (F.prototype.TestCopyTextureToTexture):
        (F.prototype.GetPhysicalSubresourceSize):
        (F):
        (kResourceStates.fn.async t):
        (unless.p.p.dimension.string_appeared_here.p.srcLevelCount.1.p.dstLevelCount.1.fn.async t):
        (kTextureUsages.fn.async t):
        (4.fn.async t):
        (8.fn.async t):
        (kTextureFormats.fn.async t):
        (1.fn.async t):
        (3.unless.p.p.dimension.string_appeared_here.p.srcCopyLevel.0.p.dstCopyLevel.0.fn.async t):
        (3.fn.async t):
        (string_appeared_here.fn.async t):
        (2.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/debug.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access.spec.js: Added.
        (F.prototype.createIndexBuffer):
        (F.prototype.createRenderPipeline):
        (F.prototype.beginRenderPass):
        (F.prototype.drawIndexed):
        (F):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw.spec.js: Added.
        (callDrawIndexed):
        (and.test.that.draw.and.drawIndexed.will.success.error.as.expected.Such.set of):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state.spec.js: Added.
        (out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.testViewportCall):
        (out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.testScissorCall):
        (out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F.prototype.createDummyRenderPassEncoder):
        (out.of.range.used.with.a.simple.pipeline.that.used.with.a.simple.pipeline.that.F):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.spec.js: Added.
        (F.prototype.makeIndexBuffer):
        (F):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/render.js: Added.
        (export.buildBufferOffsetAndSizeOOBTestParams):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.spec.js: Added.
        (F.prototype.getVertexBuffer):
        (F.prototype.createRenderPipeline):
        (F.prototype.beginRenderPass):
        (F):
        (g.test.string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js: Added.
        (F.prototype.encoderTypeToStageFlag):
        (F.prototype.createBindingResourceWithState):
        (F.prototype.createBindGroup):
        (F):
        (string_appeared_here.fn.async t.async runTest):
        (string_appeared_here.fn.async t):
        (kProgrammableEncoderTypes.fn.async t):
        (true.fn.async t):
        (fn.t.const.doSetBindGroup):
        * http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js: Added.
        (string_appeared_here.filter):
        (fn.async t):
        (string_appeared_here.fn.async t):
        (true.fn.async t):
        (g.test.string_appeared_here.desc.Tests.that.createRenderBundleEncoder.validation.of.depthReadOnly.and.stencilReadOnly.is.ignored.there.is.no.depthStencilFormat.set params):
        * http/tests/webgpu/webgpu/api/validation/encoding/encoder_state-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/encoder_state.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/encoder_state.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js: Added.
        (getTestCmds):
        (F.prototype.getIndexBuffer):
        (F.prototype.getIndirectBuffer):
        (F.prototype.getBindingResourceType):
        (F.prototype.createRenderPipelineWithLayout):
        (F.prototype.createComputePipelineWithLayout):
        (F.prototype.createBindGroupWithLayout):
        (F.prototype.doCompute):
        (F.prototype.doRender):
        (F.prototype.createBindGroupLayoutEntry):
        (F.prototype.runTest):
        (F):
        (g.test.string_appeared_here.desc.Tests.the.bind.groups.must.match.the.requirements.of.the.pipeline.layout.bind.groups.required.by.the.pipeline.layout.are.required.bind.groups.unused.by.the.pipeline.layout.can.be.set or):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end.spec.js: Added.
        (fn.async t):
        (true.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/common.js: Added.
        (export.createQuerySetWithType):
        (export.beginRenderPassWithQuerySet):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/general-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/general.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/general.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.that.set occlusion.query.set with):
        (g.test.string_appeared_here.desc.Tests.that.set occlusion):
        (fn.async t):
        (g.test.string_appeared_here.desc.Tests.that.begin.occlusion.query.with.a.invalid.query.set that):
        (occlusion.query.set in):
        (g.test.string_appeared_here.desc.Tests.that.write.timestamp.to.all.types.of.query.set on):
        (2.0.fn.async t):
        (g.test.string_appeared_here.desc.Tests.that.write.timestamp.to.a.invalid.query.set that):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.that.resolve.query.set with):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/encoding/render_bundle-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.html: Added.
        * http/tests/webgpu/webgpu/api/validation/encoding/render_bundle.spec.js: Added.
        (g.test.string_appeared_here.desc.Test.that.it.is.valid.to.execute.an.empty.list.of.render.bundles.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/error_scope-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/error_scope.html: Added.
        * http/tests/webgpu/webgpu/api/validation/error_scope.spec.js: Added.
        (F.prototype.get device):
        (F.prototype.async init):
        (F.prototype.createErrorBuffer):
        (F.prototype.async expectUncapturedError):
        (F):
        (g.test.string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.html: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js: Added.
        (kResourceStates.fn.async t):
        (fn.async t):
        (bytesPerRow.undefined.copyHeightInBlocks.1.bytesPerRow.undefined.bytesPerRow.kTextureFormatInfo.format.bytesPerBlock.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js: Added.
        (export.ImageCopyTest.prototype.testRun):
        (export.ImageCopyTest.prototype.createAlignedTexture):
        (export.ImageCopyTest.prototype.testBuffer):
        (export.ImageCopyTest):
        (valuesToTestDivisibilityBy):
        (export.texelBlockAlignmentTestExpanderForOffset):
        * http/tests/webgpu/webgpu/api/validation/image_copy/layout_related-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.html: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js: Added.
        (3.unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.unless.p.p.copyDepth.p.size.2.fn.async t):
        (fn.async t):
        (filter):
        (unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.fn.async t):
        (rowsPerImage.kTextureFormatInfo.format.blockHeight.fn.async t):
        (texelBlockAlignmentTestExpanderForOffset.fn.async t):
        (2.unless.p.p.dimension.string_appeared_here.p.copyHeightInBlocks.1.p.copyDepth.1.expandWithParams.p._success):
        (2.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/image_copy/texture_related-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.html: Added.
        * http/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js: Added.
        (fn.async t):
        (4.fn.async t):
        (1.0.fn.async t):
        (texelBlockAlignmentTestExpanderForValueToCoordinate.fn.async t):
        (2.unless.p.p.dimension.string_appeared_here.p.coordinateToTest.0.p.mipLevel.0.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/initialization/requestDevice-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/initialization/requestDevice.html: Added.
        * http/tests/webgpu/webgpu/api/validation/initialization/requestDevice.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/layout_shader_compat-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/layout_shader_compat.html: Added.
        * http/tests/webgpu/webgpu/api/validation/layout_shader_compat.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/query_set/create-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/query_set/create.html: Added.
        * http/tests/webgpu/webgpu/api/validation/query_set/create.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.that.create.query.set with):
        (kMaxQueryCount.1.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/query_set/destroy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/query_set/destroy.html: Added.
        * http/tests/webgpu/webgpu/api/validation/query_set/destroy.spec.js: Added.
        (export.const.description.Destroying.a.query.set more):
        (g.test.string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/buffer_mapped.spec.js: Added.
        (F.prototype.async runBufferDependencyTest):
        (F):
        (g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.writeBuffer.calls.fn.async t):
        (both.when.used.as.the.source.and.destination.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.copyBufferToTexture.commands.from.submitting.fn.async t):
        (g.test.string_appeared_here.desc.Test.that.an.outstanding.mapping.will.prevent.copyTextureToBuffer.commands.from.submitting.fn.async t):
        (fn.async t.const.steps.submit.async t):
        * http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js: Added.
        (computeMipMapSize):
        (generateCopySizeForSrcOOB):
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/buffer.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set.spec.js: Added.
        (export.const.description.Tests.using.a.destroyed.query.set on):
        (g.test.string_appeared_here.desc.Tests.that.use.a.destroyed.query.set in):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/queue/submit-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/submit.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/submit.spec.js: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/writeBuffer-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.html: Added.
        * http/tests/webgpu/webgpu/api/validation/queue/writeBuffer.spec.js: Added.
        (g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t.runTest):
        (g.test.string_appeared_here.desc.Tests.that.the.data.ranges.given.to.GPUQueue.writeBuffer.are.properly.validated.Tests.calling.writeBuffer.with.both.TypedArrays.and.ArrayBuffers.and.checks.that.the.data.offset.and.size.is.interpreted.correctly.both.When.passing.a.TypedArray.the.data.offset.and.size.is.given.in.elements.When.passing.an.ArrayBuffer.the.data.offset.and.size.is.given.in.bytes.Also.verifies.that.the.specified.data.range.Describes.a.valid.range.of.the.destination.buffer.and.source.buffer.Fits.fully.within.the.destination.buffer.Has.a.byte.size.is.a.multiple.of.4.fn.async t):
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/render_pass/resolve-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass/resolve.html: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass/resolve.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/render_pass/storeOp-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass/storeOp.html: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass/storeOp.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/render_pass_descriptor-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.html: Added.
        * http/tests/webgpu/webgpu/api/validation/render_pass_descriptor.spec.js: Added.
        (F.prototype.createTexture):
        (F.prototype.getColorAttachment):
        (F.prototype.getDepthStencilAttachment):
        (F.prototype.async tryRenderPass):
        (F):
        (fn.async t):
        (g.test.string_appeared_here.fn.async t):
        (kRenderableColorTextureFormats.filter.t.kTextureFormatInfo.t.format.multisample.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.html: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js: Added.
        (TextureUsageTracking.prototype.createTexture):
        (TextureUsageTracking.prototype.createBindGroupLayout):
        (TextureUsageTracking.prototype.createBindGroup):
        (TextureUsageTracking.prototype.createAndExecuteBundle):
        (TextureUsageTracking.prototype.beginSimpleRenderPass):
        (TextureUsageTracking.prototype.testValidationScope):
        (TextureUsageTracking.prototype.setPipeline):
        (TextureUsageTracking.prototype.issueDrawOrDispatch):
        (TextureUsageTracking.prototype.setComputePipelineAndCallDispatch):
        (TextureUsageTracking):
        (unless.p.p.type0.string_appeared_here.p.levelCount0.1.p.layerCount0.1.p.type1.string_appeared_here.p.levelCount1.1.p.layerCount1.1.p.type0.string_appeared_here.p.type1.string_appeared_here.p.baseLevel1.BASE_LEVEL.fn.async t):
        (unless.p.kTextureFormatInfo.p.format.depth.kTextureFormatInfo.p.format.stencil.p.aspect0.string_appeared_here.p.type0.string_appeared_here.p.aspect1.string_appeared_here.p.type1.string_appeared_here.unless.p.p.binding1InBundle.p.type1.string_appeared_here.unless.p.p.compute.p.binding0InBundle.p.binding1InBundle.p.type1.string_appeared_here.fn.async t):
        (kShaderStages.unless.p.p.compute.Boolean.p.writeVisibility.GPUConst.ShaderStage.VERTEX.fn.async t):
        (fn.async t):
        (true.expandWithParams):
        (unless.p.p.binding0InBundle.p.type0.string_appeared_here.p.binding1InBundle.p.type1.string_appeared_here.p.binding0InBundle.p.binding1InBundle.p._sampleCount.undefined.p._sampleCount.1.p._usage0.string_appeared_here.p._usage1.string_appeared_here.p.type0.string_appeared_here.p.type1.string_appeared_here.p.type0.string_appeared_here.p.type1.string_appeared_here.fn.async t):
        (true.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.html: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.spec.js: Added.
        (F.prototype.getColorAttachment):
        (F):
        (false.unless.t.t.inSamePass.t.baseLevel0.t.baseLevel1.fn.async t):
        (false.fn.async t):
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.html: Added.
        * http/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js: Added.
        (or.different.subresources.of.the.same.texture.texture.usages.in.copies.and.in.render.pass.consecutively.set bind):
        * http/tests/webgpu/webgpu/api/validation/texture/destroy-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/texture/destroy.html: Added.
        * http/tests/webgpu/webgpu/api/validation/texture/destroy.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/api/validation/validation_test.js: Added.
        (export.ValidationTest.prototype.createTextureWithState):
        (export.ValidationTest.prototype.createBufferWithState):
        (export.ValidationTest.prototype.createQuerySetWithState):
        (export.ValidationTest.prototype.getStorageBuffer):
        (export.ValidationTest.prototype.getUniformBuffer):
        (export.ValidationTest.prototype.getErrorBuffer):
        (export.ValidationTest.prototype.getErrorSampler):
        (export.ValidationTest.prototype.getSampledTexture):
        (export.ValidationTest.prototype.getStorageTexture):
        (export.ValidationTest.prototype.getRenderTexture):
        (export.ValidationTest.prototype.getErrorTexture):
        (export.ValidationTest.prototype.getErrorTextureView):
        (export.ValidationTest.prototype.getBindingResource):
        (export.ValidationTest.prototype.getDeviceMismatchedStorageBuffer):
        (export.ValidationTest.prototype.getDeviceMismatchedUniformBuffer):
        (export.ValidationTest.prototype.getDeviceMismatchedTexture):
        (export.ValidationTest.prototype.getDeviceMismatchedSampledTexture):
        (export.ValidationTest.prototype.getDeviceMismatchedStorageTexture):
        (export.ValidationTest.prototype.getDeviceMismatchedRenderTexture):
        (export.ValidationTest.prototype.getDeviceMismatchedBindingResource):
        (export.ValidationTest.prototype.createRenderPipelineWithState):
        (export.ValidationTest.prototype.createNoOpRenderPipeline):
        (export.ValidationTest.prototype.createErrorRenderPipeline):
        (export.ValidationTest.prototype.createNoOpComputePipeline):
        (export.ValidationTest.prototype.createErrorComputePipeline):
        (export.ValidationTest):
        * http/tests/webgpu/webgpu/api/validation/vertex_state-expected.txt: Added.
        * http/tests/webgpu/webgpu/api/validation/vertex_state.html: Added.
        * http/tests/webgpu/webgpu/api/validation/vertex_state.spec.js: Added.
        (addTestAttributes):
        * http/tests/webgpu/webgpu/capability_info.js: Added.
        (export.depthStencilFormatCopyableAspects):
        (export.depthStencilBufferTextureCopySupported):
        (export.depthStencilFormatAspectSize):
        (export.textureDimensionAndFormatCompatible):
        (export.bufferBindingTypeInfo):
        (export.samplerBindingTypeInfo):
        (export.sampledTextureBindingTypeInfo):
        (export.storageTextureBindingTypeInfo):
        (export.texBindingTypeInfo):
        (export.bindingTypeInfo):
        (export.bufferBindingEntries):
        (export.samplerBindingEntries):
        (export.textureBindingEntries):
        (export.storageTextureBindingEntries):
        (export.sampledAndStorageBindingEntries):
        (export.allBindingEntries):
        * http/tests/webgpu/webgpu/constants.js: Added.
        (checkType):
        * http/tests/webgpu/webgpu/examples-expected.txt: Added.
        * http/tests/webgpu/webgpu/examples.html: Added.
        * http/tests/webgpu/webgpu/examples.spec.js: Added.
        (g.test.string_appeared_here.fn.async t):
        (async g):
        * http/tests/webgpu/webgpu/gpu_test.js: Added.
        (export.initUncanonicalizedDeviceDescriptor):
        (export.GPUTest.prototype.get device):
        (export.GPUTest.prototype.get mismatchedDevice):
        (export.GPUTest.prototype.async selectMismatchedDeviceOrSkipTestCase):
        (export.GPUTest.prototype.get queue):
        (export.GPUTest.prototype.async init):
        (export.GPUTest.prototype.async finalize):
        (export.GPUTest.prototype.async selectDeviceOrSkipTestCase):
        (export.GPUTest.prototype.async selectDeviceForTextureFormatOrSkipTestCase):
        (export.GPUTest.prototype.async selectDeviceForQueryTypeOrSkipTestCase):
        (export.GPUTest.prototype.createCopyForMapRead):
        (export.GPUTest.prototype.createAlignedCopyForMapRead):
        (export.GPUTest.prototype.async readGPUBufferRangeTyped):
        (export.GPUTest.prototype.expectGPUBufferValuesPassCheck):
        (export.GPUTest.prototype.async expectGPUBufferValuesEqual):
        (export.GPUTest.prototype.expectGPUBufferRepeatsSingleValue):
        (export.GPUTest.prototype.expectSingleColor):
        (export.GPUTest.prototype.readSinglePixelFrom2DTexture):
        (export.GPUTest.prototype.expectSinglePixelIn2DTexture):
        (export.GPUTest.prototype.expectSinglePixelBetweenTwoValuesFloat16In2DTexture):
        (export.GPUTest.prototype.expectGPUError.async return):
        (export.GPUTest.prototype.expectGPUError):
        (export.GPUTest.prototype.async makeBufferWithContents):
        (export.GPUTest.prototype.createTexture2DWithMipmaps):
        (export.GPUTest.prototype.createEncoder):
        (export.GPUTest):
        * http/tests/webgpu/webgpu/idl/constants/flags-expected.txt: Added.
        * http/tests/webgpu/webgpu/idl/constants/flags.html: Added.
        * http/tests/webgpu/webgpu/idl/constants/flags.spec.js: Added.
        * http/tests/webgpu/webgpu/idl/exposed.html.js: Added.
        * http/tests/webgpu/webgpu/idl/exposed.http-expected.txt: Added.
        * http/tests/webgpu/webgpu/idl/exposed.http.html: Added.
        * http/tests/webgpu/webgpu/idl/exposed.https-expected.txt: Added.
        * http/tests/webgpu/webgpu/idl/exposed.https.html: Added.
        * http/tests/webgpu/webgpu/idl/idl_test.js: Added.
        (export.IDLTest.prototype.async init):
        (export.IDLTest.prototype.assertMember):
        (export.IDLTest.prototype.assertMemberCount):
        (export.IDLTest):
        * http/tests/webgpu/webgpu/listing.js: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js: Added.
        (export.binary):
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise.spec.js: Added.
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.spec.js: Added.
        (fullNumericRange):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all.spec.js: Added.
        (import):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any.spec.js: Added.
        (import):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js: Added.
        (export.builtin):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js: Added.
        (import):
        (generateTestCases):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/float_built_functions.spec.js: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js: Added.
        (import):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js: Added.
        (import):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/logical_built_in_functions.spec.js: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js: Added.
        (import):
        (generateTestCases):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js: Added.
        (import):
        (generateTestCases):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js: Added.
        (makeBool):
        (string_appeared_here.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js: Added.
        (import):
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/call/builtin/value_testing_built_in_functions.spec.js: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/expression.js: Added.
        (toComparator):
        (storageType):
        (fromStorage):
        (toStorage):
        (export.run):
        * http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.js: Added.
        (4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js: Added.
        (export.unary):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/atomicity.spec.js: Added.
        (const.resultCode):
        (else):
        (fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/barrier-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/barrier.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/barrier.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/coherence-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/coherence.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/coherence.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/memory_model_setup.js: Added.
        (export.MemoryModelTester):
        (export.MemoryModelTester.prototype.async run):
        (export.MemoryModelTester.prototype.checkWeakIndex):
        (export.MemoryModelTester.prototype.checkResult):
        (export.MemoryModelTester.prototype.resultPrinter):
        (export.MemoryModelTester.prototype.copyBufferToBuffer):
        (export.MemoryModelTester.prototype.getRandomInt):
        (export.MemoryModelTester.prototype.getRandomInRange):
        (export.MemoryModelTester.prototype.shuffleArray):
        (export.MemoryModelTester.prototype.async setShuffledWorkgroups):
        (export.MemoryModelTester.prototype.async setScratchLocations):
        (export.MemoryModelTester.prototype.async setStressParams):
        (const.testShaderFunctions.fn.spin):
        (fn.do_stress):
        (builtin):
        (export.buildTestShader):
        (export.buildResultShader):
        * http/tests/webgpu/webgpu/shader/execution/memory_model/weak-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/weak.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/memory_model/weak.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/robust_access-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/robust_access.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/robust_access.spec.js: Added.
        (runShaderTest):
        (testFillArrayBuffer):
        * http/tests/webgpu/webgpu/shader/execution/robust_access_vertex-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/robust_access_vertex.spec.js: Added.
        (DrawCall.prototype.this.vertexBuffers.vertexArrays.map):
        (DrawCall.prototype.insertInto):
        (DrawCall.prototype.draw):
        (DrawCall.prototype.drawIndexed):
        (DrawCall.prototype.drawIndirect):
        (DrawCall.prototype.drawIndexedIndirect):
        (DrawCall.prototype.bindVertexBuffers):
        (DrawCall.prototype.generateVertexBuffer):
        (DrawCall.prototype.generateIndirectBuffer):
        (DrawCall.prototype.generateIndexedIndirectBuffer):
        (DrawCall):
        (F.prototype.generateBufferContents):
        (F.prototype.generateVertexBufferDescriptors):
        (F.prototype.generateVertexShaderCode):
        (F.prototype.createRenderPipeline):
        (F.prototype.doTest):
        (F):
        (else):
        (10.6.unless.p.p.drawCallTestParameter.string_appeared_here.p.errorScale.10.4.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/sampling/gradients_in_varying_loop.spec.js: Added.
        (DerivativesTest.prototype.copyRenderTargetToBuffer):
        (DerivativesTest.prototype.async init):
        (DerivativesTest.prototype.drawQuad):
        (DerivativesTest):
        (3.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.spec.js: Added.
        (beginSubcases.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.spec.js: Added.
        (and.the.layout.attributes.should.be.ignored.when.used.as.an.entry.point.IO.parameter.fn.async t):
        (and.uses.it.as.both.the.output.of.a.vertex.shader.and.the.input.to.a.fragment.shader.fn.async t):
        (and.uses.those.structures.as.parameter.and.return.types.entry.point.functions.and.regular.functions.fn.async t):
        * http/tests/webgpu/webgpu/shader/execution/zero_init-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/execution/zero_init.html: Added.
        * http/tests/webgpu/webgpu/shader/execution/zero_init.spec.js: Added.
        (prettyPrint):
        (and.storage):
        * http/tests/webgpu/webgpu/shader/types.js: Added.
        (export.generateTypes):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/builtins-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/builtins.spec.js: Added.
        (string_appeared_here.beginSubcases.fn.t.stage.vertex.fn.main):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/generic-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/generic.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/generic.spec.js: Added.
        (string_appeared_here.beginSubcases.fn.t.location):
        (string_appeared_here.beginSubcases.fn.t.builtin):
        (string_appeared_here.beginSubcases.fn.t.stage.fragment.fn.frag_main):
        (string_appeared_here.beginSubcases.fn.t.stage.compute.workgroup_size.1.fn.comp_main):
        (string_appeared_here.beginSubcases.fn.t.const.code.stage.vertex.fn.vert_main):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js: Added.
        (false.beginSubcases.fn.t.t.params.stage.string_appeared_here.t.params.use_struct.false.t.params.attribute.includes):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/invariant-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js: Added.
        (false.beginSubcases.fn.t.const.code.struct.VertexOut.location):
        * http/tests/webgpu/webgpu/shader/validation/shader_io/locations-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/locations.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js: Added.
        * http/tests/webgpu/webgpu/shader/validation/shader_io/util.js: Added.
        (export.generateShader):
        * http/tests/webgpu/webgpu/shader/validation/shader_validation_test.js: Added.
        (export.ShaderValidationTest.prototype.expectCompileResult):
        (export.ShaderValidationTest):
        * http/tests/webgpu/webgpu/shader/validation/variable_and_const-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/variable_and_const.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/variable_and_const.spec.js: Added.
        (kTestTypes.fn.t.const.code.stage.fragment.fn.main):
        (fn.t.prototype.stage.fn.main):
        (fn.t.prototype.else):
        (fn.t.else.prototype.stage.fn.main):
        (so.no.cts.this.struct.with.bool.component.struct.with.runtime.array.Control.case.string_appeared_here.is.used.to.make.sure.when.only.the.storage.changes):
        * http/tests/webgpu/webgpu/shader/validation/wgsl/basic-expected.txt: Added.
        * http/tests/webgpu/webgpu/shader/validation/wgsl/basic.html: Added.
        * http/tests/webgpu/webgpu/shader/validation/wgsl/basic.spec.js: Added.
        (g.test.string_appeared_here.desc.A.trivial.correct.and.incorrect.shader.fn.t.stage.vertex.stage.fragment.fn.main):
        * http/tests/webgpu/webgpu/shader/values.js: Added.
        (export.subnormalF32Examples):
        (export.normalF32Examples):
        (export.nanF32BitsExamples):
        * http/tests/webgpu/webgpu/util/buffer.js: Added.
        (export.makeBufferWithContents):
        * http/tests/webgpu/webgpu/util/check_contents.js: Added.
        (export.checkElementsEqual):
        (export.checkElementsBetween):
        (export.checkElementsFloat16Between):
        (export.checkElementsEqualEither):
        (export.checkElementsEqualGenerated):
        (export.checkElementsPassPredicate):
        (export.checkElementsPassPredicate.):
        * http/tests/webgpu/webgpu/util/color_space_conversion.js: Added.
        (lin_sRGB):
        (XYZ_to_lin_sRGB):
        (lin_P3):
        (gam_P3):
        (lin_P3_to_XYZ):
        (XYZ_to_lin_P3):
        (export.displayP3ToSrgb):
        (export.srgbToDisplayP3):
        * http/tests/webgpu/webgpu/util/command_buffer_maker.js: Added.
        (export.CommandBufferMaker):
        * http/tests/webgpu/webgpu/util/compare.js: Added.
        (export.absThreshold):
        (export.ulpThreshold):
        (export.correctlyRoundedThreshold):
        (export.compare):
        * http/tests/webgpu/webgpu/util/constants.js: Added.
        (hexToF32):
        * http/tests/webgpu/webgpu/util/conversion.js: Added.
        (export.floatAsNormalizedInteger):
        (export.normalizedIntegerAsFloat):
        (export.float32ToFloatBits):
        (export.float32ToFloat16Bits):
        (export.float16BitsToFloat32):
        (export.float32BitsToNumber):
        (export.numberToFloat32Bits):
        (export.floatBitsToNumber):
        (export.floatBitsToNormalULPFromZero):
        (export.packRGB9E5UFloat):
        (export.assertInIntegerRange):
        (export.gammaCompress):
        (export.gammaDecompress):
        (export.float32ToUint32):
        (export.uint32ToFloat32):
        (export.float32ToInt32):
        (export.uint32ToInt32):
        (export.ScalarType):
        (export.ScalarType.prototype.toString):
        (export.VectorType):
        (export.VectorType.prototype.read):
        (export.VectorType.prototype.toString):
        (export.TypeVec):
        (export.scalarType):
        (export.numElementsOf):
        (export.scalarTypeOf):
        (export.Scalar):
        (export.Scalar.prototype.copyTo):
        (export.Scalar.prototype.toString):
        (export.f32):
        (export.f32Bits):
        (export.f16Bits):
        (export.i32):
        (export.i16):
        (export.i8):
        (export.i32Bits):
        (export.i16Bits):
        (export.i8Bits):
        (export.u32):
        (export.u16):
        (export.u8):
        (export.u32Bits):
        (export.u16Bits):
        (export.u8Bits):
        (export.bool):
        (export.Vector):
        (export.Vector.prototype.copyTo):
        (export.Vector.prototype.toString):
        (export.Vector.prototype.get x):
        (export.Vector.prototype.get y):
        (export.Vector.prototype.get z):
        (export.Vector.prototype.get w):
        (export.vec2):
        (export.vec3):
        (export.vec4):
        * http/tests/webgpu/webgpu/util/copy_to_texture.js: Added.
        (isFp16Format):
        (isFp32Format):
        (isUnormFormat):
        (export.CopyToTextureUtils.prototype.doFlipY):
        (export.CopyToTextureUtils.prototype.formatForExpectedPixels):
        (export.CopyToTextureUtils.prototype.getSourceImageBitmapPixels):
        (export.CopyToTextureUtils.prototype.getExpectedPixels):
        (export.CopyToTextureUtils.prototype.checkCopyExternalImageResult):
        (export.CopyToTextureUtils.prototype.async checkBufferWithRowPitch):
        (export.CopyToTextureUtils.prototype.doTestAndCheckResult):
        (export.CopyToTextureUtils):
        * http/tests/webgpu/webgpu/util/create_elements.js: Added.
        (export.createCanvas):
        (export.createOnscreenCanvas):
        (export.createOffscreenCanvas):
        * http/tests/webgpu/webgpu/util/device_pool.js: Added.
        (TestFailedButDeviceReusable):
        (FeaturesNotSupported):
        (export.TestOOMedShouldAttemptGC):
        (export.DevicePool.prototype.async reserve):
        (export.DevicePool.prototype.async release):
        (export.DevicePool):
        (DescriptorToHolderMap.prototype.deleteByDevice):
        (DescriptorToHolderMap.prototype.async getOrCreate):
        (DescriptorToHolderMap.prototype.insertAndCleanUp):
        (DescriptorToHolderMap):
        (canonicalizeDescriptor):
        (supportsFeature):
        (DeviceHolder.async create):
        (DeviceHolder):
        (DeviceHolder.prototype.acquire):
        (DeviceHolder.prototype.async ensureRelease):
        (DeviceHolder.prototype.async release):
        * http/tests/webgpu/webgpu/util/math.js: Added.
        (export.align):
        (export.roundDown):
        (export.clamp):
        * http/tests/webgpu/webgpu/util/memory.js: Added.
        (export.async exhaustVramUntilUnder64MB.async const):
        (export.async exhaustVramUntilUnder64MB):
        * http/tests/webgpu/webgpu/util/pretty_diff_tables.js: Added.
        (export.generatePrettyTable):
        * http/tests/webgpu/webgpu/util/texture/base.js: Added.
        (export.maxMipLevelCount):
        * http/tests/webgpu/webgpu/util/texture/layout.js: Added.
        (export.getTextureCopyLayout):
        * http/tests/webgpu/webgpu/util/texture/subresource.js: Added.
        (endOfRange):
        (rangeAsIterator):
        (export.SubresourceRange):
        (export.SubresourceRange.prototype.each):
        (export.SubresourceRange.prototype.mipLevels):
        * http/tests/webgpu/webgpu/util/texture/texel_data-expected.txt: Added.
        * http/tests/webgpu/webgpu/util/texture/texel_data.html: Added.
        * http/tests/webgpu/webgpu/util/texture/texel_data.js: Added.
        (applyEach):
        (packComponents):
        (makeNormalizedInfo):
        (makeIntegerInfo):
        (makeFloatInfo):
        (export.const.kTexelRepresentationInfo.rgba32float.makeFloatInfo):
        (export.getSingleDataType):
        (export.getComponentReadbackTraits):
        * http/tests/webgpu/webgpu/util/texture/texel_data.spec.js: Added.
        (doTest):
        (kEncodableTextureFormats.filter):
        * http/tests/webgpu/webgpu/util/unions.js: Added.
        (export.reifyOrigin3D):
        (export.reifyExtent3D):
        * http/tests/webgpu/webgpu/web_platform/canvas/configure-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/configure.html: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/context_creation-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/context_creation.html: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/context_creation.spec.js: Added.
        (fn.async t):
        * http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture.html: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture.spec.js: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat.html: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/getPreferredFormat.spec.js: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.html: Added.
        * http/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.spec.js: Added.
        (async initCanvasContent):
        (checkImageResult):
        (readPixelsFrom2DCanvasAndCompare):
        (string_appeared_here.fn.async t):
        (allCanvasTypes.fn.async t):
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.html: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js: Added.
        (F.prototype.generatePixel):
        (F.prototype.getImagePixels):
        (F):
        (fn.async t):
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.html: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js: Added.
        (F.prototype.init2DCanvasContentWithColorSpace):
        (F.prototype.init2DCanvasContent):
        (F.prototype.paint2DCanvas):
        (F.prototype.initGLCanvasContent):
        (F.prototype.getInitGPUCanvasData):
        (F.prototype.initGPUCanvasContent):
        (F.prototype.getSourceCanvas2DContent):
        (F.prototype.getSourceCanvasGLContent):
        (F.prototype.calculateSourceContentOnCPU):
        (F.prototype.getTestImageURLByColorSpace):
        (F):
        (fn.async t):
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/video-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/video.html: Added.
        * http/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js: Added.
        * http/tests/webgpu/webgpu/web_platform/external_texture/video-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/external_texture/video.html: Added.
        * http/tests/webgpu/webgpu/web_platform/external_texture/video.spec.js: Added.
        (createExternalTextureSamplingTestPipeline):
        (createExternalTextureSamplingTestBindGroup):
        (kVideoSources.fn.async t):
        (g.test.string_appeared_here.desc.Tests.that.a.GPUExternalTexture.is.destroyed.by.a.microtask.and.that.using.it.after.it.has.been.destroyed.results.in.an.error.fn.async t):
        (async g):
        * http/tests/webgpu/webgpu/web_platform/util.js: Added.
        (export.startPlayingAndWaitForVideo):
        * http/tests/webgpu/webgpu/web_platform/worker/worker-expected.txt: Added.
        * http/tests/webgpu/webgpu/web_platform/worker/worker.html: Added.
        * http/tests/webgpu/webgpu/web_platform/worker/worker.js: Added.
        (async basicTest):
        (self.onmessage.async ev):
        * http/tests/webgpu/webgpu/web_platform/worker/worker.spec.js: Added.
        (isNode):
        (g.test.string_appeared_here.desc.test.WebGPU.is.available.in.DedicatedWorkers.and.check.basic.functionality.fn.async t):
        * http/tests/webgpu/webgpu/web_platform/worker/worker_launcher.js: Added.
        (export.async launchWorker):
        * platform/ios-device-wk1/TestExpectations:
        * platform/ios-simulator-wk1/TestExpectations:
        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-26  Chris Dumez  <cdumez@apple.com>

        Unreviewed, mark streams/readable-stream-lock-after-worker-terminates-crash.html as flaky on Windows.

        This test has been a flaky Timeout on Windows EWS for months and keeps leading to false positives.
        Mark it as flaky to silence the noise.

        * platform/win/TestExpectations:

2022-03-26  Youenn Fablet  <youenn@apple.com>

        Implement ServiceWorkerWindowClient.focus
        https://bugs.webkit.org/show_bug.cgi?id=238319
        <rdar://90616490>

        Reviewed by Brady Eidson.

        Update tests to cover the fact we no longer reuse Client objects.

        * http/tests/workers/service/resources/postmessage-echo-worker.js:
        * http/tests/workers/service/resources/serviceworkerclients-get-worker.js:
        * http/tests/workers/service/serviceworkerclients-matchAll-worker.js:
        * http/tests/workers/service/serviceworkerclients-matchAll.https-expected.txt:
        * http/tests/workers/service/serviceworkerclients-matchAll.https.html:

2022-03-25  Alexander Mikhaylenko  <alexm@gnome.org>

        [GTK][WPE] Update widget style to match libadwaita
        https://bugs.webkit.org/show_bug.cgi?id=235884

        Reviewed by Adrian Perez de Castro.

        Update test expectations to account for the changed widget and selection styles.

        Remove [Pass] for text selection styles that was only set for glib/.

        * platform/glib/TestExpectations:
        * platform/gtk/css2.1/20110323/replaced-elements-001-expected.png:
        * platform/gtk/css2.1/20110323/replaced-elements-001-expected.txt:
        * platform/gtk/css3/flexbox/button-expected.png:
        * platform/gtk/css3/flexbox/button-expected.txt:
        * platform/gtk/editing/selection/3690703-2-expected.png:
        * platform/gtk/editing/selection/3690703-2-expected.txt:
        * platform/gtk/editing/selection/3690703-expected.png:
        * platform/gtk/editing/selection/3690703-expected.txt:
        * platform/gtk/editing/selection/3690719-expected.png:
        * platform/gtk/editing/selection/3690719-expected.txt:
        * platform/gtk/editing/selection/4397952-expected.png:
        * platform/gtk/editing/selection/4397952-expected.txt:
        * platform/gtk/editing/selection/5240265-expected.png:
        * platform/gtk/editing/selection/5240265-expected.txt:
        * platform/gtk/editing/selection/selection-button-text-expected.png:
        * platform/gtk/editing/selection/selection-button-text-expected.txt:
        * platform/gtk/fast/block/float/float-avoidance-expected.png:
        * platform/gtk/fast/block/float/float-avoidance-expected.txt:
        * platform/gtk/fast/block/positioning/inline-block-relposition-expected.png:
        * platform/gtk/fast/block/positioning/inline-block-relposition-expected.txt:
        * platform/gtk/fast/box-sizing/percentage-height-expected.png:
        * platform/gtk/fast/box-sizing/percentage-height-expected.txt: Added.
        * platform/gtk/fast/css/continuationCrash-expected.png:
        * platform/gtk/fast/css/continuationCrash-expected.txt:
        * platform/gtk/fast/css/margin-top-bottom-dynamic-expected.png:
        * platform/gtk/fast/css/margin-top-bottom-dynamic-expected.txt:
        * platform/gtk/fast/css/rtl-ordering-expected.png:
        * platform/gtk/fast/css/rtl-ordering-expected.txt:
        * platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.png:
        * platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
        * platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.png:
        * platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
        * platform/gtk/fast/dynamic/positioned-movement-with-positioned-children-expected.png:
        * platform/gtk/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
        * platform/gtk/fast/forms/001-expected.png:
        * platform/gtk/fast/forms/001-expected.txt:
        * platform/gtk/fast/forms/basic-buttons-expected.png:
        * platform/gtk/fast/forms/basic-buttons-expected.txt:
        * platform/gtk/fast/forms/basic-selects-expected.png:
        * platform/gtk/fast/forms/basic-selects-expected.txt:
        * platform/gtk/fast/forms/blankbuttons-expected.png:
        * platform/gtk/fast/forms/blankbuttons-expected.txt:
        * platform/gtk/fast/forms/box-shadow-override-expected.png:
        * platform/gtk/fast/forms/box-shadow-override-expected.txt:
        * platform/gtk/fast/forms/button-align-expected.png:
        * platform/gtk/fast/forms/button-align-expected.txt:
        * platform/gtk/fast/forms/button-cannot-be-nested-expected.png:
        * platform/gtk/fast/forms/button-cannot-be-nested-expected.txt:
        * platform/gtk/fast/forms/button-default-title-expected.png:
        * platform/gtk/fast/forms/button-default-title-expected.txt:
        * platform/gtk/fast/forms/button-generated-content-expected.png:
        * platform/gtk/fast/forms/button-generated-content-expected.txt:
        * platform/gtk/fast/forms/button-inner-block-reuse-expected.png:
        * platform/gtk/fast/forms/button-inner-block-reuse-expected.txt:
        * platform/gtk/fast/forms/button-positioned-expected.png:
        * platform/gtk/fast/forms/button-positioned-expected.txt:
        * platform/gtk/fast/forms/button-sizes-expected.png:
        * platform/gtk/fast/forms/button-sizes-expected.txt:
        * platform/gtk/fast/forms/button-style-color-expected.png:
        * platform/gtk/fast/forms/button-style-color-expected.txt:
        * platform/gtk/fast/forms/button-table-styles-expected.png:
        * platform/gtk/fast/forms/button-table-styles-expected.txt:
        * platform/gtk/fast/forms/button-text-transform-expected.png:
        * platform/gtk/fast/forms/button-text-transform-expected.txt:
        * platform/gtk/fast/forms/button-white-space-expected.png:
        * platform/gtk/fast/forms/button-white-space-expected.txt:
        * platform/gtk/fast/forms/control-clip-expected.png:
        * platform/gtk/fast/forms/control-clip-expected.txt:
        * platform/gtk/fast/forms/control-clip-overflow-expected.png:
        * platform/gtk/fast/forms/control-clip-overflow-expected.txt:
        * platform/gtk/fast/forms/control-restrict-line-height-expected.png:
        * platform/gtk/fast/forms/control-restrict-line-height-expected.txt:
        * platform/gtk/fast/forms/disabled-select-change-index-expected.png:
        * platform/gtk/fast/forms/disabled-select-change-index-expected.txt:
        * platform/gtk/fast/forms/file/file-input-direction-expected.png:
        * platform/gtk/fast/forms/file/file-input-direction-expected.txt:
        * platform/gtk/fast/forms/file/file-input-disabled-expected.png:
        * platform/gtk/fast/forms/file/file-input-disabled-expected.txt:
        * platform/gtk/fast/forms/form-element-geometry-expected.png:
        * platform/gtk/fast/forms/form-element-geometry-expected.txt:
        * platform/gtk/fast/forms/formmove3-expected.png:
        * platform/gtk/fast/forms/formmove3-expected.txt:
        * platform/gtk/fast/forms/input-appearance-height-expected.png:
        * platform/gtk/fast/forms/input-appearance-height-expected.txt:
        * platform/gtk/fast/forms/input-button-sizes-expected.png:
        * platform/gtk/fast/forms/input-button-sizes-expected.txt:
        * platform/gtk/fast/forms/input-first-letter-expected.png:
        * platform/gtk/fast/forms/input-first-letter-expected.txt:
        * platform/gtk/fast/forms/input-value-expected.png:
        * platform/gtk/fast/forms/input-value-expected.txt:
        * platform/gtk/fast/forms/select-baseline-expected.png:
        * platform/gtk/fast/forms/select-baseline-expected.txt:
        * platform/gtk/fast/forms/select-disabled-appearance-expected.png:
        * platform/gtk/fast/forms/select-disabled-appearance-expected.txt:
        * platform/gtk/fast/forms/targeted-frame-submission-expected.png:
        * platform/gtk/fast/forms/targeted-frame-submission-expected.txt:
        * platform/gtk/fast/html/details-replace-summary-child-expected.png:
        * platform/gtk/fast/html/details-replace-summary-child-expected.txt:
        * platform/gtk/fast/html/details-replace-text-expected.png:
        * platform/gtk/fast/html/details-replace-text-expected.txt:
        * platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png:
        * platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
        * platform/gtk/fast/overflow/scrollRevealButton-expected.png:
        * platform/gtk/fast/overflow/scrollRevealButton-expected.txt:
        * platform/gtk/fast/replaced/replaced-breaking-expected.png:
        * platform/gtk/fast/replaced/replaced-breaking-expected.txt:
        * platform/gtk/fast/replaced/width100percent-button-expected.png:
        * platform/gtk/fast/replaced/width100percent-button-expected.txt:
        * platform/gtk/fast/table/append-cells2-expected.png:
        * platform/gtk/fast/table/append-cells2-expected.txt:
        * platform/gtk/fast/table/remove-td-display-none-expected.png:
        * platform/gtk/fast/table/remove-td-display-none-expected.txt:
        * platform/gtk/fast/text/international/hindi-spacing-expected.png:
        * platform/gtk/fast/text/international/hindi-spacing-expected.txt:
        * platform/gtk/fast/text/textIteratorNilRenderer-expected.png:
        * platform/gtk/fast/text/textIteratorNilRenderer-expected.txt:
        * platform/gtk/http/tests/navigation/javascriptlink-frames-expected.png:
        * platform/gtk/http/tests/navigation/javascriptlink-frames-expected.txt:
        * platform/gtk/svg/custom/foreign-object-skew-expected.png:
        * platform/gtk/svg/custom/foreign-object-skew-expected.txt: Added.
        * platform/gtk/svg/custom/inline-svg-in-xhtml-expected.png:
        * platform/gtk/svg/custom/inline-svg-in-xhtml-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug1188-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug1188-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug1318-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug1318-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug138725-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug138725-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug18359-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug18359-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug2479-2-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug2479-2-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug2479-3-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug2479-3-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug2479-4-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug2479-4-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug26178-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug26178-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug28928-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug28928-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug33855-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug33855-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug39209-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug39209-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug4429-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug4429-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug44505-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug44505-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug46368-1-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug46368-1-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug46368-2-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug46368-2-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug51037-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug51037-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug51727-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug51727-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug52505-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug52505-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug52506-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug52506-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug60749-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug60749-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug68912-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug68912-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug7342-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug7342-expected.txt:
        * platform/gtk/tables/mozilla/bugs/bug92647-2-expected.png:
        * platform/gtk/tables/mozilla/bugs/bug92647-2-expected.txt: Added.
        * platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.png:
        * platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
        * platform/gtk/tables/mozilla/dom/tableDom-expected.png:
        * platform/gtk/tables/mozilla/dom/tableDom-expected.txt:
        * platform/gtk/tables/mozilla/other/move_row-expected.png:
        * platform/gtk/tables/mozilla/other/move_row-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.png:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png:
        * platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png:
        * platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png:
        * platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:

2022-03-25  Youenn Fablet  <youenn@apple.com>

        Add support for focused and visible ServiceWorkerWindowClient states
        https://bugs.webkit.org/show_bug.cgi?id=238372

        Reviewed by Brady Eidson.

        * http/wpt/service-workers/client-properties-worker.js: Added.
        * http/wpt/service-workers/client-properties.https-expected.txt: Added.
        * http/wpt/service-workers/client-properties.https.html: Added.

2022-03-25  Devin Rousso  <drousso@apple.com>

        `PointerEvent.movementX` always 0 (breaks https://noisecraft.app/)
        https://bugs.webkit.org/show_bug.cgi?id=220194
        <rdar://problem/72814440>

        Reviewed by Simon Fraser.

        * pointer-lock/pointermove-movement-delta.html: Added.
        * pointer-lock/pointermove-movement-delta-expected.txt: Added.

        * pointer-lock/mouse-event-delivery-expected.txt: Added.
        On macOS, the screen's origin is the bottom-left corner, so we need to flip the `deltaY`.

        * platform/gtk/imported/w3c/web-platform-tests/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock-expected.txt: Added.
        This change causes the test to progress further than before, but there still appear to be
        other issues elsewhere, so adjust the expected output to reflect that.

        * platform/mac-wk1/TestExpectations:

2022-03-25  Simon Fraser  <simon.fraser@apple.com>

        Unreviewed cleanup.

        Fix some errors found by lint-test-expectations (which add noise to every test run).

        * platform/ios/TestExpectations:
        * platform/win/TestExpectations:

2022-03-25  Frederic Wang  <fred.wang@free.fr>

        Improve rebuilding of ruby subtrees
        https://bugs.webkit.org/show_bug.cgi?id=238365

        Reviewed by Alan Bujtas.

        Expectation for rubyDOM-remove-text2.html is updated now that we don't collapse anonymous
        RenderRubyBase nodes.

        * platform/gtk/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
        * platform/ios/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
        * platform/mac/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
        * platform/win/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
        * platform/wincairo/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.
        * platform/wpe/fast/ruby/rubyDOM-remove-text2-expected.txt: Updated.

2022-03-24  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] REGRESSION(r281291): When accessibility bold is enabled, font-family:system-ui is supposed to be bold
        https://bugs.webkit.org/show_bug.cgi?id=237817
        <rdar://problem/88249241>

        Reviewed by Alan Bujtas.

        This test has <!-- webkit-test-runner [ runSingly=true ] --> so the testing
        infrastructure for accessibility bold can be web-process-global.

        * fast/text/accessibility-bold-expected-mismatch.html: Added.
        * fast/text/accessibility-bold.html: Added.
        * platform/mac/TestExpectations: Because this test relies on a webkit-test-runner
              header, skip it on WK1.
        * platform/ios/TestExpectations: Ditto.
        * platform/mac-wk2/TestExpectations: Mark as PASS.
        * platform/ios-wk2/TestExpectations: Ditto.

2022-03-24  Antoine Quint  <graouts@webkit.org>

        DOM GPUP: paintSystemPreviewBadge (AR QuickLook element badge)
        https://bugs.webkit.org/show_bug.cgi?id=238295
        rdar://83580608

        Reviewed by Dean Jackson.

        The system-preview/badge.html test now passes reliably with DOM GPUP enabled,
        which incidentally fixes bug 236922.

        * platform/ios-wk2/TestExpectations:

2022-03-24  Kate Cheney  <katherine_cheney@apple.com>

        REGRESSION (Safari 15.4): Nonce from link isn't used when loading style sheet
        https://bugs.webkit.org/show_bug.cgi?id=238014
        <rdar://problem/90599352>

        Reviewed by Brent Fulgham.

        * http/tests/security/contentSecurityPolicy/stylesheet-allowed-with-nonce-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/stylesheet-allowed-with-nonce.py: Added.

2022-03-24  Jean-Yves Avenard  <jya@apple.com>

        Safari can't play video completely at bilibili.com
        https://bugs.webkit.org/show_bug.cgi?id=236440
        rdar://88761053

        Reviewed by Jer Noble.

        * media/media-source/content/test-bframes-hevc-manifest.json: Added.
        * media/media-source/content/test-bframes-hevc.mp4: Added.
        * media/media-source/media-mp4-hevc-bframes-expected.txt: Added.
        * media/media-source/media-mp4-hevc-bframes.html: Added.

2022-03-24  Matteo Flores  <matteo_flores@apple.com>

        Unreviewed, reverting r291789.

        This revision caused 65+ new API failures on iOS debug

        Reverted changeset:

        "Release assert in Document::updateLayout() via
        HTMLTextAreaElement::childrenChanged"
        https://bugs.webkit.org/show_bug.cgi?id=224471
        https://commits.webkit.org/r291789

2022-03-24  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-03-24  Cathie Chen  <cathiechen@igalia.com>

        Update css/css-sizing/contain-intrinsic-size tests from WPT
        https://bugs.webkit.org/show_bug.cgi?id=238312

        Reviewed by Rob Buis.

        * TestExpectations:

2022-03-24  Kimmo Kinnunen  <kkinnunen@apple.com>

        REGRESSION (r287807): WEBGL_multi_draw validation rejecting valid arguments
        https://bugs.webkit.org/show_bug.cgi?id=238239

        Reviewed by Darin Adler.

        Enable the newer WebGL conformance tests that test this, marked
        Slow as they take a while to run.

        * TestExpectations:

2021-11-02  Sergio Villar Senin  <svillar@igalia.com>

        Release assert in Document::updateLayout() via HTMLTextAreaElement::childrenChanged
        https://bugs.webkit.org/show_bug.cgi?id=224471

        Reviewed by Ryosuke Niwa.

        Moved some tests out of the text-based-repaint.js model because selection is now updated
        and revealed asynchronously in the case of non-user triggered changes. The problem is that
        by the time the repaint rects are queried the update has not happened yet. That's why
        the tests were modified so that we wait until the repaint happens.

        Same situation for other tests that do not involve repaint rects but trigger accesibility
        tree updates. We must ensure that we let the notification be thrown before checking whether or
        not has been emited. As it's done asynchronously we must let the main thread run before checking.

        Last but not least, some of the tests are using setTimeout() instead of requestAnimationFrame()
        because the results with the latter were not as reliable under stress/debug conditions.

        * accessibility/mac/selection-boundary-userinfo.html:
        * accessibility/mac/selection-change-userinfo.html:
        * accessibility/mac/selection-value-changes-for-aria-textbox.html:
        * editing/selection-with-absolute-positioned-empty-content.html:
        * fast/forms/textarea-scrolled-endline-caret.html:
        * fast/repaint/selection-gap-absolute-child-expected.txt:
        * fast/repaint/selection-gap-absolute-child.html:
        * fast/repaint/selection-gap-flipped-absolute-child-expected.txt:
        * fast/repaint/selection-gap-flipped-absolute-child.html:
        * fast/repaint/selection-gap-transformed-absolute-child-expected.txt:
        * fast/repaint/selection-gap-transformed-absolute-child.html:
        * fast/repaint/selection-gap-transformed-fixed-child-expected.txt:
        * fast/repaint/selection-gap-transformed-fixed-child.html:
        * fast/repaint/selection-paint-invalidation-expected.txt:
        * fast/repaint/selection-ruby-rl-expected.txt:
        * fast/repaint/selection-ruby-rl.html:
        * fast/repaint/text-selection-overflow-hidden-expected.txt:
        * fast/repaint/text-selection-overflow-hidden.html:
        * platform/gtk/TestExpectations:
        * platform/gtk/fast/repaint/selection-ruby-rl-expected.txt: Copied from LayoutTests/fast/repaint/selection-ruby-rl-expected.txt.
        * platform/gtk/fast/repaint/text-selection-overflow-hidden-expected.txt:
        * platform/mac-catalina-wk1/fast/repaint/focus-setting-selection-syncronizing-not-clearing-expected.txt: Added.
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk1/fast/repaint/4776765-expected.txt: Added.
        * platform/mac-wk1/accessibility/mac/focus-setting-selection-syncronizing-not-clearing-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt:
        * platform/mac/TestExpectations:
        * platform/win/fast/repaint/4776765-expected.txt: Added.
        * platform/win/fast/repaint/selection-gap-fixed-child-expected.txt:
        * platform/win/fast/repaint/selection-ruby-rl-expected.txt:
        * platform/win/fast/repaint/text-selection-overflow-hidden-expected.txt:

2022-03-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Mail compose web view no longer scrolls to reveal selection upon showing the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=238271
        rdar://89821087

        Reviewed by Tim Horton.

        While I'm here, adjust the test to ensure that the keyboard is hidden afterwards. When running this test back to
        back with the relevant UIKit feature flag enabled, it sometimes fails without this adjustment, due to keyboard
        disappearance notifications triggered from prior test invocations being fired in subsequent test invocations.

        * editing/selection/ios/scroll-to-reveal-selection-with-keyboard-avoidance-disabled.html:

2022-03-23  Andres Gonzalez  <andresg_22@apple.com>

        ITM: Fix for accessibility/table-attributes.html in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=238258
        <rdar://problem/90707533>

        Reviewed by Chris Fleizach.

        - Modified this test to build the output in memory and log it at the end
        in one call. This makes the test to run faster and not timeout in
        isolated tree mode. In addition, we now retrieve the table element by
        ID instead of setting focus to the body and getting the first child of
        the focused element, which is not ITM friendly.
        - Added the axDebug helper function which unlike debug causes minimum
        side effects by modifying the innerText of the console element instead
        of adding span children to it. Adding children to the console element
        causes event notifications that affect the behavior of the test in both
        ITM on and off.

        * accessibility/table-attributes-expected.txt:
        * accessibility/table-attributes.html:
        * platform/glib/accessibility/table-attributes-expected.txt:
        * resources/accessibility-helper.js:
        (axDebug): Added.
        * resources/js-test.js:
        (getOrCreate): Exposes this function.

2022-03-23  Jon Lee  <jonlee@apple.com>

        Unreviewed fuzzy gardening.

        * fast/multicol/columns-on-body.html:
        * http/tests/images/draw-pattern-slow-load-large-image.html:
        * imported/blink/fast/gradients/gradient-transparency.html:
        * imported/blink/fast/text/international/rtl-space-in-ltr-element.html:
        * svg/custom/hidpi-masking-clipping.svg:

2022-03-23  Robert Jenner  <Jenner@apple.com>

        [ iOS EWS ] editing/deleting/insert-in-orphaned-selection-crash.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238282

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-23  Myles C. Maxfield  <mmaxfield@apple.com>

        Make fast/text/emoji-num-glyphs.html more robust
        https://bugs.webkit.org/show_bug.cgi?id=238283
        <rdar://problem/88842010>

        Unreviewed test gardening.

        Remove the U+26F9 PERSON WITH BALL without the U+FE0F emoji variation selector.

        * fast/text/emoji-num-glyphs-expected.txt:
        * fast/text/emoji-num-glyphs.html:

2022-03-23  Matteo Flores  <matteo_flores@apple.com>

        [ EWS iOS ] editing/spelling/spellcheck-async-remove-frame.html is a crash
        https://bugs.webkit.org/show_bug.cgi?id=238284

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-23  Jer Noble  <jer.noble@apple.com>

        [Cocoa] MSE-backed videos fail to play in Captive Portal mode
        https://bugs.webkit.org/show_bug.cgi?id=237787
        <rdar://89318047>

        Reviewed by Eric Carlson.

        * media/media-source/media-source-allowed-codecs-expected.txt:
        * media/media-source/media-source-allowed-codecs.html:

2022-03-23  Jer Noble  <jer.noble@apple.com>

        [iOS] WebKit app is sometimes not "Now Playing" during initial playback
        https://bugs.webkit.org/show_bug.cgi?id=236993
        <rdar://88827167>

        Reviewed by Eric Carlson.

        Fix the audio-session-category test. Creating the oscilator actually does change the
        AudioSession category to "Ambient", but (previously) only in the next run loop, so a
        synchronous test that the AudioSession category is "None" succeeds. Now that starting
        playback (as happens when creating an audio node) changes the AudioSession synchronously,
        the test begins failing.

        * media/audio-session-category-at-most-recent-playback-expected.txt: Added.
        * media/audio-session-category-at-most-recent-playback.html: Added.
        * media/audio-session-category-expected.txt:
        * media/audio-session-category.html:

2022-03-23  Matteo Flores  <matteo_flores@apple.com>

        Unreviewed, reverting r291721.

        Bug has been fixed

        Reverted changeset:

        "[ EWS iOS ] fast/text/emoji-num-glyphs.html is a flaky text
        failure"
        https://bugs.webkit.org/show_bug.cgi?id=238233
        https://commits.webkit.org/r291721

2022-03-23  Jon Lee  <jonlee@apple.com>

        Turn DOM in GPU Process on by default on iOS layout tests
        https://bugs.webkit.org/show_bug.cgi?id=236547
        rdar://88863036

        Reviewed by Geoffrey Garen.

        * gpu-process/TestExpectations: Transfer expectations.
        * platform/ios-wk2/TestExpectations:

2022-03-23  Kimmo Kinnunen  <kkinnunen@apple.com>

        After losing context due to too many contexts, getError() does not return CONTEXT_LOST_WEBGL
        https://bugs.webkit.org/show_bug.cgi?id=236965

        Reviewed by Kenneth Russell.

        * fast/canvas/webgl/lose-context-on-status-failure-expected.txt:
        * webgl/lose-context-after-context-lost-expected.txt:
        * webgl/max-active-contexts-webglcontextlost-prevent-default-expected.txt:

2022-03-23  Kimmo Kinnunen  <kkinnunen@apple.com>

        Context2D drawImage(img, x, y, w, h) should not throw IndexSizeError when width == 0 or height == 0
        https://bugs.webkit.org/show_bug.cgi?id=238195

        Reviewed by Simon Fraser.

        * fast/canvas/canvas-overloads-drawImage-expected.txt:
        * fast/canvas/canvas-overloads-drawImage.html:
        * fast/canvas/drawImage-with-invalid-args-expected.txt:
        * fast/canvas/drawImage-with-invalid-args.html:

2022-03-23  Tyler Wilcock  <tyler_w@apple.com>

        AccessibilityRenderObject::nextSibling should allow parent differences in the presence of display: contents
        https://bugs.webkit.org/show_bug.cgi?id=238184

        Reviewed by Andres Gonzalez.

        * accessibility/display-contents-search-traversal-expected.txt: Added.
        * accessibility/display-contents-search-traversal.html: Added.
        * platform/glib/TestExpectations: Skip new test.
        * platform/ios/TestExpectations: Enable new test.
        * platform/ios/accessibility/display-contents-search-traversal-expected.txt: Added.
        * platform/win/TestExpectations: Skip new test.

2022-03-23  Patrick Angle  <pangle@apple.com>

        No breakpoints hit on github.com, and some are invalid
        https://bugs.webkit.org/show_bug.cgi?id=235607

        Reviewed by Yusuke Suzuki.

        Add test cases for resolving breakpoints on lines that begin with the end of multi-line strings, comments, and
        template strings.

        * inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt:
        * inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html:
        * inspector/debugger/breakpoints/resources/dump-multiline.js: Added.
        (test):

2022-03-23  Ziran Sun  <zsun@igalia.com>

        [InputElement] Add HTMLInputElement::showPicker() method
        https://bugs.webkit.org/show_bug.cgi?id=237192

        Reviewed by Darin Adler .

        * platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe-expected.txt.

2022-03-23  Youenn Fablet  <youenn@apple.com>

        Computation of Document siteForCookies is buggy in case document is created by window.open
        https://bugs.webkit.org/show_bug.cgi?id=238202
        <rdar://88979099>

        Reviewed by John Wilander.

        * http/tests/cookies/resources/testharness-helpers.js:
        * http/tests/cookies/same-site/popup-from-iframe-same-site-with-post-form-expected.txt: Added.
        * http/tests/cookies/same-site/popup-from-iframe-same-site-with-post-form.html: Added.
        * http/tests/cookies/same-site/popup-same-site-with-post-form-expected.txt: Added.
        * http/tests/cookies/same-site/popup-same-site-with-post-form.html: Added.
        * http/tests/cookies/same-site/resources/popup-iframe.html: Added.

2022-03-23  Razvan Caliman  <rcaliman@apple.com>

        Web Inspector: Styles panel: Unwanted extra dash when autocompleting CSS variable names
        https://bugs.webkit.org/show_bug.cgi?id=237676

        Reviewed by Patrick Angle.

        Add tests for special cases of matching incomplete CSS variable names in autocompletion.

        * inspector/unit-tests/css-keyword-completions-expected.txt:
        * inspector/unit-tests/css-keyword-completions.html:

2022-03-22  Ben Nham  <nham@apple.com>

        Only show notification permission prompt on transient activation
        https://bugs.webkit.org/show_bug.cgi?id=238188

        Reviewed by Youenn Fablet.

        Add test cases to make sure that showing a permission prompt consumes a user gesture.

        * http/tests/notifications/notification-request-permission-no-callback.html:
        * http/tests/notifications/notification-request-permission.html:
        * http/tests/notifications/request-consumes-activation-expected.txt: Added.
        * http/tests/notifications/request-consumes-activation.html: Added.
        * http/tests/push-api/resources/subscribe-tests.js:
        (async testDocumentSubscribeWithUserGesture):
        (async testDocumentSubscribeWithoutUserGesture):
        (async testDocumentSubscribeImpl):
        * http/tests/push-api/subscribe-deny-permissions-expected.txt:
        * http/tests/push-api/subscribe-deny-permissions-on-prompt-expected.txt:
        * http/tests/push-api/subscribe-deny-permissions-on-prompt.html: Added.
        * http/tests/push-api/subscribe-deny-permissions.html:
        * platform/gtk/TestExpectations:
        * platform/mac-wk1/TestExpectations:
        * platform/win/TestExpectations:

2022-03-22  Tyler Wilcock  <tyler_w@apple.com>

        Expose the AX tree of PDFs loaded via iframes on the Mac
        https://bugs.webkit.org/show_bug.cgi?id=238168

        Reviewed by Chris Fleizach.

        * accessibility/mac/iframe-pdf-expected.txt: Added.
        * accessibility/mac/iframe-pdf.html: Added.
        * platform/mac-wk1/TestExpectations:
        Skip new test as it always times out in WK1 (similar to
        accessibility/mac/basic-embed-pdf-accessibility.html)

2022-03-22  Robert Jenner  <Jenner@apple.com>

        [macOS WK2] LayoutTest webaudio/silent-audio-interrupted-in-background.html is a flaky timeout on older OSes (El Capitan / Sierra) (172201)
        https://bugs.webkit.org/show_bug.cgi?id=172201

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [ EWS iOS ] fast/text/emoji-num-glyphs.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238233

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [ EWS iOS ] imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-050.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=238229

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Patrick Angle  <pangle@apple.com>

        Web Inspector: console.log print strings contains '%_' result is Object
        https://bugs.webkit.org/show_bug.cgi?id=235061

        Reviewed by Devin Rousso.

        * inspector/unit-tests/string-utilities-expected.txt:
        * inspector/unit-tests/string-utilities.html:
        
2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r291523-r291501): [ iOS ] fast/dom/intersection-observer-document-leak.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=238227

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [iOS] editing/spelling/editing-word-with-marker-1.html causes the subsequent test to time out
        https://bugs.webkit.org/show_bug.cgi?id=237812

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] fast/text/text-shadow-ink-overflow-missing.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=238211

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        Unreviewed, reverting r291679.

        Expectation should be ImageOnlyFailure

        Reverted changeset:

        "[ iOS EWS ] fast/text/text-shadow-ink-overflow-missing.html
        is a flaky image failure"
        https://bugs.webkit.org/show_bug.cgi?id=238211
        https://commits.webkit.org/r291679

2022-03-22  Robert Jenner  <Jenner@apple.com>

        [ Debug wk2 ] ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData) (223750)
        https://bugs.webkit.org/show_bug.cgi?id=22375Unr

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations: Removing no longer needed test expectation.

2022-03-22  Robert Jenner  <Jenner@apple.com>

        [ BigSur+ ] imported/w3c/web-platform-t ests/media-source/mediasour ce-addsourcebuffer.html (layout-test) is consistently failing (221230)
        https://bugs.webkit.org/show_bug.cgi?id=221230

        Unreviewed test gardening. Rebaseline for test.

        * platform/mac-bigsur-wk1/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
        * platform/mac-wk2/imported/w3c/web-platform-tests/media-source/mediasource-addsourcebuffer-expected.txt: Added.
        * platform/mac/TestExpectations: Removing old expectations.

2022-03-22  Cameron McCormack  <heycam@apple.com>

        Disable remaining HEIC tests
        https://bugs.webkit.org/show_bug.cgi?id=238191
        <rdar://88980849>

        Reviewed by Simon Fraser.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r289402-r289376): [ Debug iOS ] webgl/1.0.3/conformance/uniforms/uniform-samplers-test.html is a constant timeout
        https://bugs.webkit.org/show_bug.cgi?id=237694

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Robert Jenner  <Jenner@apple.com>

        imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html fails (221819)
        https://bugs.webkit.org/show_bug.cgi?id=221819

        Unreviewed test gardening. Re-baseline for wk1.

        * platform/mac-wk1/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest-expected.txt: Added.

2022-03-22  Robert Jenner  <Jenner@apple.com>

        [ macOS Debug ] inspector/console/queryInstances.html is a flaky failure (215814)
        https://bugs.webkit.org/show_bug.cgi?id=215814

        Unreviewed test gardening.

        * platform/mac/TestExpectations: Removing no longer needed test expectation.

2022-03-22  Robert Jenner  <Jenner@apple.com>

        inspector/canvas/setRecordingAutoCaptureFrameCount.html is flaky failing (228011)
        https://bugs.webkit.org/show_bug.cgi?id=228011

        Unreviewed test gardening.

        * platform/mac/TestExpectations: Removing no longer needed test expectation.

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [ iOS GPUP arm64 ] 5 webaudio/* are constant text failures since being unskipped.
        https://bugs.webkit.org/show_bug.cgi?id=238220

        Unreviewed test gardening.

        * platform/ios-simulator/TestExpectations:

2022-03-22  Chris Dumez  <cdumez@apple.com>

        REGRESSION (iOS 15.1 / r280824) QuickLook - model not loading when passing extra parameters
        https://bugs.webkit.org/show_bug.cgi?id=236069
        <rdar://problem/88461772>

        Reviewed by Darin Adler.

        Add layout test coverage.

        * fast/files/blob-with-fragment-as-frame-url-expected.txt: Added.
        * fast/files/blob-with-fragment-as-frame-url.html: Added.

2022-03-22  Matteo Flores  <matteo_flores@apple.com>

        [ iOS EWS ] fast/text/text-shadow-ink-overflow-missing.html is a flaky image failure
        https://bugs.webkit.org/show_bug.cgi?id=238211

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-22  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * gpu-process/TestExpectations:

2022-03-22  Jer Noble  <jer.noble@apple.com>

        YouTube.com - Clicking anywhere on the progress bar pauses the video
        https://bugs.webkit.org/show_bug.cgi?id=237750
        <rdar://problem/90364846>

        Reviewed by Eric Carlson.

        * media/media-source/media-source-unexpected-pause-expected.txt: Added.
        * media/media-source/media-source-unexpected-pause.html: Added.

2022-03-22  Ricky Mondello  <rmondello@apple.com>

        It should be possible to copy text out of "AutoFilledAndViewable" password fields
        https://bugs.webkit.org/show_bug.cgi?id=238160

        Reviewed by Geoffrey Garen.

        * fast/forms/input-autofilled-and-viewable.html: Test copying.

2022-03-22  Jer Noble  <jer.noble@apple.com>

        Fetching a Blob URL with an unbounded Range header do not generate a Content-Range response header
        https://bugs.webkit.org/show_bug.cgi?id=238170

        Reviewed by Eric Carlson.

        * fetch/fetch-blob-unbounded-range-expected.txt: Added.
        * fetch/fetch-blob-unbounded-range.html: Added.

2022-03-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Remove the ATK implementation
        https://bugs.webkit.org/show_bug.cgi?id=238198

        Reviewed by Adrian Perez de Castro.

        * accessibility/gtk/aria-modal-state-exposed-expected.txt:
        * accessibility/gtk/aria-modal-state-exposed.html:
        * accessibility/gtk/name-from-label-expected.txt:
        * accessibility/gtk/name-from-label.html:
        * accessibility/gtk/object-attributes-expected.txt:
        * accessibility/gtk/object-attributes.html:
        * accessibility/language-attribute.html:

2022-03-22  Ziran Sun  <zsun@igalia.com>

        [selection] Change form's selection attribute to unsigned long
        https://bugs.webkit.org/show_bug.cgi?id=237951

        Reviewed by Chris Dumez.

        Update test accordingly. This is inline with Chromium.

        Note that for selection-start-end-readonly.html, two sub-tests
        are now failing. This is the right behaviour since the test assumes
        types for selectionStart and selectionEnd as "int". We could modify the
        test and make the type as unsigned. Interestingly the test script's
        format is strange and it seems having "return" for each line. Simply updating
        some lines on the test scripts causes errors when applying the patch. We have
        decided to address this test in a separate patch (maybe remove the file and added
        a new one with proper format).
        
        * fast/forms/input-appearance-selection.html:
        * fast/forms/selection-functions-expected.txt:
        * fast/forms/selection-start-end-readonly-expected.txt:

2022-03-21  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] Make GraphicsContextState keep track of changes till they are applied
        https://bugs.webkit.org/show_bug.cgi?id=238066
        rdar://90585183

        Reviewed by Simon Fraser.

        * displaylists/extent-includes-shadow-expected.txt:
        * displaylists/extent-includes-transforms-expected.txt:
        * displaylists/layer-dispay-list-expected.txt:
        * gpu-process/TestExpectations:

2022-03-21  Tyler Wilcock  <tyler_w@apple.com>

        AX: AccessibilityObject::visibleCharacterRange is extremely slow when called on objects with lots of text
        https://bugs.webkit.org/show_bug.cgi?id=237678

        Reviewed by Andres Gonzalez.

        Add many new visible character range testcases split across four new tests.

        * accessibility/visible-character-range-basic.html: Added.
        * accessibility/visible-character-range-height-changes.html: Added.
        * accessibility/visible-character-range-scrolling.html: Added.
        * accessibility/visible-character-range-width-changes.html: Added.
        * platform/glib/TestExpectations: Skip new tests.
        * platform/ios-simulator-wk2/TestExpectations:
        Mark new tests as crashing since the old test was crashing in `main`.
        * platform/ios/TestExpectations: Enable new tests.
        * platform/ios/accessibility/visible-character-range-basic-expected.txt: Added.
        * platform/ios/accessibility/visible-character-range-expected.txt: Removed.
        * platform/ios/accessibility/visible-character-range-height-changes-expected.txt: Added.
        * platform/ios/accessibility/visible-character-range-scrolling-expected.txt: Added.
        * platform/ios/accessibility/visible-character-range-width-changes-expected.txt: Added.
        * platform/mac-wk1/TestExpectations: Skip new tests.
        * platform/mac/accessibility/visible-character-range-basic-expected.txt: Added.
        * platform/mac/accessibility/visible-character-range-expected.txt: Removed.
        * platform/mac/accessibility/visible-character-range-height-changes-expected.txt: Added.
        * platform/mac/accessibility/visible-character-range-scrolling-expected.txt: Added.
        * platform/mac/accessibility/visible-character-range-width-changes-expected.txt: Added.
        * platform/win/TestExpectations: Skip new tests.
        * resources/accessibility-helper.js:
        (visibleRange): Added.

2022-03-21  Matteo Flores  <matteo_flores@apple.com>

        [ iOS iPhone 12 ] fast/hidpi & fast/layers/hidpi tests are flaky text/image failing
        https://bugs.webkit.org/show_bug.cgi?id=232384

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-21  Robert Jenner  <Jenner@apple.com>

        REGRESSION: [ Monterey ] imported/w3c/web-platform-tests/html/canvas/element/line-styles/2d.line.width.scaledefault.html is a constant text failure
        <rdar://problem/77527575?

        Unreviewed test gardening.

        * platform/mac/TestExpectations: Removing no longer needed test expectation. 

2022-03-21  Kate Cheney  <katherine_cheney@apple.com>

        nj.gov: Background color incorrect for 'State Vehicles' section
        https://bugs.webkit.org/show_bug.cgi?id=238035
        <rdar://problem/84543795>

        Reviewed by Aditya Keerthi.

        * fast/css/non-form-control-element-drop-appearance-expected.html: Added.
        * fast/css/non-form-control-element-drop-appearance.html: Added.
        * editing/deleting/insert-in-orphaned-selection-crash.html: Added.
        Now that we drop native style for non-form control elements, we need to
        add height to the style to make sure this table element is selectable and
        successfully tests what it needs to test.

2022-03-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r291055.
        https://bugs.webkit.org/show_bug.cgi?id=238145

        Invalid test expectations

        Reverted changeset:

        "[iOS] Hard link AVPictureInPictureController"
        https://bugs.webkit.org/show_bug.cgi?id=237227
        https://commits.webkit.org/r291055

2022-03-21  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290797-r290793): [ iOS Debug ] 4 editing/selection/* tests are constant timeouts
        https://bugs.webkit.org/show_bug.cgi?id=238155

        Unreviewed test gardening.

        * platform/ios/TestExpectations:
        
2022-03-21  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Set the WebGPU WKPreference to true in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=238130

        Reviewed by Sam Weinig.

        * platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
        * platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:

2022-03-21  Tyler Wilcock  <tyler_w@apple.com>

        AX: Include display: contents elements in the AX tree
        https://bugs.webkit.org/show_bug.cgi?id=237834

        Reviewed by Chris Fleizach.

        * accessibility/aria-hidden-display-contents-element-expected.txt: Added.
        * accessibility/aria-hidden-display-contents-element.html: Added.
        * accessibility/display-contents-element-roles-expected.txt: Added.
        * accessibility/display-contents-element-roles.html: Added.
        * platform/glib/accessibility/aria-hidden-display-contents-element-expected.txt: Added.
        * platform/glib/accessibility/display-contents-element-roles-expected.txt: Added.
        * platform/ios/TestExpectations: Enable new tests.
        * platform/ios/accessibility/aria-hidden-display-contents-element-expected.txt: Added.
        * platform/ios/accessibility/display-contents-element-roles-expected.txt: Added.
        * platform/win/TestExpectations: Skip display-contents-element-roles.html.
        * platform/win/accessibility/aria-hidden-display-contents-element-expected.txt: Added.

2022-03-21  Ziran Sun  <zsun@igalia.com>

        [selection] HTMLTextFormControlElement::subtreeHasChanged() shouldn't be called in setRangeText
        https://bugs.webkit.org/show_bug.cgi?id=237720

        Reviewed by Chris Dumez.

        Update test expectation as the test is now passing.
        * fast/forms/setrangetext-expected.txt:

2022-03-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r286955): Rendering Links during search: highlighting fails
        https://bugs.webkit.org/show_bug.cgi?id=237816

        Reviewed by Simon Fraser.

        * fast/text/selection-with-text-decorations-expected.html: Added.
        * fast/text/selection-with-text-decorations.html: Added.
        * platform/ios/TestExpectations:

2022-03-19  Tyler Wilcock  <tyler_w@apple.com>

        Rebaseline accessibility/roles-exposed.html for Mac WK1 after https://commits.webkit.org/r291401
        https://bugs.webkit.org/show_bug.cgi?id=238099

        Reviewed by Chris Fleizach.

        * platform/mac-wk1/accessibility/roles-exposed-expected.txt:

2022-03-19  Oriol Brufau  <obrufau@igalia.com>

        [cssom] Implement border-image serialization
        https://bugs.webkit.org/show_bug.cgi?id=238102

        Reviewed by Darin Adler.

        Expect cssText to serialize border-image instead of longhands.

        * fast/css/parse-border-image-repeat-null-crash-expected.txt:

2022-03-19  Oriol Brufau  <obrufau@igalia.com>

        Fix hasExplicitlySetBorderRadius flag
        https://bugs.webkit.org/show_bug.cgi?id=238062

        Reviewed by Darin Adler.

        Add test, skip it except in iOS and Mac.

        * TestExpectations:
        * fast/css/appearance-apple-pay-button-border-radius-longhands-expected.html: Added.
        * fast/css/appearance-apple-pay-button-border-radius-longhands.html: Added.
        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-19  Myles C. Maxfield  <mmaxfield@apple.com>

        Make fast/text/emoji-num-glyphs.html more robust
        https://bugs.webkit.org/show_bug.cgi?id=238120
        <rdar://problem/88842010>

        Unreviewed test gardening.

        * fast/text/emoji-num-glyphs-expected.txt:
        * fast/text/emoji-num-glyphs.html:

2022-03-19  Antoine Quint  <graouts@webkit.org>

        REGRESSION (r285529): Flash of missing text when content on https://ahumanfuture.co animates
        https://bugs.webkit.org/show_bug.cgi?id=237972
        rdar://90385586

        Reviewed by Simon Fraser.

        Add a new test which would fail prior to the source change. In this test we start two animations: a "scale"
        animation which lasts for 100ms, and an "opacity" animation which lasts much longer but only visually updates
        for the duration of the "scale" animation. When the "scale" animation completes, we stop the test and ensure
        that the reference test shows that the "opacity" animation is at the state it should be in at at that time,
        and was not rewound due to the bug being fixed.

        * webanimations/accelerated-animation-opacity-animation-begin-time-after-scale-animation-ends-expected.html: Added.
        * webanimations/accelerated-animation-opacity-animation-begin-time-after-scale-animation-ends.html: Added.

2022-03-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION(?): Emulate User Gesture doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=232584
        <rdar://problem/84899576>

        Reviewed by Patrick Angle.

        * inspector/debugger/breakpoint-action-emulateUserGesture-hasTransientActiviation.html: Added.
        * inspector/debugger/breakpoint-action-emulateUserGesture-hasTransientActiviation-expected.txt: Added.
        * inspector/debugger/evaluateOnCallFrame-emulateUserGesture-hasTransientActivation.html: Added.
        * inspector/debugger/evaluateOnCallFrame-emulateUserGesture-hasTransientActivation-expected.txt: Added.
        * inspector/runtime/callFunctionOn-emulateUserGesture-hasTransientActivation.html: Added.
        * inspector/runtime/callFunctionOn-emulateUserGesture-hasTransientActivation-expected.txt: Added.
        * inspector/runtime/evaluate-emulateUserGesture-hasTransientActivation.html: Added.
        * inspector/runtime/evaluate-emulateUserGesture-hasTransientActivation-expected.txt: Added.

2022-03-21  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed test gardening.

        * fast/viewport/watchos/viewport-adaptations-after-navigation-expected.txt:
        * fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html:

2022-03-18  Ryan Haddad  <ryanhaddad@apple.com>

        [macOS arm64] webrtc/vp9-profile2.html is consistently timing out
        https://bugs.webkit.org/show_bug.cgi?id=238104

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-03-18  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        Allow history swipe in scroller with overscroll-behavior
        https://bugs.webkit.org/show_bug.cgi?id=235851

        Reviewed by Simon Fraser.

        * scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-overscroll-behavior-expected.txt: Added.
        * scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-overscroll-behavior.html: Added.

2022-03-18  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r290628): Scrubber makes a visual trail when scrubbing on tv.youtube.com
        https://bugs.webkit.org/show_bug.cgi?id=238047
        <rdar://problem/90451319>

        Reviewed by Alan Bujtas.

        * compositing/repaint/move-backing-sharing-layer-expected.txt: Added.
        * compositing/repaint/move-backing-sharing-layer.html: Added.

2022-03-18  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Initial import of the GstWebRTC backend
        https://bugs.webkit.org/show_bug.cgi?id=236540

        Reviewed by Carlos Garcia Campos and Xabier Rodriguez-Calvar.

        * platform/glib/TestExpectations: Flag most WebRTC as failing. During this first development
        cycle I focused mostly on fixing crashes and only fixed a few failures. The remaining ones
        will be adressed in follow-up patches.
        * platform/glib/fast/mediastream/RTCPeerConnection-localDescription-expected.txt: Added.
        * platform/glib/fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt: Added.
        * platform/glib/fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt: Added.
        * platform/glib/fast/mediastream/RTCPeerConnection-stable-expected.txt: Added.

2022-03-18  Kimmo Kinnunen  <kkinnunen@apple.com>

        Recycling a webgl context when it has been lost and restored causes a crash
        https://bugs.webkit.org/show_bug.cgi?id=238024

        Reviewed by Geoffrey Garen.

        Creating excessive amount of contexts will lose the oldest context via
        "simulated context lost" logic, making the contexts non-restorable.

        Previously the test tried to test that requesting a restore on a context that
        had simulated context lost would not restore. However, the test was invalid,
        as it asserted that the context is still lost immediately after preventDefault():

          event.preventDefault();
          if (!contexts[0].isContextLost())
             document.getElementById("result").textContent = "FAIL";

        This is not correct, as the preventDefault() only informs the browser
        that the context should be restored. The restore happens asynchronously.

        Fix the test logic and add extra cases. Make the logic as such:
        1. Lose the context in some way
        2. Wait for context lost event, request restore
        3. Optionally do something that would trigger another way of losing the context
        4. Run assertions about context being still expectedly lost

        The failures in the test expectation:
        FAIL getError expected: INVALID_OPERATION. Was NO_ERROR :
        FAIL getError expected: CONTEXT_LOST_WEBGL. Was NO_ERROR :
        bug 236965

        FAIL Expected restore be ignored, but it was not.
        bug 238034

        * webgl/max-active-contexts-webglcontextlost-prevent-default.html:

2022-03-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATSPI] accessibility/dropdown-value.html is timing out since added in 248145@main
        https://bugs.webkit.org/show_bug.cgi?id=237803
        <rdar://problem/90193311>

        Reviewed by Andres Gonzalez.

        * platform/gtk/TestExpectations: Unskip the test.

2022-03-18  Antoine Quint  <graouts@webkit.org>

        REGRESSION(r291129-r291128): [WK1 EWS] 3 imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/* tests are a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238054
        <rdar://problem/90458721>

        Unreviewed test gardening.

        The scroll-behavior property is not enabled on WK1 so we must have specific test expectations for these tests.

        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt: Added.

2022-03-17  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r291129-r291128): [WK1 EWS] 3 imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/* tests are a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=238054

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-03-17  Myles C. Maxfield  <mmaxfield@apple.com>

        Make Emoji gender tests more robust
        https://bugs.webkit.org/show_bug.cgi?id=238057
        <rdar://problem/88842010>

        Unreviewed.

        U+26F9 PERSON WITH BALL might have a non-emoji glyph, so we can't expect it to
        always render in its emoji form without a variation selector.

        * fast/text/emoji-gender-2-3-expected.html:
        * fast/text/emoji-gender-2-3.html:
        * fast/text/emoji-gender-fe0f-3-expected.html:
        * fast/text/emoji-gender-fe0f-3.html:

2022-03-17  Myles C. Maxfield  <mmaxfield@apple.com>

        Make fast/text/emoji-num-glyphs.html more robust
        https://bugs.webkit.org/show_bug.cgi?id=238055
        <rdar://problem/88842010>

        Unreviewed.

        U+26F9 PERSON WITH BALL might have a non-emoji glyph. If it has one, and the OS prefers it over the
        emoji glyph, then this test will fail. The solution is to use the emoji-style variation selector
        to specifically request the emoji form.

        * fast/text/emoji-num-glyphs.html:

2022-03-17  Alex Christensen  <achristensen@webkit.org>

        PerformanceNavigationTiming Response Start unavailable when using Service Worker Cache
        https://bugs.webkit.org/show_bug.cgi?id=237317

        Reviewed by Youenn Fablet.

        Test that these values are reasonable after loading the main resource from a service worker's cache.

        * http/wpt/service-workers/navigation-timing.https-expected.txt: Added.
        * http/wpt/service-workers/navigation-timing.https.html: Added.
        * http/wpt/service-workers/navigation-timing.js: Added.
        (event.event.waitUntil.caches.open.string_appeared_here.then):
        (event.event.respondWith.caches.open.string_appeared_here.then):
        * http/wpt/service-workers/resources/navigation-timing-part-2.html: Added.

2022-03-17  Cameron McCormack  <heycam@apple.com>

        Avoid calling connectionClosedFromServer on a connection twice when a version change is active
        https://bugs.webkit.org/show_bug.cgi?id=215271

        Reviewed by Sihui Liu.

        * platform/ios-wk2/TestExpectations:
        * platform/mac/TestExpectations:
        * platform/win/TestExpectations:
        * platform/wincairo/TestExpectations:
        Remove test flakiness annotations.

2022-03-17  Simon Lewis  <simon.lewis@apple.com>

        Functional tests for read and write methods of JSIPCStreamConnectionBuffer
        https://bugs.webkit.org/show_bug.cgi?id=237730
        rdar://problem/89676460

        Reviewed by Kimmo Kinnunen.

        * ipc/stream-buffer-read-write-expected.txt: Added.
        * ipc/stream-buffer-read-write.html: Added.

2022-03-17  Ellie Epskamp-Hunt  <eepskamphunt@apple.com>

        When a “autofilled and obscured” field becomes empty, turn “autofilled and obscured” off
        https://bugs.webkit.org/show_bug.cgi?id=235256

        Reviewed by Devin Rousso.

        Add tests to verify that when a text field becomes empty, the autofilled-and-obscured
        property is removed from that field.

        * fast/forms/input-autofilled-and-obscured-clear-field-programatically-expected.txt: Added.
        * fast/forms/input-autofilled-and-obscured-clear-field-programatically.html: Added.
        Delete the text by setting the input's value to an empty string.
        * fast/forms/input-autofilled-and-obscured-clear-form-programatically-expected.txt: Added.
        * fast/forms/input-autofilled-and-obscured-clear-form-programatically.html: Added.
        Delete the text by calling reset on the form.
        * fast/forms/input-autofilled-and-obscured-expected.txt: Added.
        * fast/forms/input-autofilled-and-obscured.html: Added.
        Delete the text as a user would.

2022-03-17  Ben Nham  <nham@apple.com>

        Only show notification permission prompt on user gesture
        https://bugs.webkit.org/show_bug.cgi?id=237946

        Reviewed by Geoffrey Garen.

        Add test cases to make sure that prompting for notification permissions fails when not
        handling a user gesture and succeeds when handling a user gesture.

        * http/tests/notifications/notification-request-permission-no-callback.html:
        * http/tests/notifications/notification-request-permission.html:
        * http/tests/notifications/request-expected.txt:
        * http/tests/notifications/request-with-promise-expected.txt:
        * http/tests/notifications/request-with-promise.html:
        * http/tests/notifications/request.html:
        * http/tests/push-api/resources/subscribe-iframe-cross-origin.html:
        * http/tests/push-api/resources/subscribe-iframe-same-origin.html:
        * http/tests/push-api/resources/subscribe-tests.js:
        (async testDocumentSubscribeWithUserGesture): Added.
        (async testDocumentSubscribeWithoutUserGesture): Added.
        (async testDocumentSubscribeImpl): Added.
        (async testDocumentSubscribe): Deleted.
        * http/tests/push-api/subscribe-default-permissions-expected.txt:
        * http/tests/push-api/subscribe-default-permissions-iframe-cross-origin-expected.txt:
        * http/tests/push-api/subscribe-default-permissions-iframe-same-origin-expected.txt:
        * http/tests/push-api/subscribe-default-permissions.html:
        * http/tests/push-api/subscribe-deny-permissions-expected.txt:
        * http/tests/push-api/subscribe-deny-permissions.html:
        * http/tests/push-api/subscribe-grant-permissions-expected.txt:
        * http/tests/push-api/subscribe-grant-permissions.html:

2022-03-17  Andres Gonzalez  <andresg_22@apple.com>

        Fix for accessibility/aria-tab-xxx.html tests in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=237980
        <rdar://problem/90392451>

        Reviewed by Chris Fleizach.

        these tests are flaky in isolated tree mode due to setting the focus to
        the body is async.

        * accessibility/aria-tab-role-on-buttons-expected.txt:
        * accessibility/aria-tab-role-on-buttons.html:
        * accessibility/aria-tab-roles.html:
        * platform/glib/accessibility/aria-tab-roles-expected.txt:
        * platform/mac/accessibility/aria-tab-role-on-buttons-expected.txt:
        * platform/mac/accessibility/aria-tab-roles-expected.txt:
        * platform/win/accessibility/aria-tab-role-on-buttons-expected.txt:
        * platform/win/accessibility/aria-tab-roles-expected.txt:

2022-03-17  Andres Gonzalez  <andresg_22@apple.com>

        Make accessibility/roles-exposed.html faster.
        https://bugs.webkit.org/show_bug.cgi?id=237960
        <rdar://problem/90371580>

        Reviewed by Chris Fleizach.

        Make this test to run faster by storing the output in memory and
        modifying the DOM once as opposed to doing it in each iteration. This is
        particularly important in isolated tree mode, since the test is failing
        because it takes too long to execute.
        Also modify the test and expectations to explicitly output when the AX
        object cannot be retrieved, i.e., it is not exposed for some reason.

        * accessibility/roles-exposed.html:
        * platform/mac-wk2/accessibility/roles-exposed-expected.txt:

2022-03-17  Andres Gonzalez  <andresg_22@apple.com>

        Fix for accessibility/aria-option-role.html in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=237975
        <rdar://problem/90386629>

        Reviewed by Chris Fleizach.

        This test was flaky in isolated tree mode due to setting the focus to
        the body is async. Solved by retrieving the AX element of the listbox
        directly.

        * accessibility/aria-option-role.html:
        * platform/glib/accessibility/aria-option-role-expected.txt:
        * platform/mac/accessibility/aria-option-role-expected.txt:
        * platform/win/accessibility/aria-option-role-expected.txt:

2022-03-17  Kimmo Kinnunen  <kkinnunen@apple.com>

        WebGL context lost event is not sent again for contexts that are lost and restored
        https://bugs.webkit.org/show_bug.cgi?id=237952

        Reviewed by Antti Koivisto.

        * platform/glib/TestExpectations:
        * webgl/lose-context-after-context-lost-expected.txt:
        * webgl/lose-context-after-context-lost.html:
        Enable the test for GPUP, it works now after
        r290816 "WebGL context count is not limited for GPU process.".
        Adjust the order of waiting for webglcontextlost and checking
        isContextLost(), so that it works when context loss is reported
        asynchronously by GPUP.

        * webgl/multiple-context-losses-expected.txt: Added.
        * webgl/multiple-context-losses.html: Added.
        Add a test testing the bug fix.

2022-03-17  Ziran Sun  <zsun@igalia.com>

        [Selection] Fixes selection range settings for TEXTAREA
        https://bugs.webkit.org/show_bug.cgi?id=237641

        Reviewed by Chris Dumez.

        Updated two tests that expect resetting value of textarea to change selection to 0.
        These changes are in line with changes made in Chromium.
        * editing/pasteboard/paste-into-textarea-with-new-line.html:
        * fast/spatial-navigation/snav-textarea.html:

2022-03-17  Youenn Fablet  <youenn@apple.com>

        AudioContext is suspended on iOS when page is backgrounded
        https://bugs.webkit.org/show_bug.cgi?id=237878

        Reviewed by Eric Carlson.

        * webaudio/suspend-context-while-backgrounded-expected.txt: Added.
        * webaudio/suspend-context-while-backgrounded.html: Added.

2022-03-16  Matteo Flores  <matteo_flores@apple.com>

        [ iOS EWS ] imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=237987

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-16  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Unreviewed test gardening

        * platform/wincairo/TestExpectations:
        * platform/wincairo/css1/box_properties/margin_right-expected.txt:
        * platform/wincairo/css1/box_properties/padding_right-expected.txt:
        * platform/wincairo/css2.1/t0505-c16-descendant-01-e-expected.txt:
        * platform/wincairo/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
        * platform/wincairo/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
        * platform/wincairo/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
        * platform/wincairo/fast/dom/scroll-reveal-top-overflow-expected.txt:
        * platform/wincairo/fast/html/details-writing-mode-expected.txt:
        * platform/wincairo/fast/text/international/synthesized-italic-vertical-latin-expected.txt:

2022-03-16  Rob Buis  <rbuis@igalia.com>

        Sync css/css-contain from WPT
        https://bugs.webkit.org/show_bug.cgi?id=237705

        Reviewed by Manuel Rego Casasnovas.

        Mark as failing for now.

        * platform/ios/TestExpectations:

2022-03-16  Kate Cheney  <katherine_cheney@apple.com>

        [ MacOS ] http/tests/security/content SecurityPolicy/frame-src-cross-origin-load.html is a flakey failure (230428)
        https://bugs.webkit.org/show_bug.cgi?id=230428
        <rdar://problem/83254559>

        Reviewed by Brent Fulgham.

        The flakiness was caused by relying on ordered output from iframe
        loads that are not guaranteed to load in order. This change loads
        iframes in script to make sure they load only after the previous
        iframe has loaded.

        * http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load-expected.txt:
        * http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load.html:
        * platform/mac/TestExpectations:

2022-03-16  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][1.20] media/video-src-blob-perf.html failing
        https://bugs.webkit.org/show_bug.cgi?id=237256
        <rdar://problem/89530009>

        Unreviewed, unflag test passing after Flatpak SDK update.

        * platform/glib/TestExpectations:

2022-03-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Refactor some position information hit-testing logic related to data detectors in Live Text
        https://bugs.webkit.org/show_bug.cgi?id=237927

        Reviewed by Tim Horton.

        Add a simple layout test that exercises context menu presentation when long pressing a data detector result
        inside Live Text in an image. While this behavior isn't new, it's currently untested before this patch.

        * fast/images/text-recognition/ios/show-data-detector-context-menu-expected.txt: Added.
        * fast/images/text-recognition/ios/show-data-detector-context-menu.html:

        Also add `-webkit-user-select: none;` to test that disabling text selection does not also disable the ability to
        present the context menu over data detectors by long pressing on iOS.

2022-03-16  Youenn Fablet  <youenn@apple.com>

        redirectCount returns 0 when using a Service Worker
        https://bugs.webkit.org/show_bug.cgi?id=235710
        <rdar://problem/88432190>

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/navigation-redirect-main-frame.https.html:

2022-03-16  Youenn Fablet  <youenn@apple.com>

        LayoutTests/webaudio tests are skipped in iOS
        https://bugs.webkit.org/show_bug.cgi?id=237889

        Unreviewed.

        Unskip tests and removed obsolete iOS specific expected.txt files.

        * platform/ios/TestExpectations:
        * platform/ios/webaudio/analyser-exception-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffer-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffer-neuter-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-channels-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-ended-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-exception-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-loop-comprehensive-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-loop-points-expected.wav: Removed.
        * platform/ios/webaudio/audiobuffersource-playbackState-expected.txt: Removed.
        * platform/ios/webaudio/audiobuffersource-playbackrate-expected.wav: Removed.
        * platform/ios/webaudio/audiobuffersource-start-expected.txt: Removed.
        * platform/ios/webaudio/audiochannelmerger-basic-expected.txt: Removed.
        * platform/ios/webaudio/audiochannelsplitter-expected.txt: Removed.
        * platform/ios/webaudio/audionode-expected.txt: Removed.
        * platform/ios/webaudio/biquadfilternode-basic-expected.txt: Removed.
        * platform/ios/webaudio/codec-tests/aac/vbr-128kbps-44khz-expected.wav: Removed.
        * platform/ios/webaudio/codec-tests/mp3/128kbps-44khz-expected.wav: Removed.
        * platform/ios/webaudio/codec-tests/vorbis/vbr-128kbps-44khz-expected.txt: Removed.
        * platform/ios/webaudio/codec-tests/vorbis/vbr-96kbps-44khz-expected.txt: Removed.
        * platform/ios/webaudio/codec-tests/wav/24bit-22khz-resample-expected.wav: Removed.
        * platform/ios/webaudio/convolver-setBuffer-null-expected.txt: Removed.
        * platform/ios/webaudio/decode-audio-data-basic-expected.txt: Removed.
        * platform/ios/webaudio/delaynode-maxdelaylimit-expected.txt: Removed.
        * platform/ios/webaudio/distance-exponential-expected.txt: Removed.
        * platform/ios/webaudio/distance-inverse-expected.txt: Removed.
        * platform/ios/webaudio/distance-linear-expected.txt: Removed.
        * platform/ios/webaudio/javascriptaudionode-expected.txt: Removed.
        * platform/ios/webaudio/mediaelementaudiosourcenode-expected.txt: Removed.
        * platform/ios/webaudio/note-grain-on-play-expected.txt: Removed.
        * platform/ios/webaudio/note-grain-on-timing-expected.txt: Removed.
        * platform/ios/webaudio/oscillator-basic-expected.txt: Removed.
        * platform/ios/webaudio/oscillator-custom-expected.wav: Removed.
        * platform/ios/webaudio/oscillator-ended-expected.txt: Removed.
        * platform/ios/webaudio/oscillator-sawtooth-expected.wav: Removed.
        * platform/ios/webaudio/oscillator-square-expected.wav: Removed.
        * platform/ios/webaudio/oscillator-triangle-expected.wav: Removed.
        * platform/ios/webaudio/pannernode-basic-expected.txt: Removed.
        * platform/ios/webaudio/realtimeanalyser-fft-sizing-expected.txt: Removed.

2022-03-15  Alan Bujtas  <zalan@apple.com>

        REGRESSION (r282737): `text-shadow` is clipped
        https://bugs.webkit.org/show_bug.cgi?id=237898
        <rdar://problem/90320701>

        Reviewed by Darin Adler.

        * fast/text/text-shadow-ink-overflow-missing-expected.html: Added.
        * fast/text/text-shadow-ink-overflow-missing.html: Added.

2022-03-15  Jean-Yves Avenard  <jya@apple.com>

        REGRESSION(r287249): [ Monterey wk2 ] media/media-source/media-webm-vorbis-partial.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=236656
        rdar://88978504

        Reviewed by Eric Carlson.

        Update test expectations, they didn't get committed after the test got
        modified in bug 236211

        * media/media-source/media-webm-vorbis-partial-expected.txt:
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-03-15  Patrick Griffis  <pgriffis@igalia.com>

        Add initial implementation of Fetch Metadata
        https://bugs.webkit.org/show_bug.cgi?id=204744

        Reviewed by Youenn Fablet.

        Skip fewer of the Fetch Metadata tests. Many still timeout and are still
        being worked on.

        * TestExpectations:
        * http/wpt/fetch/fetch-metadata-same-origin-redirect-expected.txt: Added.
        * http/wpt/fetch/fetch-metadata-same-origin-redirect.html: Added.
        * platform/mac-wk1/TestExpectations:
        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/metadata/fetch-preflight.https.sub.any-expected.txt: Added.

2022-03-15  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] ASSERTION FAILED: m_isWaitingForDidUpdateGeometry on accessibility/visible-character-range.html
        https://bugs.webkit.org/show_bug.cgi?id=237557

        Unreviewed test gardening.

        * platform/ios-simulator-wk2/TestExpectations:

2022-03-15  Lauro Moura  <lmoura@igalia.com>

        [GLIB] Unreviewed gardening
        https://bugs.webkit.org/show_bug.cgi?id=237902

        * platform/glib/TestExpectations:
        * platform/gtk/TestExpectations:
        * platform/wpe/TestExpectations:

2022-03-15  Matteo Flores  <matteo_flores@apple.com>

        A combination of scrolling and a content change can leave a fixed layer in the wrong place
        https://bugs.webkit.org/show_bug.cgi?id=203112

        Unreviewed test gardening.

        * platform/ios-simulator-wk2/TestExpectations:

2022-03-15  Matteo Flores  <matteo_flores@apple.com>

        Implement ElementInternals
        https://bugs.webkit.org/show_bug.cgi?id=197960

        Unreviewed test gardening.

        * platform/ipad/TestExpectations:

2022-03-15  Matteo Flores  <matteo_flores@apple.com>

        [GPU Process] Test failures in writing modes
        https://bugs.webkit.org/show_bug.cgi?id=236921

        Unreviewed test gardening.

        * gpu-process/TestExpectations:

2022-03-15  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION: [ iOS release wk2 ] compositing/debug-borders-dynamic.html is a flaky image failure
        https://github.com/Smackteo

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-15  Gabriel Nava Marino  <gnavamarino@apple.com>

        Crash in KeyframeList.cpp:183 in WebCore::KeyframeList::fillImplicitKeyframes
        https://bugs.webkit.org/show_bug.cgi?id=237858

        Reviewed by Antoine Quint.

        * animations/fill-implicit-keyframes-crash-expected.txt: Added.
        * animations/fill-implicit-keyframes-crash.html: Added.

2022-03-15  Youenn Fablet  <youenn@apple.com>

        Make sure to end any pending AudioSession interruption when activating it
        https://bugs.webkit.org/show_bug.cgi?id=237654
        <rdar://88405081>

        Reviewed by Eric Carlson.

        * platform/ios/mediastream/getUserMedia-override-audio-session-interruption-expected.txt: Added.
        * platform/ios/mediastream/getUserMedia-override-audio-session-interruption.html: Added.

2022-03-15  Youenn Fablet  <youenn@apple.com>

        AudioContext stops playing when minimizing or moving the macOS Safari window to the background.
        https://bugs.webkit.org/show_bug.cgi?id=231105
        <rdar://problem/83889697>

        Reviewed by Eric Carlson.

        Use internals API to be working on iOS as well (this does not trigger enterBackground code path).

        * webaudio/silent-audio-interrupted-in-background-expected.txt:
        * webaudio/silent-audio-interrupted-in-background.html:

2022-03-14  Lauro Moura  <lmoura@igalia.com>

        [GLIB] Unreviewed, gardening crash and timeout
        https://bugs.webkit.org/show_bug.cgi?id=237873

        * platform/glib/TestExpectations:

2022-03-14  Robert Jenner  <Jenner@apple.com>

        [ Mac wk1 ] 8X imported/w3c/web-platform-tests/pointerevents/pointere vent (layout-tests) are flaky text failures (236128)
        https://bugs.webkit.org/show_bug.cgi?id=236128

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations: Disabling test that is believed to cause the others to fail as a test.

2022-03-14  Robert Jenner  <Jenner@apple.com>

        WindowServer returned not alive with context:,unresponsive work processor(s)
        <rdar://86037417>

        Uneviewed test gardening.

        * platform/ios-wk2/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-03-14  Antoine Quint  <graouts@webkit.org>

        [model] <model interactive> doesn't allow model to be rotated on iOS
        https://bugs.webkit.org/show_bug.cgi?id=237831
        rdar://89698247

        Reviewed by Simon Fraser.

        Add a test where the <model> element is added to the DOM with the "interactive"
        HTML attribute already set.

        * model-element/model-element-interactive-dragging-expected.txt:
        * model-element/model-element-interactive-dragging.html:
        * model-element/resources/model-utils.js:
        (const.makeModel):
        (const.readyModel.async test):

2022-03-14  Oriol Brufau  <obrufau@igalia.com>

        [css] Implement 'text-decoration' as a shorthand.
        https://bugs.webkit.org/show_bug.cgi?id=237175

        Reviewed by Darin Adler.

        Update tests to take into account that 'text-decoration' is a shorthand.

        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * fast/css/getComputedStyle/getComputedStyle-text-decoration-expected.txt:
        * fast/css/getComputedStyle/getComputedStyle-text-decoration.html:
        * fast/css/getComputedStyle/resources/property-names.js:
        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand-expected.txt:
        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-03-14  Antoine Quint  <graouts@webkit.org>

        [model] model-element/model-element-camera.html fails due to `promise_rejects` being undefined
        https://bugs.webkit.org/show_bug.cgi?id=237833
        rdar://88982597

        Unreviewed test fix after testharness.js was updated in bug 235398 but neglected to update this
        test to use promise_rejects_dom.

        * model-element/model-element-camera.html:

2022-03-14  Matteo Flores  <matteo_flores@apple.com>

        [GTK][WPE] EXIF orientation tests are failing since added in r249364 - "EXIF orientation should be respected when rendering images"
        https://bugs.webkit.org/show_bug.cgi?id=201982

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-14  Matteo Flores  <matteo_flores@apple.com>

        [ iOS iPhone 12 ] fast/hidpi & fast/layers/hidpi tests are flaky text/image failing
        https://bugs.webkit.org/show_bug.cgi?id=232384

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-14  Enrique Ocaña González  <eocanha@igalia.com>

        [MSE][SourceBuffer] Fix removal of paddings from buffered range
        https://bugs.webkit.org/show_bug.cgi?id=237780

        Reviewed by Jer Noble.

        This tests that overlapped samples in the boundaries of removal ranges aren't leaked.

        This patch is authored by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>
        See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/797

        * media/media-source/media-source-remove-overlapped-expected.txt: Added.
        * media/media-source/media-source-remove-overlapped.html: Added.

2022-03-14  Youenn Fablet  <youenn@apple.com>

        [ MacOS ] imported/w3c/web-platform-tests/webrtc-extensions/transfer-datachannel.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=230116
        <rdar://problem/82936812>

        Unreviewed.

        * platform/mac/TestExpectations:
        Unflake test now that is passing consistently on bots.

2022-03-14  Youenn Fablet  <youenn@apple.com>

        [BigSur wk2] http/tests/fetch/redirectmode-and-preload.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=230112
        <rdar://problem/82932781>

        Unreviewed.

        * platform/mac-wk2/TestExpectations:
        Unflake test now that is passing consistently on bots.

2022-03-14  Youenn Fablet  <youenn@apple.com>

        [ BigSur wk2 arm64 ] 4 webrtc/ Layout-tests are consistently timing out
        https://bugs.webkit.org/show_bug.cgi?id=223043
        <rdar://problem/75280718>

        Unreviewed.

        * platform/mac/TestExpectations:
        Unflake tests now that are passing consistently on bots.

2022-03-12  Jean-Yves Avenard  <jya@apple.com>

        Safari produces scrambled output for some webm videos with vp8 codec.
        https://bugs.webkit.org/show_bug.cgi?id=236754

        Reviewed by Eric Carlson.

        VP8 files were generated such that alternative reference frames were used:
        $ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 1 test-vp8-hiddenframes.webm
        $ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 2 test-vp8-hiddenframes.webm

        The command used to extract the last frame in png format was:
        $ ffmpeg -sseof -3 -i test-vp8-hiddenframes.webm -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -update 1 -q:v 1 test-vp8-hiddenframes.png

        * TestExpectations:
        * media/content/test-vp8-hiddenframes.png: Added.
        * media/content/test-vp8-hiddenframes.webm: Added.
        * media/media-source/media-source-vp8-hiddenframes-expected.html: Added.
        * media/media-source/media-source-vp8-hiddenframes.html: Added.
        * media/media-vp8-hiddenframes-expected.html: Added.
        * media/media-vp8-hiddenframes.html: Added.
        * media/utilities.js: Added.
        (once):
        (fetchWithXHR):
        (loadSegment):

2022-03-11  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        [iOS] Fix ovserscroll-behavior for main document
        https://bugs.webkit.org/show_bug.cgi?id=237696

        Reviewed by Simon Fraser.

        Added test that does a scroll expecting a rubberband, sets overscroll-behavior:none for 
        the body, then does another scroll, expected that no rubberband occurs.

        * fast/scrolling/ios/overscroll-behavior-on-body-expected.txt: Added.
        * fast/scrolling/ios/overscroll-behavior-on-body.html: Added.

2022-03-11  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] fast/events/ios/rotation/layout-viewport-during-safari-type-rotation.html is flaky failing
        https://bugs.webkit.org/show_bug.cgi?id=231266

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-11  Alan Bujtas  <zalan@apple.com>

        [iOS] Unreviewed gardening after r291169.

        * platform/ios/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:

2022-03-11  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Support authenticatorSelection.residentKey ResidentKeyRequirement
        https://bugs.webkit.org/show_bug.cgi?id=237567
        rdar://89788378

        Reviewed by Brent Fulgham and Chris Dumez.

        Add layout tests using residentKey field.

        * http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
        * http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-success-hid.https.html:

2022-03-11  Don Olmstead  <don.olmstead@sony.com>

        Platforms implementing WebSocketTask pass hybi/close-and-server-script-exception-expected.txt
        https://bugs.webkit.org/show_bug.cgi?id=237727

        Reviewed by Alex Christensen.

        The root expected.txt had a line with FAIL but all platforms that implement WebSocketTask
        PASS the test fully. Make this the default and remove redundant expectations and add a
        FAIL for Apple WebKitLegacy ports which don't implement WebSocketTask.

        * http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt:
        * platform/glib/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
        * platform/ios-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
        * platform/mac-wk1/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt.
        * platform/mac-wk2/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Removed.
        * platform/win/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/close-and-server-script-exception-expected.txt.

2022-03-11  Alan Bujtas  <zalan@apple.com>

        [IFC][Integration] Add support for inline table
        https://bugs.webkit.org/show_bug.cgi?id=237498

        Reviewed by Antti Koivisto.

        * platform/mac/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:

2022-03-11  Youenn Fablet  <youenn@apple.com>

        Do capture video frame downsampling in GPUProcess
        https://bugs.webkit.org/show_bug.cgi?id=237316
        <rdar://problem/89959777>

        Reviewed by Eric Carlson.

        * fast/mediastream/getDisplayMedia-size.html:
        Remove potential race condition by restarting playing the stream to compute the size.

2022-03-10  Frédéric Wang  <fwang@igalia.com>

        [ iOS ] editing/inserting/insert-paragraph-separator-with-inline-table-bold-crash.html is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=237551

        Reviewed by Ryosuke Niwa.

        * editing/inserting/insert-paragraph-separator-with-inline-table-bold-crash.html: Ensure the
        test does not complete before the page load.

2022-03-10  Peng Liu  <peng.liu6@apple.com>

        EnterPictureInPictureEvent event was renamed to PictureInPictureEvent in spec
        https://bugs.webkit.org/show_bug.cgi?id=221083

        Reviewed by Youenn Fablet.

        * media/picture-in-picture/picture-in-picture-api-events-expected.txt:
        * media/picture-in-picture/picture-in-picture-api-events.html:
        Check the picture-in-picture window in the "leavepictureinpicture" event handler.

2022-03-10  Chris Dumez  <cdumez@apple.com>

        Main document is leaking on haaretz.co.il due to lazy image loading
        https://bugs.webkit.org/show_bug.cgi?id=237660
        <rdar://problem/90035071>

        Reviewed by Geoffrey Garen.

        Add layout test coverage.

        * fast/dom/lazy-image-loading-document-leak-expected.txt: Added.
        * fast/dom/lazy-image-loading-document-leak.html: Added.
        * fast/dom/resources/lazy-image-loading-document-leak-popup.html: Added.

2022-03-10  Matteo Flores  <matteo_flores@apple.com>

        [ iOS Mac ] imported/w3c/web-platform-tests/service-workers/service-worker/partitioned-service-worker-matchAll.tentative.https.html is a flaky text failure on all queues
        https://bugs.webkit.org/show_bug.cgi?id=237680

        Unreviewed test gardening.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-03-10  Alan Bujtas  <zalan@apple.com>

        [IFC][Integration] Enable RenderListItem and RenderListMarker for IFC
        https://bugs.webkit.org/show_bug.cgi?id=237497

        Reviewed by Antti Koivisto.

        * fast/replaced/ul-li-word-break-break-word-expected.html: progression. We do not break between the list marker and the content anymore.
        * platform/mac/css1/box_properties/margin_right-expected.txt:
        * platform/mac/css1/box_properties/padding_right-expected.txt: ^^progressions. Align list marker with the content (like Firefox does).
        * platform/mac/css2.1/t0505-c16-descendant-01-e-expected.txt: inline box height progression (not visible)
        * platform/mac/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt: usual 1px diff.
        * platform/mac/fast/inline/emptyInlinesWithinLists-expected.txt: progression
        * platform/mac/fast/lists/002-expected.txt: same as margin_right/padding_right. 
        * platform/mac/fast/lists/003-expected.txt: ^^
        * platform/mac/fast/lists/li-br-expected.txt: same as ul-li-word-break-break-word
        * platform/mac/fast/selectors/166-expected.txt: usual 1px diff.

2022-03-10  Alex Christensen  <achristensen@webkit.org>

        Remove unused iOS 14 test results

        * platform/ios-14: Removed.
        * platform/ios-14-wk2: Removed.

2022-03-10  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * platform/ios/TestExpectations: r291034 fixed platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html.

2022-03-10  Chris Fleizach  <cfleizach@apple.com>

        AX: Support updated WebSpeech API
        https://bugs.webkit.org/show_bug.cgi?id=237614
        <rdar://problem/89981851>

        Reviewed by Andres Gonzalez.

        Fixed expectations:
        * imported/w3c/web-platform-tests/speech-api/SpeechSynthesisEvent-constructor-expected.txt: Updated.
        * imported/w3c/web-platform-tests/speech-api/SpeechSynthesisErrorEvent-constructor-expected.txt: Updated.
        * fast/speechsynthesis/speech-synthesis-boundary-events.html: Updated.
        * fast/speechsynthesis/speech-synthesis-boundary-events-expected.txt: Updated.

2022-03-10  Antoine Quint  <graouts@webkit.org>

        [web-animations] font-variant-caps should support discrete animation
        https://bugs.webkit.org/show_bug.cgi?id=237662

        Reviewed by Myles C. Maxfield.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:

2022-03-10  Jer Noble  <jer.noble@apple.com>

        [iOS] Netflix.com fails to resume after moving app to background during playback
        https://bugs.webkit.org/show_bug.cgi?id=237659
        <rdar://88775037>

        Reviewed by Eric Carlson.

        * media/media-source/media-source-interruption-with-resume-allowing-play-expected.txt: Added.
        * media/media-source/media-source-interruption-with-resume-allowing-play.html: Added.

2022-03-10  Philippe Normand  <pnormand@igalia.com>

        REGRESSION(r284711): [GStreamer] Buffering, seek broken on youtube.com
        https://bugs.webkit.org/show_bug.cgi?id=233861

        Unreviewed, manual revert of 284711.

        * platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:

2022-03-10  Philippe Normand  <pnormand@igalia.com>

        Unreviewed GStreamer gardening

        * platform/glib/TestExpectations: media/video-src-blob-perf.html is failing actually.

2022-03-10  Lauro Moura  <lmoura@igalia.com>

        Add context.roundRect support to OffScreenCanvas
        https://bugs.webkit.org/show_bug.cgi?id=232780
        <rdar://problem/85366210>

        Reviewed by Darin Adler.

        * inspector/canvas/recording-2d-full-expected.txt:
        * inspector/canvas/resources/recording-2d.js: Added calls to roundRect
        to test the inspector processArgument()
        * platform/glib/TestExpectations:
        * platform/gtk/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/ipad/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt: Removed.
        * platform/wpe/imported/w3c/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker-expected.txt: Removed.
        * platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt.

2022-03-10  Nikolas Zimmermann  <nzimmermann@igalia.com>

        Cleanup RenderLayer::currentTransform()
        https://bugs.webkit.org/show_bug.cgi?id=237553

        Reviewed by Rob Buis.

        Mark new WPT test css/css-transforms/animation/transform-box-will-change-transform-layer.html
        as expected to fail, since 'transform-box' is ignored for composited elements at the moment.

        * platform/glib/TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:
        * platform/win/TestExpectations:

2022-03-09  Cameron McCormack  <heycam@apple.com>

        Unreviewed test gardening
        https://bugs.webkit.org/show_bug.cgi?id=237688

        * gpu-process/TestExpectations:
        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg:

2022-03-09  Cameron McCormack  <heycam@apple.com>

        Unreviewed test gardening
        https://bugs.webkit.org/show_bug.cgi?id=236931

        * gpu-process/TestExpectations:

2022-03-09  Cameron McCormack  <heycam@apple.com>

        Unreviewed test gardening
        https://bugs.webkit.org/show_bug.cgi?id=236930

        * gpu-process/TestExpectations:
        * platform/ios/TestExpectations:

2022-03-09  Matt Woodrow  <mattwoodrow@apple.com>

        Empty float rects should remain empty after integrally enclosing them.
        https://bugs.webkit.org/show_bug.cgi?id=237507

        Reviewed by Alan Bujtas.

        * compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.
        * compositing/tile-coverage-subpixel-empty-rect.html: Added.
        * platform/gtk/compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.
        * platform/ios/compositing/tile-coverage-subpixel-empty-rect-expected.txt: Added.

        Adds a new test that uses multiple overflow:hidden clips and absolute positioning to create
        an empty coverage rect with a subpixel x/y position that is within the bounds of an offscreen
        layer. Confirms that we don't accidentally allocate a tile for this layer.

2022-03-09  Matteo Flores  <matteo_flores@apple.com>

        Unreviewed, reverting r290750.

        Bug has been fixed, expectations are no longer needed.

        Reverted changeset:

        "[ iOS Debug ] editing/async-clipboard/* 20 tests are flaky
        timeouts on iOS."
        https://bugs.webkit.org/show_bug.cgi?id=237372
        https://commits.webkit.org/r290750

2022-03-09  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] 2 imported/w3c/web-platform-tests/content-security-policy/connect-src/* tests are flaky text failures
        https://bugs.webkit.org/show_bug.cgi?id=237603

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-03-09  Matteo Flores  <matteo_flores@apple.com>

        [iOS] Hard link AVPictureInPictureController
        https://bugs.webkit.org/show_bug.cgi?id=237227

        Unreviewed test gardening.

        * platform/ipad/TestExpectations:

2022-03-09  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-09  Youenn Fablet  <youenn@apple.com>

        WebRTC decoded frames are not correctly rotated in case GPU Process DOM rendering flag is set to true
        https://bugs.webkit.org/show_bug.cgi?id=237468
        <rdar://problem/89807876>

        Reviewed by Eric Carlson.

        * webrtc/video-rotation.html:
        Observe actual video frame rotation value.

2022-03-08  Antoine Quint  <graouts@webkit.org>

        [web-animations] font-family should support discrete animation
        https://bugs.webkit.org/show_bug.cgi?id=237591

        Reviewed by Myles Maxfield.

        * platform/gtk/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/css-fonts/animations/system-fonts-expected.txt:

2022-03-09  Antti Koivisto  <antti@apple.com>

        [CSS Container Queries] Import updated WPTs
        https://bugs.webkit.org/show_bug.cgi?id=237638

        Reviewed by Antoine Quint.

        * TestExpectations:

2022-03-09  Youenn Fablet  <youenn@apple.com>

        Scope capture sources by page identifiers
        https://bugs.webkit.org/show_bug.cgi?id=237359

        Reviewed by Eric Carlson.

        Remove platform/ios/mediastream/getUserMedia-single-capture.html now that we no longer handle multi capture in WebProcess but in GPUProcess.
        Update platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html to be like platform/ios/mediastream/audio-muted-in-background-tab.html
        so that test is no longer dependent on synchronous event firing.

        * platform/ios/mediastream/audio-muted-in-background-tab-gpu-process.html:
        * platform/ios/mediastream/getUserMedia-single-capture-expected.txt: Removed.
        * platform/ios/mediastream/getUserMedia-single-capture-gpu-process.html:
        * platform/ios/mediastream/getUserMedia-single-capture.html: Removed.

2022-03-08  John Cunningham  <johncunningham@apple.com>

        RemoteGraphicsContextGL ReadPixels does not preserve contents for area that is not part of the Framebuffer
        https://bugs.webkit.org/show_bug.cgi?id=222410
        <rdar://problem/75025951>

        Reviewed by Kimmo Kinnunen.

        Don't overwrite the data buffer for readPixels

        * platform/ios-wk2/TestExpectations:

2022-03-08  Chris Dumez  <cdumez@apple.com>

        IntersectionObserver is causing massive document leaks on haaretz.co.il
        https://bugs.webkit.org/show_bug.cgi?id=237619
        <rdar://problem/89989815>

        Reviewed by Simon Fraser.

        Add layout test coverage.

        * fast/dom/intersection-observer-document-leak-expected.txt: Added.
        * fast/dom/intersection-observer-document-leak.html: Added.
        * fast/dom/resources/intersection-observer-document-leak-popup.html: Added.

2022-03-08  Eric Carlson  <eric.carlson@apple.com>

        [Cocoa] metadata cue endTime may not be updated
        https://bugs.webkit.org/show_bug.cgi?id=237630
        rdar://88690874

        Reviewed by Jer Noble.

        * http/tests/media/hls/track-in-band-hls-metadata-cue-duration-expected.txt: Added.
        * http/tests/media/hls/track-in-band-hls-metadata-cue-duration.html: Added.

2022-03-08  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Using WebAuthn within cross-origin iframe elements
        https://bugs.webkit.org/show_bug.cgi?id=222240
        rdar://problem/74830748

        Reviewed by Brent Fulgham.

        Update existing tests and create new test for cross-origin, non same-site i-frames.

        * http/wpt/webauthn/public-key-credential-cross-origin.https-expected.txt: Added.
        * http/wpt/webauthn/public-key-credential-cross-origin.https.html: Added.
        * http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html:
        * http/wpt/webauthn/resources/public-key-credential-cross-origin.https.html: Added.

2022-03-08  Chris Fleizach  <cfleizach@apple.com>

        AX: Speech Synthesis no longer returning list of voices in macOS 12.3
        https://bugs.webkit.org/show_bug.cgi?id=237584
        <rdar://problem/89952347>

        Reviewed by Andres Gonzalez.

        * fast/speechsynthesis/voices-non-mock-expected.txt: Added.
        * fast/speechsynthesis/voices-non-mock.html: Added.

2022-03-08  Chris Dumez  <cdumez@apple.com>

        Unreviewed, silence console logging for http/tests/security/cookie-module-import-propagate.html
        <rdar://88842347>

        This is to address flakiness on the bots.

        * TestExpectations:
        * http/tests/security/cookie-module-import-propagate-expected.txt:

2022-03-08  J Pascoe  <j_pascoe@apple.com>

        [ iOS ] 2X http/wpt/webauthn/public-key-credential-create-failure-local (layout-tests) are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=237548
        rdar://problem/89923849

        Unreviewed test gardening.

        These console messages differing is causing test failures, fixing expectations.

        * http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:

2022-03-08  Youenn Fablet  <youenn@apple.com>

        Add a preference to mute video capture in case audio capture gets interrupted
        https://bugs.webkit.org/show_bug.cgi?id=237524
        <rdar://78421282>

        Reviewed by Eric Carlson.

        * fast/mediastream/media-stream-video-track-interrupted-from-audio-expected.txt: Added.
        * fast/mediastream/media-stream-video-track-interrupted-from-audio.html: Added.
        * fast/mediastream/media-stream-video-track-interrupted.html: Migrated to testRunner API.
        * fast/mediastream/track-ended-while-muted.html:
        * platform/glib/TestExpectations:

2022-03-08  Youenn Fablet  <youenn@apple.com>

        Improve WebRTC VPX media capabilities accuracy
        https://bugs.webkit.org/show_bug.cgi?id=237462

        Reviewed by Eric Carlson.

        * webrtc/video-mute-vp8.html:
        * webrtc/vp9-expected.txt:
        * webrtc/vp9.html:

2022-03-08  Chris Dumez  <cdumez@apple.com>

        Resync web-platform-tests/beacon from upstream
        https://bugs.webkit.org/show_bug.cgi?id=237536

        Unreviewed, drop web-platform-tests/beacon tests that are no longer upstream.

        * TestExpectations:

2022-03-07  Andres Gonzalez  <andresg_22@apple.com>

        Fix for <select> elements in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=237483
        rdar://89530022

        Reviewed by Chris Fleizach.

        * accessibility/dropdown-value-expected.txt: Added.
        * accessibility/dropdown-value.html: Added.

2022-03-07  Mark Lam  <mark.lam@apple.com>

        Remove TestExpectations for imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.worker.html.
        https://bugs.webkit.org/show_bug.cgi?id=229244

        Not reviewed.

        TestExpectaions says this test will either pass or crash.  However, the test history
        at https://results.webkit.org/?suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2FIndexedDB%2Fkey-generators%2Freading-autoincrement-indexes-cursors.any.worker.html
        shows that this test hasn't crashed in a very long time.

        Also local runs of the test on AppleSilicon with Debug WK1 pass with no crash.

        * platform/mac/TestExpectations:

2022-03-07  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * gpu-process/TestExpectations: Remove tests that were resolved by r290813.

2022-03-07  Oriol Brufau  <obrufau@igalia.com>

        Remove duplicated platform expectations for computed-style.html, computed-style-without-renderer.html, getComputedStyle-basic.xhtml
        https://bugs.webkit.org/show_bug.cgi?id=237534

        Unreviewed test gardening.

        * platform/glib/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
        * platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
        * platform/glib/svg/css/getComputedStyle-basic-expected.txt: Removed.
        * platform/ios/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
        * platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
        * platform/ios/svg/css/getComputedStyle-basic-expected.txt: Removed.

2022-03-07  Kimmo Kinnunen  <kkinnunen@apple.com>

        LayoutTests/webgl/max-active-contexts-gc.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=237466

        Reviewed by Alexey Proskuryakov.
        The test:
         - created 16 WebGL contexts
         - unreferenced 8 WebGL contexts.
         - forced gc
         - added 9 WebGL contexts.
        The test tries to test that GC removes unreferenced contexts.
        To assert this, it ends up with 17 contexts, which is 1 above
        the maximum active limit. This means one context is lost and the
        implementation prints one line of error.

        Since the GC is not exact, sometimes it would only collect 7 of the 8
        unreferenced contexts. This would mean two error messages.

        Fix by trying to collect each time a context is unreferenced. This seems to be
        more predictable.

        * webgl/max-active-contexts-gc.html:

2022-03-07  Chris Dumez  <cdumez@apple.com>

        Make "true" count as truthy in window.open()'s boolean features
        https://bugs.webkit.org/show_bug.cgi?id=237530

        Reviewed by Alex Christensen.

        * tests-options.json:

2022-03-07  Chris Dumez  <cdumez@apple.com>

        [Catalina Release wk1] imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=230729
        <rdar://problem/83469625>

        Unreviewed, unskip test as the bots show no recent flakiness.

        * platform/mac-wk1/TestExpectations:

2022-03-07  Antoine Quint  <graouts@webkit.org>

        Parsing of list-style shorthand is incorrect
        https://bugs.webkit.org/show_bug.cgi?id=237515

        Reviewed by Antti Koivisto.

        Some non-WPT tests had the wrong assumption on the shorthand order
        for list-style, so we update those tests to match the spec.

        Additionally, the WPT test css/css-lists/list-style-type-string-004.html now passes.

        * fast/css/cssText-shorthand-expected.txt:
        * fast/css/cssText-shorthand.html:
        * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
        * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
        * platform/mac/TestExpectations:

2022-03-07  Matt Woodrow  <mattwoodrow@apple.com>

        Compute correct containing block override size for items that are subgridden in one dimension only.
        https://bugs.webkit.org/show_bug.cgi?id=236951

        Reviewed by Dean Jackson.

        * TestExpectations:

        Marked existing WPT as passing.

2022-03-05  Alan Bujtas  <zalan@apple.com>

        Remove non-standard display:block UA stylesheet rule for <layer>
        https://bugs.webkit.org/show_bug.cgi?id=236730
        <rdar://problem/89372670>

        Reviewed by Antti Koivisto.

        * inspector/css/shadow-scoped-style-expected.txt:

2022-03-05  Alan Bujtas  <zalan@apple.com>

        [IFC][Integration] Do not bail out on IFC content with floats inside.
        https://bugs.webkit.org/show_bug.cgi?id=237494

        Reviewed by Antti Koivisto.

        * platform/ios/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
        * platform/mac/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:

2022-03-05  Antti Koivisto  <antti@apple.com>

        Resolve ::first-line style eagerly
        https://bugs.webkit.org/show_bug.cgi?id=237362

        Reviewed by Alan Bujtas.

        * TestExpectations:
        * platform/mac/fast/forms/input-baseline-expected.txt:

2022-03-05  Youenn Fablet  <youenn@apple.com>

        Implement remote-inbound-rtp packetsLost
        https://bugs.webkit.org/show_bug.cgi?id=237443

        Reviewed by Eric Carlson.

        * platform/mac/TestExpectations:
        * webrtc/video-stats.html:

2022-03-04  Tyler Wilcock  <tyler_w@apple.com>

        AX: [WebAccessibilityObjectWrapperMac AXAttributeStringSetFont] crashes when given a font with a nil postscript name, font family, or display name
        https://bugs.webkit.org/show_bug.cgi?id=237373

        Reviewed by Chris Fleizach and Andres Gonzalez.

        * accessibility/resources/Litherum.svg: Added.
        * accessibility/svg-font-face-expected.txt: Added.
        * accessibility/svg-font-face.html: Added.
        * platform/glib/TestExpectations: Skip new test.
        * platform/ios/TestExpectations: Enable new test.
        * platform/win/TestExpectations: Skip new test.

        * platform/mac/accessibility/element-line-rects-and-text-expected.txt:
        Before this patch, [WebAccessibilityObjectWrapperBase AXAttributeStringSetStyle] called the iOS
        version of AXAttributeStringSetFont. This patch fixes this. The expectation for this test is updated as a result.

2022-03-04  Kate Cheney  <katherine_cheney@apple.com>

        about:blank iframes do not always inherit parent CSP
        https://bugs.webkit.org/show_bug.cgi?id=236347
        <rdar://problem/88669147>

        Reviewed by Brent Fulgham.

        * http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/block-eval-onload-in-nested-about-blank-iframe.html: Added
        We can't use modern js-test.js and related functions because
        js-test.js uses eval() and loading it makes the test time out when the
        eval is blocked by the document's CSP. We can't specify unsafe-eval
        because the whole point of this test is to block eval.

2022-03-04  Robert Jenner  <Jenner@apple.com>

        Update WPT css-scroll-snap tests
        https://bugs.webkit.org/show_bug.cgi?id=237358

        Unreviewed test gardening.
        
        * platform/ios-wk2/TestExpectations:

2022-03-04  Chris Dumez  <cdumez@apple.com>

        Home link on weather.gov is not working
        https://bugs.webkit.org/show_bug.cgi?id=237451
        <rdar://60409277>

        Reviewed by Geoff Garen.

        Skip WPT tests that is timing out. I have verified that this WPT test is timing out in Blink as well.

        * TestExpectations:

2022-03-04  Chris Dumez  <cdumez@apple.com>

        Load event never firing after form is submitted
        https://bugs.webkit.org/show_bug.cgi?id=235407
        <rdar://problem/87831049>

        Reviewed by Geoffrey Garen.

        Add layout test coverage (Based on reduction from Sam Sneddon).

        * http/tests/loading/form-submission-no-load-event-expected.txt: Added.
        * http/tests/loading/form-submission-no-load-event.html: Added.

2022-03-04  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] Canvas compositing buffer should be created through its GraphicsContext
        https://bugs.webkit.org/show_bug.cgi?id=237260
        rdar://89196918

        Reviewed by Simon Fraser.

        * gpu-process/TestExpectations:

2022-03-04  Kate Cheney  <katherine_cheney@apple.com>

        CSP report does not get sent to the document in the case of a detached element
        https://bugs.webkit.org/show_bug.cgi?id=237440
        <rdar://problem/89081463>

        Reviewed by Chris Dumez.

        * http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached-expected.txt: Added.
        * http/tests/security/contentSecurityPolicy/report-violation-to-document-after-element-has-been-detached.html: Added.

2022-03-04  Youenn Fablet  <youenn@apple.com>

        webrtc/canvas-to-peer-connection.html is flakily failing a test assertion
        https://bugs.webkit.org/show_bug.cgi?id=237423

        Reviewed by Eric Carlson.

        WebRTC pipeline is lossy so frames might disappear.
        For that reason, we need to send multiple times the same frame to ensure we can read the expected frame.
        To ensure we are not reading a previous test frame, what we do is changing the size of the canvas before doing the test.
        This patch reduces the number of iterations to ensure the test is not too long to run.

        * webrtc/canvas-to-peer-connection.html:

2022-03-03  Youenn Fablet  <youenn@apple.com>

        fast/mediastream/getUserMedia-to-canvas-1.html and fast/mediastream/getUserMedia-to-canvas-2.html are failing on MacOS when remote video frame flag is enabled
        https://bugs.webkit.org/show_bug.cgi?id=237042
        <rdar://problem/89298601>

        Reviewed by Eric Carlson.

        Video element videoWidth/videoHeight are updated when track settings are changed,
        and not when video frames being received.

        This does not guarantee that videoWidth/videoHeight (main thread) are fully in sync
        with the actual video frames (background thread) when there is a change of size.

        We might be able to tighten this in MediaPlayerPrivateMediaStreamAVFObjC by only resorting on video frames.
        In the meantime, we update the test to use requestVideoFrameCallback which provides accurate per frame metadata.

        * fast/mediastream/getUserMedia-to-canvas-1.html:
        * fast/mediastream/getUserMedia-to-canvas-2.html:
        * webrtc/routines.js:

2022-03-03  Kimmo Kinnunen  <kkinnunen@apple.com>

        WebGL context count is not limited for GPU process
        https://bugs.webkit.org/show_bug.cgi?id=222411

        Reviewed by Kenneth Russell.

        * platform/ios-wk2/TestExpectations:

2022-03-03  Ben Nham  <nham@apple.com>

        Enforce silent push quota
        https://bugs.webkit.org/show_bug.cgi?id=236863

        Reviewed by Brady Eidson.

        Update PushEvent tests to check that notifications are displayed.

        * http/wpt/push-api/pushEvent.any.js:
        (promise_test.async const):
        (promise_test.async if):
        * http/wpt/push-api/pushEvent.any.serviceworker-expected.txt:

2022-03-03  Simon Fraser  <simon.fraser@apple.com>

        Element with position: sticky after sticking, starts to move incorrectly when scrolling
        https://bugs.webkit.org/show_bug.cgi?id=231953
        <rdar://84662329>

        Reviewed by Sam Weinig.

        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
        * scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints-expected.txt: Added.
        * scrollingcoordinator/scrolling-tree/sticky-in-overflow-stale-constraints.html: Added.

2022-03-03  Simon Fraser  <simon.fraser@apple.com>

        nasa.gov page with fixed backgrounds paints incorrectly on scroll
        https://bugs.webkit.org/show_bug.cgi?id=237405
        <rdar://66568551>

        Reviewed by Antti Koivisto.

        Repaint test which is only valid for mac-wk2 (iOS does not support background-attachment:fixed).

        * TestExpectations:
        * fast/repaint/background-attachment-fixed-in-composited-scroll-expected.txt: Added.
        * fast/repaint/background-attachment-fixed-in-composited-scroll.html: Added.
        * platform/mac-wk2/TestExpectations:

2022-03-03  Jon Lee  <jonlee@apple.com>

        Unreviewed test gardening.

        * gpu-process/TestExpectations:
        * platform/ios/TestExpectations:

2022-03-03  Alan Bujtas  <zalan@apple.com>

        A text node longer than 65,535 characters following another text node is invisible in a scrolling context
        https://bugs.webkit.org/show_bug.cgi?id=237330
        <rdar://problem/89645522>

        Reviewed by Antti Koivisto.

        * fast/text/text-overflow-over-64k-expected.html: Added.
        * fast/text/text-overflow-over-64k.html: Added.

2022-03-03  Youenn Fablet  <youenn@apple.com>

        macOS Safari 15.2 Audio Echo Issue after camera pause/unpause
        https://bugs.webkit.org/show_bug.cgi?id=235544
        <rdar://problem/88297045>

        Reviewed by Eric Carlson.

        * fast/mediastream/mediastreamtrack-audiovideo-mutepage-expected.txt: Added.
        * fast/mediastream/mediastreamtrack-audiovideo-mutepage.html: Added.

2022-03-03  Chris Dumez  <cdumez@apple.com>

        REGRESSION(r290356-r290351?): [ iOS EWS ] 3 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are constant text failures.
        https://bugs.webkit.org/show_bug.cgi?id=237160
        <rdar://problem/89440067>

        Reviewed by Youenn Fablet.

        Unskip tests that are no longer failing.

        * platform/ios/TestExpectations:

2022-03-03  Martin Robinson  <mrobinson@webkit.org>

        Update WPT css-scroll-snap tests
        https://bugs.webkit.org/show_bug.cgi?id=237358

        Reviewed by Manuel Rego Casasnovas.

        * platform/glib/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt: Added.
        * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-target-margin-005-expected.txt: Added.

2022-03-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r290756.
        https://bugs.webkit.org/show_bug.cgi?id=237412

        Speedometer2

        Reverted changeset:

        "[css] Implement 'text-decoration' as a shorthand."
        https://bugs.webkit.org/show_bug.cgi?id=237175
        https://commits.webkit.org/r290756

2022-03-02  Sihui Liu  <sihui_liu@apple.com>

        Throw proper exception on failed removeEntry() calls
        https://bugs.webkit.org/show_bug.cgi?id=237382
        <rdar://89232969>

        Reviewed by Chris Dumez.

        * storage/filesystemaccess/handle-move-expected.txt:
        * storage/filesystemaccess/handle-move-worker-expected.txt:
        * storage/filesystemaccess/resources/handle-move.js:
        (async test):

2022-03-02  Robert Jenner  <Jenner@apple.com>

        WindowServer returned not alive with context:,unresponsive work processor(s)
        <rdar://86037417>

        Unreviewed test gardening. Skipping tests on iOS due to tests causing WindowServer to crash.

        * platform/ios-wk2/TestExpectations:

2022-03-02  Robert Jenner  <Jenner@apple.com>

        Unreviewed, reverting r290658.

        r290658 broke two tests for iOS, slowing down EWS.

        Reverted changeset:

        "fast/mediastream/getUserMedia-to-canvas-1.html and
        fast/mediastream/getUserMedia-to-canvas-2.html are failing on
        MacOS when remote video frame flag is enabled"
        https://bugs.webkit.org/show_bug.cgi?id=237042
        https://commits.webkit.org/r290658

2022-03-02  Simon Fraser  <simon.fraser@apple.com>

        Rendering issues with many dynamically-added sticky elements inside overflow scroll
        https://bugs.webkit.org/show_bug.cgi?id=237378
        <rdar://83745510>

        Reviewed by Cameron McCormack.

        * scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes-expected.txt: Added.
        * scrollingcoordinator/scrolling-tree/accumulated-unparented-sticky-nodes.html: Added.

2022-03-02  Oriol Brufau  <obrufau@igalia.com>

        [css] Implement 'text-decoration' as a shorthand.
        https://bugs.webkit.org/show_bug.cgi?id=237175

        Reviewed by Darin Adler.

        Update tests to take into account that 'text-decoration' is a shorthand.

        * editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt:
        * fast/css/getComputedStyle/computed-style-expected.txt:
        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
        * fast/css/getComputedStyle/getComputedStyle-text-decoration-expected.txt:
        * fast/css/getComputedStyle/getComputedStyle-text-decoration.html:
        * fast/css/getComputedStyle/resources/property-names.js:
        * fast/css/style-enumerate-properties-expected.txt:
        * fast/css/style-enumerate-properties.html:
        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand-expected.txt:
        * fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-shorthand.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dashed-expected-mismatch.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dashed.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed-expected-mismatch.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dotted-dashed.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dotted-expected-mismatch.html:
        * fast/css3-text/css3-text-decoration/text-decoration-dotted.html:
        * fast/events/input-events-paste-rich-datatransfer-expected.txt:
        * platform/glib/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
        * platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
        * platform/glib/svg/css/getComputedStyle-basic-expected.txt: Removed.
        * platform/gtk/fast/events/input-events-paste-rich-datatransfer-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/fast/css/getComputedStyle/computed-style-expected.txt: Removed.
        * platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt: Removed.
        * platform/ios/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * platform/ios/svg/css/getComputedStyle-basic-expected.txt: Removed.
        * platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
        * svg/css/getComputedStyle-basic-expected.txt:

2022-03-02  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Remove obsolete failed attestation tests
        https://bugs.webkit.org/show_bug.cgi?id=237346
        rdar://problem/89647260

        Reviewed by Brent Fulgham.

        The removed items tested that creation fails whenever attestation fails, however
        we've changed behavior such that creation succeeds with 'none' attestation in this
        case, making these failure tests obsolete.

        * http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-failure-local-silent.https.html:
        * http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-failure-local.https.html:

2022-03-02  Matteo Flores  <matteo_flores@apple.com>

        [ iOS Debug ] editing/async-clipboard/* 20 tests are flaky timeouts on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=237372

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-02  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r290539): [ iOS ] 2X http/wpt/webauthn/public-key-credential-create-failure-local (layout-tests) are constant text failures
        https://bugs.webkit.org/show_bug.cgi?id=237346

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Copy context menu action should be titled "Copy Link" when long pressing a non-image link
        https://bugs.webkit.org/show_bug.cgi?id=237367
        rdar://77397886

        Reviewed by Devin Rousso.

        Adjust a couple of layout tests to check for items labeled "Copy" (in the case of an image) and "Copy Link" (in
        the case of a link).

        * fast/events/touch/ios/long-press-on-image-expected.txt:
        * fast/events/touch/ios/long-press-on-image.html:
        * fast/events/touch/ios/long-press-on-link-expected.txt:
        * fast/events/touch/ios/long-press-on-link.html:

2022-03-02  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] The behavior of navigator-language-ru changed in Monterey / iOS 15
        https://bugs.webkit.org/show_bug.cgi?id=237384
        <rdar://problem/80335706>

        Unreviewed test gardening.

        Add a new test for the new behavior, but keep the old one too for older OSes.

        * fast/text/international/system-language/navigator-language/navigator-language-ru-2-expected.txt: Added.
        * fast/text/international/system-language/navigator-language/navigator-language-ru-2.html: Added.
        * platform/ios-14/TestExpectations:
        * platform/ios/TestExpectations:
        * platform/mac-wk2/TestExpectations:

2022-03-02  Antoine Quint  <graouts@webkit.org>

        Outline-width with transition don't animate correctly
        https://bugs.webkit.org/show_bug.cgi?id=173708

        Reviewed by Antti Koivisto.

        Add a repaint test that checks that the outline is accounted for during the transition.

        * fast/repaint/outline-transition-expected.txt: Added.
        * fast/repaint/outline-transition.html: Added.

2022-03-02  Alan Bujtas  <zalan@apple.com>

        [RTL] Image alt text has incorrect bidi reordering
        https://bugs.webkit.org/show_bug.cgi?id=237366
        <rdar://problem/89687229>

        Reviewed by Antti Koivisto.

        * fast/images/alt-text-with-right-to-left-inline-direction-reordering-expected-mismatch.html: Added.
        * fast/images/alt-text-with-right-to-left-inline-direction-reordering.html: Added.

2022-03-02  Oriol Brufau  <obrufau@igalia.com>

        [css-cascade] Support 'revert-layer' in @keyframes
        https://bugs.webkit.org/show_bug.cgi?id=237152

        Reviewed by Antti Koivisto.

        Expect test to pass.

        * TestExpectations:

2022-03-02  Alan Bujtas  <zalan@apple.com>

        [RTL] Incorrect alt text position in right to left context
        https://bugs.webkit.org/show_bug.cgi?id=237352
        <rdar://problem/89657704>

        Reviewed by Simon Fraser.

        * fast/images/alt-text-with-right-to-left-inline-direction-expected-mismatch.html: Added.
        * fast/images/alt-text-with-right-to-left-inline-direction.html: Added.

2022-03-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r216096): [GTK] Test accessibility/gtk/menu-list-unfocused-notifications.html is failing since r216096
        https://bugs.webkit.org/show_bug.cgi?id=171598

        Reviewed by Adrian Perez de Castro.

        Since r216096 the notification for menu list changes is deffered, so we need to wait one run loop cycle to get
        the notifications. Also update the test to ignore notifications that are not interesting like AXLoadComplete and
        AXElementBusyChanged, and update expectations for the new behavior with ATSPI where the notification is emitted
        on the menu and not the combo.

        * accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
        * accessibility/gtk/menu-list-unfocused-notifications.html:
        * platform/gtk/TestExpectations:

2022-03-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATSPI] Test accessibility/select-element-at-index.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=237315

        Reviewed by Adrian Perez de Castro.

        This is because the test contains platform specific behavior for ATK that was migrated to ATSPI by mistake. We
        should behave like all other ports now.

        * accessibility/select-element-at-index.html:
        * platform/glib/TestExpectations:

2022-03-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: add a switch to control whether breakpoint evaluations (condition, ignore count, actions) are also affected by script blackboxing
        https://bugs.webkit.org/show_bug.cgi?id=235274

        Reviewed by Patrick Angle.

        * inspector/debugger/setBlackboxBreakpointEvaluations.html: Added.
        * inspector/debugger/setBlackboxBreakpointEvaluations-expected.txt: Added.

2022-03-01  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] pointerevents/mouse/* 10 pointer event tests are constant timeouts or failures on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=237348

        Unreviewed test gardening.

        * platform/ios-wk2/TestExpectations:

2022-03-01  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * gpu-process/TestExpectations: r290542 fixed a number of crashing tests.

2022-03-01  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * gpu-process/TestExpectations:
        * platform/ios/TestExpectations: r290438 fixed a test failure.

2022-03-01  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening.

        * gpu-process/TestExpectations: r290542 fixed a number of crashing tests.

2022-03-01  Alan Bujtas  <zalan@apple.com>

        REGRESSION(r285232) https://alvaromontoro.github.io/almond.css/demo/ looks wrong in Safari, ok in Chrome and Firefox
        https://bugs.webkit.org/show_bug.cgi?id=237276
        <rdar://problem/89566459>

        Reviewed by Simon Fraser.

        * fast/css-grid-layout/ascpect-ratio-with-percent-width-expected.html: Added.
        * fast/css-grid-layout/ascpect-ratio-with-percent-width.html: Added.

2022-03-01  Said Abou-Hallawa  <said@apple.com>

        [macOS][REGRESSION] (rr289518): Form controls are scaled twice on Retina display
        https://bugs.webkit.org/show_bug.cgi?id=237128
        rdar://89064642

        Reviewed by Darin Adler.

        * fast/hidpi/hidpi-form-controls-drawing-size-expected.html: Added.
        * fast/hidpi/hidpi-form-controls-drawing-size.html: Added.

2022-03-01  Robert Jenner  <Jenner@apple.com>

        [ Win ] 4X imported/mozilla/svg/blend(layout-tests) are constant Image Only Failures
        https://bugs.webkit.org/show_bug.cgi?id=237344

        Unreviewed test gardening. Skipping, for Windows instead of adding an expectation.

        * platform/win/TestExpectations:

2022-03-01  Robert Jenner  <Jenner@apple.com>

        [ Win ] 4X imported/mozilla/svg/blend(layout-tests) are constant Image Only Failures
        https://bugs.webkit.org/show_bug.cgi?id=237344

        Unreviewed test gardening.

        * platform/win/TestExpectations:

2022-03-01  Eric Carlson  <eric.carlson@apple.com>

        [Cocoa] HLS stream currentTime sometimes jumps backwards
        https://bugs.webkit.org/show_bug.cgi?id=235087
        rdar://83831093

        Reviewed by Dean Jackson.

        * http/tests/media/hls/hls-non-zero-start-time-expected.txt: Added.
        * http/tests/media/hls/hls-non-zero-start-time.html: Added.
        * http/tests/media/resources/hls/bip-bop-live.m3u8: Added.
        * http/tests/media/resources/hls/bipbop/start-offset.m3u8: Added.
        * http/tests/media/resources/hls/bipbop/start-offset.ts: Added.

2022-03-01  Matt Woodrow  <mattwoodrow@apple.com>

        Use static position relative to parent for abs-pos items within nested grids.
        https://bugs.webkit.org/show_bug.cgi?id=236957

        Reviewed by Dean Jackson.

        * TestExpectations:

       Existing subgrid tests marked as passing.

2022-03-01  Andres Gonzalez  <andresg_22@apple.com>

        Make accessibility/aria-hidden-false-works-in-subtrees.html async to pass in isolated tree mode.
        https://bugs.webkit.org/show_bug.cgi?id=237051
        <rdar://problem/89312156>

        Reviewed by Chris Fleizach.

        * accessibility/aria-hidden-false-works-in-subtrees.html:
        Made both the main script and the iframe onload function async to pass
        in isolated tree mode.

2022-03-01  Matteo Flores  <matteo_flores@apple.com>

        [ Monterey wk2 ] http/tests/media/video-webm-stall.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=236788

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-03-01  Matteo Flores  <matteo_flores@apple.com>

        [ Monterey ] webaudio/decode-audio-data-webm-vorbis.html is constantly failing
        https://bugs.webkit.org/show_bug.cgi?id=236328

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-03-01  Robert Jenner  <Jenner@apple.com>

        WindowServer returned not alive with context:,unresponsive work processor(s)
        <rdar://86037417>

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-03-01  Youenn Fablet  <youenn@apple.com>

        fast/mediastream/getUserMedia-to-canvas-1.html and fast/mediastream/getUserMedia-to-canvas-2.html are failing on MacOS when remote video frame flag is enabled
        https://bugs.webkit.org/show_bug.cgi?id=237042
        <rdar://problem/89298601>

        Reviewed by Eric Carlson.

        Video element videoWidth/videoHeight are updated when track settings are changed,
        and not when video frames being received.

        This does not guarantee that videoWidth/videoHeight (main thread) are fully in sync
        with the actual video frames (background thread) when there is a change of size.

        We might be able to tighten this in MediaPlayerPrivateMediaStreamAVFObjC by only resorting on video frames.
        In the meantime, we update the test to set the orientation before creating the source.
        This makes sure the video frames have the expected size and rotation.

        * fast/mediastream/getUserMedia-to-canvas-1.html:
        * fast/mediastream/getUserMedia-to-canvas-2.html:
        * fast/mediastream/resources/getUserMedia-to-canvas.js:

2022-03-01  Chris Dumez  <cdumez@apple.com>

        [Debug] imported/w3c/web-platform-tests/url/toascii.window.html is crashing
        https://bugs.webkit.org/show_bug.cgi?id=236442
        <rdar://problem/89085190>

        Unreviewed, unskip test as it no longer appears to crash in Debug.

        * TestExpectations:

2022-03-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        focus({preventScroll: true}) does not prevent scrolling on iOS
        https://bugs.webkit.org/show_bug.cgi?id=236584
        rdar://88911184

        Reviewed by Simon Fraser.

        Add a couple of new layout tests to verify that passing in `{ preventScroll: true }` for focus options causes
        us to avoid scrolling to reveal focused select elements and text fields.

        * fast/forms/select-focus-prevent-scroll-expected.txt: Added.
        * fast/forms/select-focus-prevent-scroll.html: Added.
        * fast/forms/text-field-focus-prevent-scroll-expected.txt: Added.
        * fast/forms/text-field-focus-prevent-scroll.html: Added.
        * resources/ui-helper.js:

        Also make it safe to call `waitForInputSessionToDismiss()` in a platform-agnostic test, by bailing early if
        we're not on iOS, using WebKit2.

2022-03-01  Alan Bujtas  <zalan@apple.com>

        REGRESSION (r273129): Text contents in <span> with opacity not repainting/updating when sibling element has "will-change: transform"
        https://bugs.webkit.org/show_bug.cgi?id=236876
        <rdar://problem/89180092>

        Reviewed by Simon Fraser.

        * fast/repaint/inline-box-with-self-paint-layer-expected.html: Added.
        * fast/repaint/inline-box-with-self-paint-layer.html: Added.

2022-03-01  Kimmo Kinnunen  <kkinnunen@apple.com>

        WebGL GPUP OpenGL context is not used even if WebGL via Metal is deselected
        https://bugs.webkit.org/show_bug.cgi?id=236505

        Reviewed by Myles C. Maxfield.

        * webgl/resources/test-shader-implementation-language.js: Added.
        (runTest):
        * webgl/webgl-via-metal-flag-off-expected.txt: Added.
        * webgl/webgl-via-metal-flag-off.html: Added.
        * webgl/webgl-via-metal-flag-on-expected.txt: Added.
        * webgl/webgl-via-metal-flag-on.html: Added.

2022-03-01  Cameron McCormack  <heycam@apple.com>

        Make input element UA shadow tree creation lazy
        https://bugs.webkit.org/show_bug.cgi?id=236747

        Reviewed by Aditya Keerthi.

        * fast/forms/lazy-shadow-tree-creation-expected.html: Added.
        * fast/forms/lazy-shadow-tree-creation.html: Added.
        * fast/forms/lazy-shadow-tree-creation.js: Added.
        (supportsType):
        (makeAndAppendInput):
        * LayoutTests/fast/forms/lazy-shadow-tree-creation-crash.html:
        * LayoutTests/fast/forms/lazy-shadow-tree-creation-crash-expected.html:
        Crashtest.
        * fast/shadow-dom/style-resolver-sharing-expected.txt:
        Update to account for the lazy shadow tree being created later.

2022-03-01  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update test expectations and baselines. Unreviewed test gardening.
        https://bugs.webkit.org/show_bug.cgi?id=237310

        * platform/glib/css3/flexbox/line-wrapping-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/007-expected.txt:
        * platform/glib/fast/dom/scroll-reveal-top-overflow-expected.txt: Added.
        * platform/glib/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt:
        * platform/gtk/TestExpectations:
        * platform/gtk/fast/repaint/vertical-text-repaint-expected.txt: Added.
        * platform/gtk/fast/writing-mode/japanese-lr-selection-expected.txt:
        * platform/gtk/tables/mozilla_expected_failures/dom/appendCol1-expected.txt:
        * platform/wpe/fast/repaint/vertical-text-repaint-expected.txt: Added.
        * platform/wpe/fast/writing-mode/japanese-lr-selection-expected.txt:
        * platform/wpe/tables/mozilla_expected_failures/dom/appendCol1-expected.txt:

2022-03-01  Matt Woodrow  <mattwoodrow@apple.com>

        Handle perpendicular containing blocks when computing available logical height.
        https://bugs.webkit.org/show_bug.cgi?id=236953

        Reviewed by Dean Jackson.

        * TestExpectations:

        Existing subgrid tests marked as passing.

2022-03-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATSPI] Remove layout tests checking children added/removed notifications
        https://bugs.webkit.org/show_bug.cgi?id=237272

        Reviewed by Adrian Perez de Castro.

        Children changed notifications are not expected by any other tests because other ports don't support them. We
        already have unit tests to ensure they work as expected so we can just remove the layout tests and ensure we
        don't emit those notifications either.

        * accessibility/children-changed-sends-notification-expected.txt: Removed.
        * accessibility/children-changed-sends-notification.html: Removed.
        * accessibility/gtk/menu-list-unfocused-notifications-expected.txt:
        * accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt: Removed.
        * accessibility/gtk/no-notification-for-unrendered-iframe-children.html: Removed.
        * platform/glib/TestExpectations:
        * platform/gtk/TestExpectations:
        * platform/mac/TestExpectations:
        * platform/win/TestExpectations:
        * platform/wincairo-wk1/TestExpectations:

2022-02-28  Tyler Wilcock  <tyler_w@apple.com>

        AX: WebKit should ignore empty modals rather than trapping focus inside them
        https://bugs.webkit.org/show_bug.cgi?id=237163

        Reviewed by Chris Fleizach and Andres Gonzalez.

        * accessibility/ignore-modals-without-any-content-expected.txt: Added.
        * accessibility/ignore-modals-without-any-content.html: Added.
        * platform/glib/TestExpectations: Skip new test.
        * platform/ios/TestExpectations: Enable new test.
        * platform/ios/accessibility/ignore-modals-without-any-content-expected.txt: Added.
        * platform/win/TestExpectations: Skip new test.

2022-02-28  Simon Fraser  <simon.fraser@apple.com>

        Compositing/paint invalidation with transforms
        https://bugs.webkit.org/show_bug.cgi?id=233421
        <rdar://problem/85814854>

        Reviewed by Alan Bujtas.
        
        * compositing/repaint/composite-and-scale-change-expected.txt: Added.
        * compositing/repaint/composite-and-scale-change.html: Added.
            Test that dumps repaint rects.
        * compositing/shared-backing/repaint-into-shared-backing-become-composited-expected.html: Added.
        * compositing/shared-backing/repaint-into-shared-backing-become-composited.html: Added.
            Companion to repaint-into-shared-backing.html but toggles compositing in the other
            direction.
        * platform/gtk/compositing/repaint/composite-and-scale-change-actual.txt: Added.
        * platform/mac-wk1/compositing/repaint/composite-and-scale-change-expected.txt: Added.

2022-02-28  Simon Fraser  <simon.fraser@apple.com>

        No animation when scroll snap scroller is navigated with the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=236244

        Reviewed by Tim Horton.

        Turn off the scroll animator for these tests that assume that scrolling is instantaneous.

        * css3/scroll-snap/scroll-padding-overflow-paging.html:
        * fast/events/wheelevent-in-scrolling-div.html:
        * tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:

2022-02-28  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] fast/mediastream/video-rotation-gpu-process-crash.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=237295

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-28  Robert Jenner  <Jenner@apple.com>

        REBASELINE [ iOS15 ] fast/text/khmer-lao-font.html is a constant text failure
        <rdar://88841324>

        Unreviewed test gardening. Rebaseline for iOS15.

        * platform/ios-wk2/TestExpectations:
        * platform/ios-wk2/fast/text/khmer-lao-font-expected.txt:
        * platform/ios/fast/text/khmer-lao-font-expected.txt:

2022-02-28  Rob Buis  <rbuis@igalia.com>

        Handle widow relayout differently
        https://bugs.webkit.org/show_bug.cgi?id=235519

        Reviewed by Alan Bujtas.

        * fast/multicol/widow-many-relayouts-crash-expected.txt: Added.
        * fast/multicol/widow-many-relayouts-crash.html: Added.

2022-02-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: add `IterableWeakSet`
        https://bugs.webkit.org/show_bug.cgi?id=237141

        Reviewed by Patrick Angle.

        * inspector/unit-tests/iterableweakset.html: Added.
        * inspector/unit-tests/iterableweakset-expected.txt: Added.

2022-02-28  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r288070): [ Monterey ] platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment.html is a constant text failure.
        https://bugs.webkit.org/show_bug.cgi?id=236857

        Unreviewed test gardening.

        * platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Removed.
        * platform/mac/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment-expected.txt: Previous file was in platform/mac/fast... instead of platform/mac/platform/mac/fast...

2022-02-28  Aditya Keerthi  <akeerthi@apple.com>

        [macOS] Unable to upload ".pages" files to file inputs accepting ".pages" and ".jpeg" files
        https://bugs.webkit.org/show_bug.cgi?id=237219
        rdar://89482882

        Reviewed by Tim Horton and Said Abou-Hallawa.

        Add a layout test that contains a file input that accepts ".pages" and
        ".jpeg" files, and attempts to upload a ".pages" file.

        * TestExpectations:
        * fast/forms/file/entries-api/pages-jpeg-open-panel-expected.txt: Added.
        * fast/forms/file/entries-api/pages-jpeg-open-panel.html: Added.
        * fast/forms/file/entries-api/pdf-jpeg-open-panel-expected.txt: Added.
        * fast/forms/file/entries-api/pdf-jpeg-open-panel.html: Added.
        * fast/forms/file/entries-api/resources/documents/document.pages: Added.
        * fast/forms/file/entries-api/resources/documents/document.pdf: Added.
        * platform/mac-wk2/TestExpectations:

2022-02-28  Simon Fraser  <simon.fraser@apple.com>

        Revert r290548
        
        It caused three tests to start failing.

        * css3/scroll-snap/scroll-padding-overflow-paging.html:
        * fast/events/wheelevent-in-scrolling-div.html:
        * tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:

2022-02-28  Pascal Abresch  <nep@packageloss.eu>

        FTP EPLF does not handle directory
        https://bugs.webkit.org/show_bug.cgi?id=45113

        Reviewed by Darin Adler.

        The code used "!result.type" to check for an invalid type. However,
        the first type in the FTPEntryType enum is FTPDirectoryEntry, so this
        was actually returning true for directories, turning them into "junk"
        entries which would not be listed.

        Since the code for EPLF can only result in either files, directories,
        or uninitialized/junk entries, the check can be removed, returning
        result.type is the correct thing to do in all 3 cases.
    
        * http/tests/misc/ftp-eplf-directory-expected.txt: Added.
        * http/tests/misc/ftp-eplf-directory.py: Added.
        * platform/gtk/TestExpectations:

2022-02-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATSPI] Always expose table cells (layout and CSS) that have rendered text content
        https://bugs.webkit.org/show_bug.cgi?id=237204

        Reviewed by Adrian Perez de Castro.

        * accessibility/gtk/nested-block-element-children-expected.txt: Rebaseline.
        * platform/glib/TestExpectations: Remove accessibility/generated-content-with-display-table-crash.html.
        * platform/gtk/TestExpectations: Remove accessibility/gtk/nested-block-element-children.html.

2022-02-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][a11y] Test accessibility/gtk/xml-roles-exposed.html is failing since ATSPI switch
        https://bugs.webkit.org/show_bug.cgi?id=237202

        Reviewed by Adrian Perez de Castro.

        * platform/gtk/TestExpectations: Remove accessibility/gtk/xml-roles-exposed.html.
        * platform/gtk/accessibility/gtk/xml-roles-exposed-expected.txt: Rebaseline.

2022-02-27  Jonathan Bedard  <jbedard@apple.com>

        webkitpy: WebSocket server doesn't support Python 3
        https://bugs.webkit.org/show_bug.cgi?id=230319
        <rdar://problem/58814743>

        Reviewed by Fujii Hironori.

        Make all tests Python 3 compatible, even at the cost of Python 2
        compatibility, since WebSocket tests are always invoked with Python 3.

        * TestExpectations:
        * http/tests/websocket/tests/hybi/bad-handshake-crash_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/binary-frames_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/broken-utf8_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/check-binary-messages_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/client-close-2-expected.txt:
        * http/tests/websocket/tests/hybi/client-close-2.html:
        * http/tests/websocket/tests/hybi/client-close-2_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/client-close-expected.txt:
        * http/tests/websocket/tests/hybi/client-close.html:
        * http/tests/websocket/tests/hybi/client-close_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/close-code-and-reason_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/close-on-unload_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/cookie_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/deflate-frame_wsh.py:
        (_get_deflate_frame_extension_processor):
        (web_socket_do_extra_handshake):
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/echo-cookie_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/echo_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/fragmented-binary-frames_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-maxlength_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-more-extensions-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-more-protocol-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-no-accept-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-no-cr_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-prepended-null_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-fail-by-wrong-accept-header_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-invalid-parameter_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-manual_wsh.py:
        * http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-unsolicited-negotiation-response_wsh.py:
        * http/tests/websocket/tests/hybi/imported/blink/permessage-deflate_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/inspector/binary_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/invalid-continuation_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/invalid-encode-length_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/pong_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/protocol-test_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/reserved-bits_wsh.py:
        (_get_deflate_frame_extension_processor):
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/reserved-opcodes_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/send-file-blob_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/too-long-payload_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/unicode_wsh.py:
        * http/tests/websocket/tests/hybi/unmasked-frames_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/workers/resources/binary-frames_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/workers/resources/check-binary-messages_wsh.py:
        (web_socket_transfer_data):
        (all_distinct_bytes):
        * http/tests/websocket/tests/hybi/workers/resources/no-onmessage-in-sync-op_wsh.py:
        (web_socket_transfer_data):
        * http/tests/websocket/tests/hybi/workers/resources/protocol-test_wsh.py:
        (web_socket_do_extra_handshake):
        * http/tests/websocket/tests/hybi/zero-length-text_wsh.py:
        (web_socket_transfer_data):
        * platform/glib/TestExpectations:
        * platform/ios-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt:
        * platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-2-expected.txt: Removed.
        * platform/mac-wk2/http/tests/websocket/tests/hybi/client-close-expected.txt: Removed.
        * platform/mac-wk2/http/tests/websocket/tests/hybi/handshake-fail-by-no-cr-expected.txt:
        * platform/mac/TestExpectations:
        * platform/win/TestExpectations:
        * platform/wincairo/TestExpectations:

2022-02-27  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r290577.
        https://bugs.webkit.org/show_bug.cgi?id=237264

        Breaks ios-wk2 layout test.

        Reverted changeset:

        "Compute correct containing block override size for items that
        are subgridden in one dimension only."
        https://bugs.webkit.org/show_bug.cgi?id=236951
        https://commits.webkit.org/r290577

2022-02-27  Matt Woodrow  <mattwoodrow@apple.com>

        Compute correct containing block override size for items that are subgridden in one dimension only.
        https://bugs.webkit.org/show_bug.cgi?id=236951

        Reviewed by Dean Jackson.

        * TestExpectations:

        Marked existing WPT as passing.

2022-02-27  Matt Woodrow  <mattwoodrow@apple.com>

        Convert grid direction to be relative to subgrid when accounting for extra margin.
        https://bugs.webkit.org/show_bug.cgi?id=236954

        Reviewed by Dean Jackson.

        * TestExpectations:

        Marks existing test orthogonal-writing-mode-003.html as passing.

2022-02-27  Matt Woodrow  <mattwoodrow@apple.com>

        Handle reverse flow direction when converting iterator coords for a subgrid
        https://bugs.webkit.org/show_bug.cgi?id=236955

        Reviewed by Dean Jackson.

        * TestExpectations:

        Marked grid-gap-007.html as now passing, and added bug annotations to
        remaining subgrid failures.

2022-02-27  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] media/video-src-blob-perf.html timing out likely since update to GStreamer 1.20
        https://bugs.webkit.org/show_bug.cgi?id=237256

        Unreviewed, gardening

        * platform/glib/TestExpectations: Flag test as timing out.

2022-02-27  Tim Nguyen  <ntim@apple.com>

        Optimize StyleSharingResolver inert checks
        https://bugs.webkit.org/show_bug.cgi?id=237235

        Reviewed by Youenn Fablet.

        Add small test that style sharing is not wrongly applied.

        * fast/css/inert-style-sharing-expected.html: Added.
        * fast/css/inert-style-sharing.html: Added.

2022-02-27  Tim Nguyen  <ntim@apple.com>

        Re-import inert and <dialog> WPT
        https://bugs.webkit.org/show_bug.cgi?id=237243

        Reviewed by Youenn Fablet.

        Upstream commit: https://github.com/web-platform-tests/wpt/commit/9261ca87db106c1f31f1ab4f54b8f4a2617cbc24

        * TestExpectations:
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-hittest.tentative-expected.txt:
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-iframe-tabbing.tentative-expected.txt:

2022-02-26  Tim Nguyen  <ntim@apple.com>

        Remove Node::deprecatedIsInert
        https://bugs.webkit.org/show_bug.cgi?id=230845

        Reviewed by Antti Koivisto.

        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-inert-expected.txt: Added.
        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-expected.txt: Added.

2022-02-26  Kate Cheney  <katherine_cheney@apple.com>

        Update CSP handling of javascript URLs
        https://bugs.webkit.org/show_bug.cgi?id=236351
        <rdar://problem/88675827>

        Reviewed by Brent Fulgham.

        * TestExpectations:
        * http/tests/security/contentSecurityPolicy/inline-script-blocked-javascript-url-expected.txt:
        * http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star-expected.txt:
        * http/tests/security/contentSecurityPolicy/javascript-url-blocked-expected.txt:

2022-02-26  Alan Bujtas  <zalan@apple.com>

        [RenderTreeBuilder] Clean up descendant floats when a block container becomes float
        https://bugs.webkit.org/show_bug.cgi?id=237238
        <rdar://79960422>

        Reviewed by Antti Koivisto.

        * fast/block/float/float-merge-anon-parent-crash-expected.txt: Added.
        * fast/block/float/float-merge-anon-parent-crash.html: Added.

2022-02-26  Simon Fraser  <simon.fraser@apple.com>

        No animation when scroll snap scroller is navigated with the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=236244

        Reviewed by Tim Horton.

        Turn off the scroll animator for these tests that assume that scrolling is instantaneous.

        * css3/scroll-snap/scroll-padding-overflow-paging.html:
        * fast/events/wheelevent-in-scrolling-div.html:
        * tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow-rtl-with-keyboard.html:

2022-02-26  Youenn Fablet  <youenn@apple.com>

        REGRESSION(r290358): [ Debug EWS ] ASSERTION FAILED: sample && sample->pixelBuffer()
        https://bugs.webkit.org/show_bug.cgi?id=237164
        <rdar://problem/89442999>

        Unreviewed.

        ASSERTS are fixed through https://bugs.webkit.org/show_bug.cgi?id=237027.
        Removing crash expectations.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-02-25  Simon Fraser  <simon.fraser@apple.com>

        Scrollbars disappear when very long or wide
        https://bugs.webkit.org/show_bug.cgi?id=237232

        Reviewed by Tim Horton.

        * fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar-expected-mismatch.html: Added.
        * fast/scrolling/mac/scrollbars/very-wide-overlay-scrollbar.html: Added.

2022-02-25  Chris Dumez  <cdumez@apple.com>

        SharedArrayBuffer posted to AudioWorkletProcessor is not actually shared with the main thread
        https://bugs.webkit.org/show_bug.cgi?id=237144
        <rdar://problem/89479641>

        Reviewed by Darin Adler.

        Add layout test coverage.

        * http/wpt/webaudio/the-audio-api/the-audioworklet-interface/processors/shared-array-buffer-processor.js: Added.
        (SharedArrayBufferTestProcessor):
        (SharedArrayBufferTestProcessor.prototype.process):
        * http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https-expected.txt: Added.
        * http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html: Added.
        * http/wpt/webaudio/the-audio-api/the-audioworklet-interface/shared-array-buffer.https.html.headers: Added.

2022-02-25  Robert Jenner  <Jenner@apple.com>

        [ Mac wk1 ] 7X imported/w3c/web-platform-tests/pointerevents/pointerevent (layout-tests) are flaky text failures
        https://bugs.webkit.org/show_bug.cgi?id=236128

        
        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-02-25  Matteo Flores  <matteo_flores@apple.com>

        [ iOS EWS ] imported/w3c/web-platform-tests/svg/coordinate-systems/abspos.html is a flaky image failure.
        https://bugs.webkit.org/show_bug.cgi?id=237220

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-25  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r289787?) [ iOS EWS ]fast/layers/parent-clipping-overflow-is-overwritten-by-child-clipping.html is a flaky image failure.
        https://bugs.webkit.org/show_bug.cgi?id=237218

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-25  Alex Christensen  <achristensen@webkit.org>

        Re-add YouTubePluginReplacement, removed in r285252
        https://bugs.webkit.org/show_bug.cgi?id=237182

        Reviewed by Chris Dumez.

        * TestExpectations:
        * platform/ios-wk2/TestExpectations:
        * platform/win/TestExpectations:
        * security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt.
        * security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html.
        * security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt.
        * security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html.
        * security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt.
        * security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt.
        * security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html.
        * security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html: Copied from LayoutTests/security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html.

2022-02-25  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Use default pubKeyCredParams if empty in makeCredential
        https://bugs.webkit.org/show_bug.cgi?id=237109
        rdar://problem/89376484

        Reviewed by Brent Fulgham.

        Update tests to take in account using default pubKeyCredParams.

        * http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-failure.https.html:
        * http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
        * http/wpt/webauthn/public-key-credential-create-success-hid.https.html:

2022-02-25  Alan Bujtas  <zalan@apple.com>

        [Tables] Incorrect table sizing when colgroup comes after tbody
        https://bugs.webkit.org/show_bug.cgi?id=237205
        <rdar://86582214>

        Reviewed by Antti Koivisto.

        * fast/table/table-sizing-fails-when-colgroup-comes-after-content-expected.html: Added.
        * fast/table/table-sizing-fails-when-colgroup-comes-after-content.html: Added.
        * platform/mac/tables/mozilla_expected_failures/dom/appendCol1-expected.txt: Progression.
        * platform/mac/tables/mozilla_expected_failures/dom/appendColGroup1-expected.txt: Progression.

2022-02-25  Youenn Fablet  <youenn@apple.com>

        Non-simple CORS preflight fails due to cache-control header
        https://bugs.webkit.org/show_bug.cgi?id=236837
        <rdar://problem/89382796>

        Reviewed by Chris Dumez.

        * http/wpt/service-workers/cache-control-request-expected.txt:
        * http/wpt/service-workers/cache-control-request.html:
        * http/wpt/service-workers/resources/cross-origin-allow-for-beacon.py: Added.

2022-02-25  Kimmo Kinnunen  <kkinnunen@apple.com>

        REGRESSION(r289580): [ iOS macOS ] TestWebKitAPI.IPCTestingAPI.CanReceiveSharedMemory is a constant timeout
        https://bugs.webkit.org/show_bug.cgi?id=236744

        Reviewed by Antti Koivisto.

        * ipc/stream-sync-reply-shared-memory-expected.txt: Added.
        * ipc/stream-sync-reply-shared-memory.html: Added.

2022-02-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        AX: List item marker not exposed when not a direct child of a list item
        https://bugs.webkit.org/show_bug.cgi?id=236777
        <rdar://problem/89082485>

        Reviewed by Adrian Perez de Castro.

        Update test results.

        * accessibility/gtk/list-items-always-exposed-expected.txt:
        * accessibility/gtk/list-items-always-exposed.html:
        * accessibility/gtk/spans-expected.txt:
        * accessibility/gtk/spans.html:
        * platform/gtk/TestExpectations:

2022-02-25  Arcady Goldmints-Orlov  <agoldmints@igalia.com>

        [GLIB] Update test baselines after various LFC improvements.
        https://bugs.webkit.org/show_bug.cgi?id=237184

        Unreviewed test gardening.

        * platform/glib/fast/backgrounds/background-leakage-transforms-expected.txt:
        * platform/glib/fast/backgrounds/border-radius-split-background-expected.txt:
        * platform/glib/fast/backgrounds/border-radius-split-background-image-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/001-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/002-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/003-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/004-expected.txt:
        * platform/glib/fast/block/positioning/auto/vertical-lr/006-expected.txt:
        * platform/glib/fast/block/positioning/vertical-lr/002-expected.txt:
        * platform/glib/fast/borders/border-image-outset-split-inline-vertical-lr-expected.txt:
        * platform/glib/fast/replaced/vertical-lr/absolute-position-percentage-width-expected.txt:
        * platform/glib/fast/replaced/vertical-lr/absolute-position-with-auto-height-and-top-and-bottom-expected.txt:
        * platform/glib/fast/replaced/vertical-lr/absolute-position-with-auto-width-and-left-and-right-expected.txt:
        * platform/glib/fast/table/border-collapsing/002-vertical-expected.txt:
        * platform/glib/fast/writing-mode/basic-vertical-line-expected.txt:
        * platform/glib/fast/writing-mode/border-image-vertical-lr-expected.txt:
        * platform/glib/fast/writing-mode/border-radius-clipping-vertical-lr-expected.txt:
        * platform/glib/fast/writing-mode/border-styles-vertical-lr-expected.txt:
        * platform/glib/fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt:
        * platform/glib/fast/writing-mode/border-styles-vertical-rl-expected.txt:
        * platform/glib/fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt:
        * platform/glib/fast/writing-mode/border-vertical-lr-expected.txt:
        * platform/glib/fast/writing-mode/box-shadow-vertical-lr-expected.txt:
        * platform/glib/fast/writing-mode/japanese-lr-text-expected.txt:
        * platform/glib/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Added.
        * platform/glib/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Added.
        * platform/gtk/fast/block/lineboxcontain/inline-box-vertical-expected.txt:
        * platform/gtk/fast/html/details-writing-mode-expected.txt:
        * platform/gtk/fast/html/details-writing-mode-mixed-expected.txt:
        * platform/gtk/fast/lists/003-vertical-expected.txt:
        * platform/gtk/fast/overflow/overflow-rtl-vertical-expected.txt:
        * platform/gtk/fast/text/international/synthesized-italic-vertical-latin-expected.txt:
        * platform/gtk/fast/writing-mode/english-lr-text-expected.txt:
        * platform/gtk/fast/writing-mode/text-orientation-basic-expected.txt:
        * platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-expected.txt:
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Removed.
        * platform/gtk/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Removed.
        * platform/wpe/fast/block/lineboxcontain/inline-box-vertical-expected.txt:
        * platform/wpe/fast/html/details-writing-mode-expected.txt:
        * platform/wpe/fast/html/details-writing-mode-mixed-expected.txt:
        * platform/wpe/fast/lists/003-vertical-expected.txt:
        * platform/wpe/fast/overflow/overflow-rtl-vertical-expected.txt:
        * platform/wpe/fast/text/international/synthesized-italic-vertical-latin-expected.txt:
        * platform/wpe/fast/writing-mode/english-lr-text-expected.txt:
        * platform/wpe/fast/writing-mode/text-orientation-basic-expected.txt:
        * platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-expected.txt:
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt: Removed.
        * platform/wpe/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt: Removed.

2022-02-24  Alan Bujtas  <zalan@apple.com>

        Unreviewed test gardening after r290454.

        * TestExpectations: Progressions.

2022-02-24  Matteo Flores  <matteo_flores@apple.com>

        [ iOS ] editing/pasteboard/dom-paste/dom-paste-same-origin.html is a flaky timeout/failure
        https://bugs.webkit.org/show_bug.cgi?id=237174

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Matteo Flores  <matteo_flores@apple.com>

        [ BigSur+ EWS ] imported/w3c/web-platform-tests/speech-api/SpeechSynthesis-speak-twice.html is a flaky ASSERTION FAILED / failure
        https://bugs.webkit.org/show_bug.cgi?id=237172

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-02-24  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290358): [ Debug EWS ] ASSERTION FAILED: sample && sample->pixelBuffer()
        https://bugs.webkit.org/show_bug.cgi?id=237164

        Unreviewed test gardening.

        * platform/ios/TestExpectations:
        * platform/mac/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        [ BigSur+ EWS ] webgl/pending/conformance/textures/misc/tex-image-video-repeated.html is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=237166

        Unreviewed test gardening.

        * platform/mac/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        [ BigSur+ Debug wk2 EWS ] imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/quirks.window.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=237165

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations:

2022-02-24  Matteo Flores  <matteo_flores@apple.com>

        REGRESSION(r290356-r290351?): [ iOS15 ] 3 imported/w3c/web-platform-tests/service-workers/service-worker/* tests are constant text failures.
        https://bugs.webkit.org/show_bug.cgi?id=237160

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r290351-r290356?): [ iOS EWS ] imported/w3c/web-platform-tests/service-workers/service-worker/partitioned-service-worker-getRegistrations.tentative.https.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=237162

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        REGRESSION(r290356-r290351?):[ iOS EWS ] imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-no-freshness-headers.https.html  is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=237161

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        [ iOS EWS ]imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-049.htmlis a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=237159

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Robert Jenner  <Jenner@apple.com>

        REGRESSION (r289765-r289784): [iOS] Flaky crash under WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree()
        https://bugs.webkit.org/show_bug.cgi?id=236794

        Unreviewed test gardening.

        * platform/ios/TestExpectations:

2022-02-24  Matteo Flores  <matteo_flores@apple.com>

        [ iOS15 ] fast/events/autoscroll-in-iframe-body.html is a flaky failure.
        https://bugs.webkit.org/show_bug.cgi?id=237150

        Unreviewed Test Gardening.

        * platform/ios/TestExpectations: Flaky Failure expectation while investigating

2022-02-24  Megan Gardner  <megan_gardner@apple.com>

        Add percent decoding to Scroll to Text Fragment parsing.
        https://bugs.webkit.org/show_bug.cgi?id=236818

        Reviewed by Chris Dumez.

        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-emoji-expected.html: Added.
        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-emoji.html: Added.
        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-expected.html: Added.
        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-sentence-expected.html: Added.
        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start-sentence.html: Added.
        * http/wpt/html/dom/scroll-to-text-fragment/scroll-to-text-fragment-start.html: Added.

2022-02-24  Alan Bujtas  <zalan@apple.com>

        [IFC][Integration] Enable non-paginated vertical-rl writing mode
        https://bugs.webkit.org/show_bug.cgi?id=236897

        Reviewed by Antti Koivisto.

        * fast/repaint/vertical-text-repaint-expected.txt:
        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-empty-inline-expected.txt:
        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/css/cssom-view/offsetTopLeft-leading-space-inline-expected.txt:
        * platform/ios/fast/backgrounds/border-radius-split-background-expected.txt:
        * platform/ios/fast/backgrounds/border-radius-split-background-image-expected.txt:
        * platform/ios/fast/borders/border-image-outset-split-inline-vertical-lr-expected.txt:
        * platform/ios/fast/writing-mode/border-styles-vertical-rl-expected.txt:
        * platform/ios/fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt:
        * platform/mac/fast/backgrounds/border-radius-split-background-expected.txt:
        * platform/mac/fast/backgrounds/border-radius-split-background-image-expected.txt:
        * platform/mac/fast/borders/border-image-outset-split-inline-vertical-lr-expected.txt:
        * platform/mac/fast/table/border-collapsing/004-vertical-expected.txt:
        * platform/mac/fast/writing-mode/border-styles-vertical-rl-expected.txt:
        * platform/mac/fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt:

2022-02-24  Kate Cheney  <katherine_cheney@apple.com>

        Update CSP console logging
        https://bugs.webkit.org/show_bug.cgi?id=232216
        <rdar://problem/89322580>

        Reviewed by Brent Fulgham.

        * http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/audio-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/font-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/image-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/report-blocked-uri-after-multiple-redirects-expected.txt:
        * http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/script-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/track-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
        * http/tests/security/contentSecurityPolicy/video-redirect-blocked.html:
        * http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:

2022-02-24  Alan Bujtas  <zalan@apple.com>

        [LFC][IFC] Non-orthogonal inline block boxes keep their baseline on ideographic lines
        https://bugs.webkit.org/show_bug.cgi?id=236946

        Reviewed by Antti Koivisto.

        * platform/mac/fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt: Progression

2022-02-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: merge WI.OverlayManager into WI.DOMNode
        https://bugs.webkit.org/show_bug.cgi?id=236533

        Reviewed by Patrick Angle.

        * inspector/dom/showFlexOverlay.html:
        * inspector/dom/showGridOverlay.html:
        Replace direct `DOMAgent` calls with equivalent `WI.DOMNode` methods.

2022-02-24  Frédéric Wang  <fwang@igalia.com>

        RELEASE_ASSERT(!renderer()); in WebCore::Node::~Node() + 479 (Node.cpp:366)
        https://bugs.webkit.org/show_bug.cgi?id=235380

        Reviewed by Ryosuke Niwa.

        Add non-regression test.

        * fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown-expected.txt: Added.
        * fast/shadow-dom/slot-with-pseudo-element-children-renderer-teardown.html: Added.

2022-02-24  Youenn Fablet  <youenn@apple.com>

        webrtc/video-replace-muted-track.html is unnecessary long to run
        https://bugs.webkit.org/show_bug.cgi?id=237086

        Reviewed by Peng Liu.

        * platform/mac/TestExpectations: Unflake test since it is no longer flaky in bots.
        * webrtc/routines.js:
        We were waiting for 360 iterations to validate no black frame is found in webrtc/routines.js.
        This makes it last around 20 seconds.
        Decrease the number of iterations to 40, around 2 seconds by decrementing counter from provided value
        instead of incrementing value up to 400.

2022-02-24  Alejandro G. Castro  <alex@igalia.com>

        Unreviewed test gardening.

        Another WebGL test with failing expected results in glib.

        * platform/glib/TestExpectations:
        * platform/glib/webgl/webgl-allow-shared-expected.txt: Removed.

2022-02-23  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r290284.
        https://bugs.webkit.org/show_bug.cgi?id=237131

        It is preventing the fuzzer from finding other bugs

        Reverted changeset:

        "Make input element UA shadow tree creation lazy"
        https://bugs.webkit.org/show_bug.cgi?id=236747
        https://commits.webkit.org/r290284

2022-02-23  Tim Nguyen  <ntim@apple.com>

        Use of showModalDialog should appear as a warning in WI console
        https://bugs.webkit.org/show_bug.cgi?id=237046

        Reviewed by Devin Rousso.

        Test gardening to take in account new console warning.

        * fast/animation/request-animation-frame-during-modal-expected.txt:
        * fast/dom/Window/open-window-min-size-expected.txt:
        * fast/events/show-modal-dialog-onblur-onfocus-expected.txt:
        * http/tests/cookies/document-cookie-after-showModalDialog-expected.txt:
        * http/tests/security/navigate-when-restoring-cached-page-expected.txt:
        * http/tests/security/showModalDialog-sync-cross-origin-page-load2-expected.txt:
        * platform/mac-wk1/fast/events/beforeunload-showModalDialog-expected.txt: Added.
        * platform/mac-wk1/fast/events/pagehide-showModalDialog-expected.txt: Added.
        * platform/mac-wk1/fast/events/unload-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/beforeunload-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/pagehide-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/unload-showModalDialog-expected.txt: Added.

2022-02-23  Robert Jenner  <Jenner@apple.com>

        [ Mac wk1 Release ] imported/w3c/web-platform-tests/html/user-activation/activation-trigger-pointerevent.html is a constant text failure
        https://bugs.webkit.org/show_bug.cgi?id=236126

        Unreviewed test gardening.

        * platform/mac-wk1/TestExpectations:

2022-02-23  Robert Jenner  <Jenner@apple.com>

        Unreviewed, reverting r290351 and r290404.

        Broke the build after revert of initial commit (r290348)
        Rebases no longer needed due to revert

        Reverted changesets:

        "Use of showModalDialog should appear as a warning in WI
        console"
        https://bugs.webkit.org/show_bug.cgi?id=237046
        https://commits.webkit.org/r290351

        "Use of showModalDialog should appear as a warning in WI
        console"
        https://bugs.webkit.org/show_bug.cgi?id=237046
        https://commits.webkit.org/r290404

2022-02-23  Robert Jenner  <Jenner@apple.com>

        Use of showModalDialog should appear as a warning in WI console
        https://bugs.webkit.org/show_bug.cgi?id=237046

        Unreviewed test gardening. Rebase for wk1 mac and Windows tests.

        * platform/mac-wk1/fast/events/beforeunload-showModalDialog-expected.txt: Added.
        * platform/mac-wk1/fast/events/pagehide-showModalDialog-expected.txt: Added.
        * platform/mac-wk1/fast/events/unload-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/beforeunload-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/pagehide-showModalDialog-expected.txt: Added.
        * platform/wincairo-wk1/fast/events/unload-showModalDialog-expected.txt: Added.

2022-02-23  J Pascoe  <j_pascoe@apple.com>

        [WebAuthn] Improve error message for missing pubKeyCredParams
        https://bugs.webkit.org/show_bug.cgi?id=235421
        rdar://87884875

        Reviewed by Brent Fulgham.

        Update test to reflect new error message.

        * http/wpt/webauthn/public-key-credential-create-failure.https.html:

2022-02-23  Alan Bujtas  <zalan@apple.com>

        [Subpixel] imported/w3c/web-platform-tests/css/css-flexbox/auto-margins-001.html fails at certain font sizes
        https://bugs.webkit.org/show_bug.cgi?id=217643
        <rdar://problem/70464703>

        Unreviewed gardening.

        * platform/ios-simulator-wk2/TestExpectations: It must have progressed at some point.

2022-02-23  Robert Jenner  <Jenner@apple.com>

        [ Mac EWS ] imported/w3c/web-platform-tests/workers/semantics/multiple-workers/004.html is a flaky text failure
        https://bugs.webkit.org/show_bug.cgi?id=237095

        Unreviewed test gardening.

        * platform/mac-wk2/TestExpectations: Setting [ Pass Failure ] expectations for flaky test failure that is slowing down EWS.

2022-02-23  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening for GPU Process bot.

        * imported/blink/svg/paintorder/paintorder.svg:

2022-02-23  Jon Lee  <jonlee@apple.com>

        Test gardening for [CSS Blending] Non-separable blend modes don't work
        https://bugs.webkit.org/show_bug.cgi?id=131354

        Unreviewed.
        * TestExpectations:

2022-02-23  Andres Gonzalez  <andresg_22@apple.com>

        Fix for assert crash in AccessibilityRenderObject::visiblePositionForIndex.
        https://bugs.webkit.org/show_bug.cgi?id=236795
        rdar://89025180

        Reviewed by Chris Fleizach.

        * accessibility/native-text-control-attributed-string-expected.txt: Added.
        * accessibility/native-text-control-attributed-string.html: Added.

2022-02-23  Alejandro G. Castro  <alex@igalia.com>

        Unreviewed test gardening.

        These tests had incorrect expected results with failing tests for
        glib.

        * platform/glib/TestExpectations:
        * platform/glib/webgl/1.0.3/conformance/context/context-lost-restored-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/extensions/oes-texture-half-float-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-s3tc-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/misc/webgl-specific-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/renderbuffers/framebuffer-object-attachment-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/rendering/point-no-attributes-expected.txt: Removed.
        * platform/glib/webgl/1.0.3/conformance/textures/texture-copying-feedback-loops-expected.txt: Removed.

2022-02-23  Kimmo Kinnunen  <kkinnunen@apple.com>

        Crash when calling WEBGL_lose_context.loseContext() after the context has been lost
        https://bugs.webkit.org/show_bug.cgi?id=236966

        Reviewed by Dean Jackson.

        * webgl/lose-context-after-context-lost-expected.txt: Added.
        * webgl/lose-context-after-context-lost.html: Added.

2022-02-23  Youenn Fablet  <youenn@apple.com>

        Enable WebRTCRemoteVideoFrameEnabled by default in WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=236969

        Reviewed by Eric Carlson.

        Disable WebRTCRemoteVideoFrameEnabled for those two tests until we figure out why they fail more with this option.

        * fast/mediastream/getUserMedia-to-canvas-1.html:
        * fast/mediastream/getUserMedia-to-canvas-2.html:

2022-02-22  Chris Dumez  <cdumez@apple.com>

        http/wpt/push-api/onpush-disabled.html fails
        https://bugs.webkit.org/show_bug.cgi?id=236874
        <rdar://problem/89176154>

        Reviewed by Youenn Fablet.

        Unskip test that should no longer be flaky.

        * TestExpectations:

2022-02-22  Tim Nguyen  <ntim@apple.com>

        Use of showModalDialog should appear as a warning in WI console
        https://bugs.webkit.org/show_bug.cgi?id=237046

        Reviewed by Devin Rousso and Darin Adler.

        Test gardening to take in account new console warning.

        * fast/animation/request-animation-frame-during-modal-expected.txt:
        * fast/dom/Window/open-window-min-size-expected.txt:
        * fast/events/show-modal-dialog-onblur-onfocus-expected.txt:
        * http/tests/cookies/document-cookie-after-showModalDialog-expected.txt:
        * http/tests/security/navigate-when-restoring-cached-page-expected.txt:
        * http/tests/security/showModalDialog-sync-cross-origin-page-load2-expected.txt:

2022-02-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed test gardening for rdar://86037417.

        * platform/mac-wk2/TestExpectations:

2022-02-22  Frédéric Wang  <fwang@igalia.com>

        null ptr deref via WebXRSystem::requestSession
        https://bugs.webkit.org/show_bug.cgi?id=235916

        Reviewed by Dean Jackson.

        Add non-regression test.

        * webxr/xr-requestSession-crash-expected.txt: Added.
        * webxr/xr-requestSession-crash.html: Added.

2022-02-22  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Initial MediaRecorder implementation
        https://bugs.webkit.org/show_bug.cgi?id=236558

        Reviewed by Xabier Rodriguez-Calvar.

        Flag the remaining MediaRecorder test failures. Those will be adressed in follow-up patches.

        * http/wpt/mediarecorder/pause-recording.html:
        * platform/glib/TestExpectations:

2022-02-22  Kate Cheney  <katherine_cheney@apple.com>

        Authenticated encryption console logging causing performance regressions
        https://bugs.webkit.org/show_bug.cgi?id=236987
        <rdar://problem/89108253>

        Reviewed by Chris Dumez.

        * crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters-expected.txt:
        * crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:
        * crypto/subtle/aes-cbc-generate-key-encrypt-decrypt-expected.txt:
        * crypto/subtle/aes-cbc-import-key-decrypt-expected.txt:
        * crypto/subtle/aes-cbc-import-key-encrypt-expected.txt:
        * crypto/subtle/aes-ctr-encrypt-malformed-parameters-expected.txt:
        * crypto/subtle/aes-ctr-generate-key-encrypt-decrypt-expected.txt:
        * crypto/subtle/aes-ctr-import-key-encrypt-expected.txt:
        * platform/glib/crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters-expected.txt:
        * platform/glib/crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:

2022-02-22  Youenn Fablet  <youenn@apple.com>

        http/wpt/mediarecorder/mute-tracks.html fails with WebRTCRemoteVideoFrameEnabled=true
        https://bugs.webkit.org/show_bug.cgi?id=237021

        Reviewed by Kimmo Kinnunen.

        * http/wpt/mediarecorder/mute-tracks.html:

2022-02-22  Tim Nguyen  <ntim@apple.com>

        Make pointer-events checks for SVG take in account inert subtrees
        https://bugs.webkit.org/show_bug.cgi?id=235836

        Reviewed by Antti Koivisto.

        iOS doesn't support test_actions, so it needs different baselines.

        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-svg-hittest-expected.txt: Added.
        * platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-svg-hittest.tentative-expected.txt: Added.

2022-02-22  Jonathan Bedard  <jbedard@apple.com>

        Unreviewed, reverting r290220.

        Tests still fail with with fuzzy data

        Reverted changeset:

        "Test gardening for [CSS Blending] Non-separable blend modes
        don't work"
        https://bugs.webkit.org/show_bug.cgi?id=131354
        https://commits.webkit.org/r290220

2022-02-22  Asumu Takikawa  <asumu@igalia.com>

        Initial support for Wasm/ESM-integration in the WebCore module loader
        https://bugs.webkit.org/show_bug.cgi?id=236268

        Reviewed by Yusuke Suzuki.

        Add Wasm module MIME type for HTTP tests, and add tests.

        * http/conf/mime.types:
        * http/tests/wasm/resources/empty-module.wasm: Added.
        * http/tests/wasm/wasm-esm-disabled-with-setting-expected.txt: Added.
        * http/tests/wasm/wasm-esm-disabled-with-setting.html: Added.

2022-02-21  Cameron McCormack  <heycam@apple.com>

        Make input element UA shadow tree creation lazy
        https://bugs.webkit.org/show_bug.cgi?id=236747

        Reviewed by Aditya Keerthi.

        * fast/forms/lazy-shadow-tree-creation-expected.html: Added.
        * fast/forms/lazy-shadow-tree-creation.html: Added.
        * fast/forms/lazy-shadow-tree-creation.js: Added.
        (supportsType):
        (makeAndAppendInput):

2022-02-21  Jon Lee  <jonlee@apple.com>

        Unreviewed gardening for the GPU Process bots.
        * css3/color-filters/color-filter-text-decoration-shadow.html:
        * fast/gradients/conic-gradient-alpha-unpremultiplied.html:
        * fast/gradients/conic-gradient-alpha.html:
        * fast/gradients/linear-two-hints-angle.html:
        * fast/scrolling/overflow-inside-foreignobject.html:
        * gpu-process/TestExpectations:
        * imported/blink/svg/custom/crisp-edges-leak.svg:
        * platform/ios/TestExpectations:

2022-02-21  Jon Lee  <jonlee@apple.com>

        Add test name to the image diff template
        https://bugs.webkit.org/show_bug.cgi?id=237003

        Reviewed by Sam Weinig.

        Include the test name in the page. Workflow to update fuzzy match data becomes easier to copy-paste the name there instead of from the location bar.
        * fast/harness/image-diff-template-expected.txt:
        * fast/harness/image-diff-template.html:

== Rolled over to ChangeLog-2022-02-22 ==
