LibWeb: Implement CSS Scroll Snap Level 1 - #10944
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds CSS Scroll Snap support across CSS parsing and computed values, painting and layout, main-thread scrolling, compositor scrolling, gesture tracking, resnapping, and IPC. It adds snap-area selection, writing-mode handling, proximity and mandatory snapping, Sequence Diagram(s)sequenceDiagram
participant UIInput
participant EventHandler
participant LocalNavigable
participant ScrollSnap
participant Compositor
UIInput->>EventHandler: wheel or keyboard input
EventHandler->>LocalNavigable: record gesture intent and scroll
LocalNavigable->>ScrollSnap: select snap destination
LocalNavigable->>Compositor: request async or smooth scroll
Compositor-->>LocalNavigable: report offset, takeover, or completion
LocalNavigable-->>UIInput: dispatch settled scrollend
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Nitpick comments (2)
Tests/LibWeb/Text/input/include.js (1)
67-75: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winRead the scroll offset once per iteration.
The loop reads
readScrollOffset()twice per iteration: once in the condition and once forpreviousScrollOffset. If the offset changes between the two reads, the changed value becomes the baseline and the comparison result no longer matches the sample that was stored. Use one read per iteration to make the settle detection deterministic.Note also that this helper never terminates if
readScrollOffset()returns an object, because!==compares identity. Keep the callers returning primitive values.♻️ Proposed refactor
async function scrollOffsetStopsChanging(readScrollOffset) { let previousScrollOffset = null; - while (previousScrollOffset !== readScrollOffset()) { - previousScrollOffset = readScrollOffset(); + let currentScrollOffset = readScrollOffset(); + while (previousScrollOffset !== currentScrollOffset) { + previousScrollOffset = currentScrollOffset; for (let frame = 0; frame < 5; frame++) { await animationFrame(); } + currentScrollOffset = readScrollOffset(); } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Tests/LibWeb/Text/input/include.js` around lines 67 - 75, Update scrollOffsetStopsChanging to read readScrollOffset() once per loop iteration, store that sample, and compare it with the previous primitive value before waiting for animation frames. Preserve primitive-valued callers and ensure the loop exits when two consecutive samples are equal.Libraries/LibWeb/Painting/ScrollSnap.cpp (1)
815-816: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueMake the non-null invariants in
select_resnap_destinationexplicit.Two dereferences in this block rely on invariants established elsewhere in the function:
- Line 816 dereferences
computed_valueswithout a null check. Every other call site ofcomputed_values_for_snap_containerchecks the result (lines 392-394 and 426-428). The pointer is non-null here only becausecollect_snap_position_candidatesat line 773 already returned{}when it is null.- Line 851 dereferences
*preferred_axis.area. That optional is non-empty only because the early return at lines 781-782 guarantees at least one chosen candidate exists, which makes the!=branch at line 843 select an axis that has an area.Neither is a live crash today. Add a
VERIFYfor each so a later change to the early return or the preference order fails loudly instead of dereferencing an empty value.♻️ Proposed assertions
auto const* computed_values = computed_values_for_snap_container(snap_container); + // NB: collect_snap_position_candidates() above returns no collection when the container has no computed values. + VERIFY(computed_values); bool block_axis_is_y = computed_values->writing_mode() == CSS::WritingMode::HorizontalTb;auto const& preferred_axis = preferred_axis_is_x ? x_axis : y_axis; auto& other_axis = preferred_axis_is_x ? y_axis : x_axis; + // NB: At least one axis chose a candidate, so the preferred axis always has a snapped area. + VERIFY(preferred_axis.area.has_value()); auto preferred_area_candidate_in_other_axis = other_axis.candidates.find_if([&](auto const& candidate) { return candidate.area == *preferred_axis.area; });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Libraries/LibWeb/Painting/ScrollSnap.cpp` around lines 815 - 816, Add explicit VERIFY assertions in select_resnap_destination before dereferencing computed_values and preferred_axis.area: validate computed_values is non-null after collect_snap_position_candidates, and validate preferred_axis.area has a value before its dereference. Preserve the existing control flow and dereferences after these invariant checks.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Libraries/LibWeb/Internals/Internals.cpp`:
- Around line 355-363: Update Internals::send_key so page().handle_keyup(...) is
dispatched only when repeat_count is greater than zero, preserving the existing
keydown loop and ensuring zero repetitions produce no keyboard events.
In `@Services/Compositor/ContextState.cpp`:
- Around line 936-946: The cancel_smooth_scroll_taken_over_by_user_input path
must prevent taken-over smooth scroll operations from being added to
completed_operation_ids through cancel_smooth_scroll. Update this method to
record the operation only as taken over, or otherwise ensure
LocalNavigable::adopt_pending_async_scroll_offsets does not resolve it as a
normal completion, while preserving the existing cancellation behavior.
In
`@Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txt`:
- Line 7: Correct the test description text by inserting the missing space in
“thescroller,” changing it to “the scroller.”
In
`@Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txt`:
- Line 6: Correct the shared source test description spelling from “visibilty”
to “visibility”, then regenerate the expected outputs at
Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txt:6-6
and
Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txt:6-6.
In `@Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html`:
- Around line 34-41: Update every asyncScrollingStateWheelTargetAt call in the
test to use an unambiguous point inside the outer scroller, such as (175, 150),
instead of (100, 100), while preserving each existing delta and mode argument.
In
`@Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html`:
- Around line 33-35: Bound the animationFrame loop waiting for the compositor
snap scroll in the test around scroller.scrollTop by tracking a finite frame
budget or retry count. Stop waiting when the budget is exhausted, then execute
the existing println so a snap scroll that never starts reports false
deterministically instead of hanging.
---
Nitpick comments:
In `@Libraries/LibWeb/Painting/ScrollSnap.cpp`:
- Around line 815-816: Add explicit VERIFY assertions in
select_resnap_destination before dereferencing computed_values and
preferred_axis.area: validate computed_values is non-null after
collect_snap_position_candidates, and validate preferred_axis.area has a value
before its dereference. Preserve the existing control flow and dereferences
after these invariant checks.
In `@Tests/LibWeb/Text/input/include.js`:
- Around line 67-75: Update scrollOffsetStopsChanging to read readScrollOffset()
once per loop iteration, store that sample, and compare it with the previous
primitive value before waiting for animation frames. Preserve primitive-valued
callers and ensure the loop exits when two consecutive samples are equal.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: b94c7e9f-f567-4b24-84cb-5a4d2dfa499b
📒 Files selected for processing (285)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/css/scroll-snap-type-animation.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-removed-snap-area-is-not-retained.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txtTests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/css/scroll-snap-type-animation.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.htmlTests/LibWeb/Text/input/scroll-snap-after-paging-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.htmlTests/LibWeb/Text/input/scroll-snap-align-writing-mode.htmlTests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.htmlTests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-removed-snap-area-is-not-retained.htmlTests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.htmlTests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.htmlTests/LibWeb/Text/input/scroll-snap-stop-wheel-step.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.htmlTests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.htmlTests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.jsTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/support/common.cssTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.htmlTests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.htmlUI/Android/src/main/cpp/WebViewImplementationNative.cppUI/AppKit/Interface/Event.mmUI/AppKit/Interface/LadybirdWebView.mmUI/Qt/WebContentView.cpp
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
Libraries/LibWeb/Painting/ScrollSnap.cpp (1)
458-493: 🚀 Performance & Scalability | 🔵 TrivialConsider caching collected snap candidates for containers with many snap areas.
collect_snap_position_candidateswalks the complete paintable subtree of the container, andis_captured_by_snap_containerwalks a containing block chain for each visited box. This runs on each snap evaluation, so a wheel or drag gesture repeats the walk per input event. For a container with thousands of snap areas this cost is paid on every event.A per-frame or per-layout cache of the candidate lists, invalidated on layout and on style changes to the snap properties, would keep gesture handling independent of snap area count.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Libraries/LibWeb/Painting/ScrollSnap.cpp` around lines 458 - 493, Cache the candidate lists produced by collect_snap_position_candidates for each snap container so repeated snap evaluations can reuse them instead of traversing the paintable subtree and containing-block chains on every input event. Invalidate the cache at frame or layout boundaries and whenever relevant scroll-snap styles change, while preserving separate x/y candidate data and existing collection behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@Libraries/LibWeb/Painting/ScrollSnap.cpp`:
- Around line 458-493: Cache the candidate lists produced by
collect_snap_position_candidates for each snap container so repeated snap
evaluations can reuse them instead of traversing the paintable subtree and
containing-block chains on every input event. Invalidate the cache at frame or
layout boundaries and whenever relevant scroll-snap styles change, while
preserving separate x/y candidate data and existing collection behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: a276fbe6-4a6e-4368-9356-01ca25de75cf
📒 Files selected for processing (283)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/css/scroll-snap-type-animation.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txtTests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/css/scroll-snap-type-animation.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.htmlTests/LibWeb/Text/input/scroll-snap-after-paging-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.htmlTests/LibWeb/Text/input/scroll-snap-align-writing-mode.htmlTests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.htmlTests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.htmlTests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.htmlTests/LibWeb/Text/input/scroll-snap-stop-wheel-step.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.htmlTests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.htmlTests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.jsTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/support/common.cssTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.htmlTests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.htmlUI/Android/src/main/cpp/WebViewImplementationNative.cppUI/AppKit/Interface/Event.mmUI/AppKit/Interface/LadybirdWebView.mmUI/Qt/WebContentView.cpp
🚧 Files skipped from review as they are similar to previous changes (264)
- Tests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txt
- Tests/LibWeb/Text/expected/css/getComputedStyle-print-all.txt
- Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txt
- Libraries/LibWeb/CSS/StyleInvalidation.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
- Libraries/LibWeb/Painting/AccumulatedVisualContext.h
- Libraries/LibWeb/CSS/Keywords.json
- Libraries/LibWeb/CMakeLists.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txt
- Libraries/LibWeb/DOM/Element.h
- Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txt
- Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
- Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txt
- Libraries/LibWeb/Page/Page.h
- Libraries/LibWeb/Forward.h
- Libraries/LibWebView/CompositorConnection.h
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txt
- Libraries/LibWeb/Painting/Paintable.h
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txt
- Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txt
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
- Tests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txt
- Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
- Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txt
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txt
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.html
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txt
- Tests/LibWeb/Text/expected/all-window-properties.txt
- Tests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txt
- Tests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txt
- Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
- Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
- Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.html
- Libraries/LibWeb/Layout/ScrollableOverflow.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txt
- Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.html
- Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txt
- UI/AppKit/Interface/Event.mm
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txt
- Tests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.html
- Tests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.html
- Tests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txt
- Libraries/LibWeb/Painting/Scrollbar.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txt
- Libraries/LibWeb/Compositor/Types.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txt
- Tests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
- Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
- Services/Compositor/CompositorControlServer.ipc
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
- Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txt
- Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
- Libraries/LibWeb/CSS/ComputedValues.h
- Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
- Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
- Libraries/LibWeb/HTML/Window.h
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
- Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
- Tests/LibWeb/Text/expected/css/scroll-snap-type-animation.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.html
- UI/AppKit/Interface/LadybirdWebView.mm
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txt
- Libraries/LibWeb/CSS/Parser/Parser.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.html
- Tests/LibWeb/Text/input/scroll-snap-after-flick.html
- Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
- Libraries/LibWeb/Compositor/CompositorHost.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html
- Libraries/LibWeb/WebDriver/Actions.cpp
- Services/Compositor/ConnectionFromClient.h
- Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.html
- Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
- Libraries/LibWeb/Internals/Internals.h
- Libraries/LibWeb/Page/InputEvent.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.html
- Libraries/LibWeb/Internals/Internals.idl
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txt
- Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
- Libraries/LibWeb/Page/AutoScrollHandler.cpp
- Services/Compositor/ConnectionFromWebContent.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txt
- Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
- Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
- Libraries/LibWeb/CSS/UpdateStyle.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txt
- Services/Compositor/ConnectionFromWebContent.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.html
- Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
- Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txt
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
- Tests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
- Libraries/LibWeb/Compositor/AsyncScrollTree.h
- Services/Compositor/ConnectionFromClient.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.html
- Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
- Libraries/LibWebView/ViewImplementation.cpp
- Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txt
- Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.html
- Services/WebContent/ConnectionFromClient.cpp
- Libraries/LibWeb/Page/InputEvent.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.js
- Libraries/LibWebView/CompositorHostBase.cpp
- Libraries/LibWeb/Compositor/Types.h
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
- Libraries/LibWeb/Painting/Paintable.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html
- Libraries/LibWeb/Page/EventHandler.h
- Tests/LibWeb/TestSmoothScrollAnimation.cpp
- Tests/LibWeb/Text/input/include.js
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
- Libraries/LibWeb/Compositor/AsyncScrollingState.h
- Libraries/LibWebView/Application.h
- Libraries/LibWeb/Compositor/CompositorHost.cpp
- Libraries/LibWebView/WebContentClient.h
- Services/Compositor/CompositorState.cpp
- Services/Compositor/CompositorState.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.html
- Libraries/LibWebView/CompositorConnection.cpp
- Libraries/LibWeb/HTML/LocalNavigable.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
- Libraries/LibWeb/Layout/LayoutRustBridge.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.html
- Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.html
- Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.html
- Libraries/LibWeb/Layout/Node.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.html
- Services/Compositor/ContextState.h
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.html
- Services/Compositor/CompositorWebContentServer.ipc
- Libraries/LibWeb/CSS/Enums.json
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.html
- Libraries/LibWebView/WebContentClient.cpp
- UI/Qt/WebContentView.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.html
- Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
- Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
- Libraries/LibWeb/Painting/ScrollSnap.h
- Libraries/LibWeb/DOM/Element.cpp
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
- Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
- Libraries/LibWeb/Page/Page.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html
- Libraries/LibWebView/Application.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
- Libraries/LibWebView/CompositorHostBase.h
- Libraries/LibWeb/CSS/Properties.json
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
- Libraries/LibWeb/CSS/StyleInvalidation.h
- Libraries/LibWeb/CSS/ComputedProperties.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.html
- Libraries/LibWeb/HTML/Window.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.html
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
- Libraries/LibWeb/DOM/Document.h
- Services/Compositor/ContextState.cpp
- Libraries/LibWeb/CSS/ComputedValues.cpp
- Libraries/LibWeb/Page/EventHandler.cpp
- Libraries/LibWeb/Internals/Internals.cpp
- Libraries/LibWeb/Page/AutoScrollHandler.h
- UI/Android/src/main/cpp/WebViewImplementationNative.cpp
- Libraries/LibWeb/DOM/Document.cpp
- Libraries/LibWeb/HTML/LocalNavigable.cpp
- Libraries/LibWeb/Painting/DisplayListCommand.h
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Libraries/LibWeb/HTML/LocalNavigable.cpp (1)
4533-4561: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winIdentify main-thread smooth scrolls by
stable_node_idbefore mutating while ticking.
set_scroll_offset_forcan enterdocument->update_layout(...), thenre_snap_scroll_containers_after_layout_change()andperform_a_scroll_of_a_scrolling_box(), which aborts/resolves smooth scrolls under the samestable_node_id. Theindexinprocess_main_thread_smooth_scrolls()can then removetake(index)the wrong entry becausem_main_thread_smooth_scrollschanged. Use one entry perstable_node_idbefore updating the queue.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Libraries/LibWeb/HTML/LocalNavigable.cpp` around lines 4533 - 4561, Update process_main_thread_smooth_scrolls to identify each smooth scroll by stable_node_id before calling set_scroll_offset_for, since that call may mutate m_main_thread_smooth_scrolls and invalidate index-based removal. After ticking, locate the same stable_node_id in the current queue and remove or retain that specific entry, preserving promise handling and completion behavior without relying on the original index.
🧹 Nitpick comments (1)
Libraries/LibWeb/Painting/ScrollSnap.cpp (1)
458-458: 🚀 Performance & Scalability | 🔵 TrivialConsider caching snap-area candidates for the scroll hot path.
collect_snap_position_candidateswalks the complete paintable subtree of the container and rebuilds all candidates on every snap evaluation. Wheel, keyboard, and gesture scrolling call into snap selection repeatedly, so the cost scales with the number of paintables under the container, not with the number of snap areas.
select_resnap_destinationcan pay this cost twice: lines 771 and 782 calladjust_scroll_destination_for_snapping, which collects the candidates again.If profiling on large documents shows this traversal in scroll frames, cache the collected candidates per container and invalidate them on layout or on changes to
scroll-snap-align,scroll-margin, and container geometry. Reusing the already collectedcollectionfor the fallback paths inselect_resnap_destinationwould also remove the second traversal.Also applies to: 770-782
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Libraries/LibWeb/Painting/ScrollSnap.cpp` at line 458, Optimize collect_snap_position_candidates and select_resnap_destination by caching snap-area candidates per scroll container and reusing the existing collection across fallback calls. Invalidate the cache when layout, scroll-snap-align, scroll-margin, or container geometry changes, while preserving current candidate selection behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@Libraries/LibWeb/HTML/LocalNavigable.cpp`:
- Around line 4533-4561: Update process_main_thread_smooth_scrolls to identify
each smooth scroll by stable_node_id before calling set_scroll_offset_for, since
that call may mutate m_main_thread_smooth_scrolls and invalidate index-based
removal. After ticking, locate the same stable_node_id in the current queue and
remove or retain that specific entry, preserving promise handling and completion
behavior without relying on the original index.
---
Nitpick comments:
In `@Libraries/LibWeb/Painting/ScrollSnap.cpp`:
- Line 458: Optimize collect_snap_position_candidates and
select_resnap_destination by caching snap-area candidates per scroll container
and reusing the existing collection across fallback calls. Invalidate the cache
when layout, scroll-snap-align, scroll-margin, or container geometry changes,
while preserving current candidate selection behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 7f9395da-9534-4ff3-814a-d7188f4c9353
📒 Files selected for processing (283)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/css/scroll-snap-type-animation.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txtTests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/css/scroll-snap-type-animation.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.htmlTests/LibWeb/Text/input/scroll-snap-after-paging-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.htmlTests/LibWeb/Text/input/scroll-snap-align-writing-mode.htmlTests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.htmlTests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.htmlTests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.htmlTests/LibWeb/Text/input/scroll-snap-stop-wheel-step.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.htmlTests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.htmlTests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.jsTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/support/common.cssTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.htmlTests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.htmlUI/Android/src/main/cpp/WebViewImplementationNative.cppUI/AppKit/Interface/Event.mmUI/AppKit/Interface/LadybirdWebView.mmUI/Qt/WebContentView.cpp
🚧 Files skipped from review as they are similar to previous changes (263)
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
- Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txt
- Libraries/LibWeb/CSS/StyleInvalidation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txt
- Libraries/LibWeb/CSS/Keywords.json
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txt
- Libraries/LibWeb/CMakeLists.txt
- Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txt
- Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txt
- Tests/LibWeb/Text/expected/all-window-properties.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
- Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
- Tests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txt
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txt
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
- Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
- Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txt
- Services/Compositor/ConnectionFromClient.cpp
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
- Services/Compositor/ConnectionFromClient.h
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
- Libraries/LibWeb/Layout/LayoutRustBridge.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.html
- Tests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
- Services/Compositor/CompositorControlServer.ipc
- Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html
- Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html
- Tests/LibWeb/TestSmoothScrollAnimation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.html
- Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
- Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
- Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
- Tests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.html
- Libraries/LibWeb/Compositor/Types.cpp
- Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txt
- Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
- Libraries/LibWebView/WebContentClient.h
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
- Libraries/LibWeb/Page/AutoScrollHandler.h
- Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
- Libraries/LibWeb/CSS/Parser/Parser.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.html
- Libraries/LibWeb/Painting/Paintable.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
- Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txt
- Libraries/LibWeb/Page/EventHandler.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
- Libraries/LibWeb/DOM/Element.h
- Tests/LibWeb/Text/expected/css/scroll-snap-type-animation.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.html
- UI/Android/src/main/cpp/WebViewImplementationNative.cpp
- Tests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
- Libraries/LibWebView/CompositorHostBase.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txt
- Libraries/LibWebView/ViewImplementation.cpp
- Libraries/LibWeb/Layout/ScrollableOverflow.cpp
- Libraries/LibWebView/CompositorConnection.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html
- Services/Compositor/ConnectionFromWebContent.cpp
- Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.html
- Libraries/LibWebView/WebContentClient.cpp
- Services/Compositor/ConnectionFromWebContent.h
- Libraries/LibWeb/Page/Page.cpp
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
- Tests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txt
- Libraries/LibWeb/Forward.h
- Libraries/LibWeb/DOM/Document.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txt
- Libraries/LibWeb/HTML/Window.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
- Libraries/LibWeb/Compositor/CompositorHost.cpp
- Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
- Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
- Libraries/LibWeb/Page/AutoScrollHandler.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.html
- Libraries/LibWebView/Application.h
- Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
- Services/WebContent/ConnectionFromClient.cpp
- Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
- Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.html
- Services/Compositor/ContextState.h
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
- Libraries/LibWebView/CompositorHostBase.cpp
- Libraries/LibWeb/Compositor/Types.h
- Libraries/LibWeb/Painting/DisplayListCommand.h
- Libraries/LibWeb/WebDriver/Actions.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html
- Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.html
- Libraries/LibWeb/CSS/StyleInvalidation.h
- Libraries/LibWeb/CSS/ComputedValues.cpp
- Libraries/LibWeb/Page/Page.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
- Libraries/LibWeb/CSS/ComputedValues.h
- Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txt
- Libraries/LibWeb/Painting/Scrollbar.cpp
- Tests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
- Libraries/LibWeb/Layout/Node.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.js
- Libraries/LibWeb/Painting/Paintable.cpp
- Libraries/LibWeb/CSS/Properties.json
- Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
- Libraries/LibWeb/Page/InputEvent.h
- Tests/LibWeb/Text/input/scroll-snap-after-flick.html
- Services/Compositor/CompositorState.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
- Libraries/LibWeb/Painting/ScrollSnap.h
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
- Libraries/LibWeb/HTML/Window.h
- Tests/LibWeb/Text/input/include.js
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
- Tests/LibWeb/Text/expected/css/getComputedStyle-print-all.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.html
- Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
- Libraries/LibWeb/Internals/Internals.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txt
- Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
- Libraries/LibWeb/Painting/AccumulatedVisualContext.h
- Services/Compositor/ContextState.cpp
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txt
- Libraries/LibWeb/Compositor/AsyncScrollingState.h
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txt
- Tests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.html
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txt
- Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
- Libraries/LibWeb/Internals/Internals.idl
- Tests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txt
- Libraries/LibWeb/Page/InputEvent.cpp
- Libraries/LibWeb/Compositor/AsyncScrollTree.h
- Tests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
- Libraries/LibWeb/Compositor/CompositorHost.h
- Libraries/LibWeb/HTML/LocalNavigable.h
- UI/AppKit/Interface/LadybirdWebView.mm
- Libraries/LibWeb/DOM/Element.cpp
- Libraries/LibWeb/Page/EventHandler.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
- UI/Qt/WebContentView.cpp
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
- Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
- UI/AppKit/Interface/Event.mm
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
- Libraries/LibWeb/CSS/ComputedProperties.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.html
- Libraries/LibWeb/CSS/UpdateStyle.cpp
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
- Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
- Services/Compositor/CompositorWebContentServer.ipc
- Libraries/LibWeb/CSS/Enums.json
- Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
- Libraries/LibWeb/DOM/Document.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
- Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
- Libraries/LibWebView/Application.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.html
- Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
- Libraries/LibWebView/CompositorConnection.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
- Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
- Services/Compositor/CompositorState.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.html
- Libraries/LibWeb/Internals/Internals.cpp
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
Libraries/LibWeb/Painting/ScrollSnap.cpp (1)
815-816: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low valueAdd a null check for
computed_values_for_snap_containerhere.
computed_values_for_snap_containerreturnsnullptrwhen the container is the viewport paintable and the document has no document element (Lines 55-59). Line 816 dereferences the result without a check. The two other call sites, Lines 392-394 and Lines 426-428, both check first.The dereference is safe today:
snap_axes_of_scroll_containerat Line 764 returns an emptySnapAxesin that case, and the function returns at Line 766. The safety therefore depends on a non-local early return. A later change to that early return would turn this into a crash.Read the writing mode from the value already validated earlier, or add the check.
🛡️ Proposed defensive fix
if (x_offset.has_value() && y_offset.has_value() && !chosen_offsets_are_mutually_visible(candidates, *x_offset, *y_offset)) { auto const* computed_values = computed_values_for_snap_container(snap_container); - bool block_axis_is_y = computed_values->writing_mode() == CSS::WritingMode::HorizontalTb; + VERIFY(computed_values); + bool block_axis_is_y = computed_values->writing_mode() == CSS::WritingMode::HorizontalTb;🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Libraries/LibWeb/Painting/ScrollSnap.cpp` around lines 815 - 816, Update the code around snap_axes_of_scroll_container and block_axis_is_y to avoid dereferencing a nullable computed_values_for_snap_container result: reuse the writing-mode value already validated earlier, or explicitly check for nullptr before accessing writing_mode(), while preserving the existing early-return behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html`:
- Around line 33-34: Update both scrollOffsetStopsChanging callbacks in the
pinch-zoom test to observe visualViewport.offsetTop instead of window.scrollY,
or await the visual viewport’s scrollend event using the established pattern
from the referenced test. Ensure each wait completes only after visual viewport
panning settles before the subsequent checks.
---
Nitpick comments:
In `@Libraries/LibWeb/Painting/ScrollSnap.cpp`:
- Around line 815-816: Update the code around snap_axes_of_scroll_container and
block_axis_is_y to avoid dereferencing a nullable
computed_values_for_snap_container result: reuse the writing-mode value already
validated earlier, or explicitly check for nullptr before accessing
writing_mode(), while preserving the existing early-return behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 2883d35e-2e21-4b42-8475-5829c4eac4e1
📒 Files selected for processing (283)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/css/scroll-snap-type-animation.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txtTests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/css/scroll-snap-type-animation.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.htmlTests/LibWeb/Text/input/scroll-snap-after-paging-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.htmlTests/LibWeb/Text/input/scroll-snap-align-writing-mode.htmlTests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.htmlTests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.htmlTests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.htmlTests/LibWeb/Text/input/scroll-snap-stop-wheel-step.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.htmlTests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.htmlTests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.jsTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/support/common.cssTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.htmlTests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.htmlUI/Android/src/main/cpp/WebViewImplementationNative.cppUI/AppKit/Interface/Event.mmUI/AppKit/Interface/LadybirdWebView.mmUI/Qt/WebContentView.cpp
🚧 Files skipped from review as they are similar to previous changes (264)
- Libraries/LibWeb/CMakeLists.txt
- Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
- Tests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.html
- Services/WebContent/ConnectionFromClient.cpp
- Libraries/LibWeb/Painting/AccumulatedVisualContext.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txt
- Libraries/LibWeb/CSS/Keywords.json
- Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txt
- Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html
- Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
- Libraries/LibWeb/WebDriver/Actions.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txt
- Libraries/LibWeb/Forward.h
- Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
- Tests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txt
- Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txt
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txt
- Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
- Tests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txt
- Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txt
- UI/Android/src/main/cpp/WebViewImplementationNative.cpp
- Tests/LibWeb/Text/expected/all-window-properties.txt
- Services/Compositor/ConnectionFromClient.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txt
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.html
- Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txt
- Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
- Libraries/LibWebView/ViewImplementation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.html
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
- Tests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.html
- Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txt
- Libraries/LibWeb/Compositor/AsyncScrollTree.h
- Tests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
- Libraries/LibWeb/CSS/ComputedValues.cpp
- Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
- Services/Compositor/CompositorControlServer.ipc
- Tests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txt
- Libraries/LibWeb/Page/EventHandler.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.html
- Tests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.html
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
- Tests/LibWeb/TestSmoothScrollAnimation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txt
- Services/Compositor/CompositorWebContentServer.ipc
- Services/Compositor/ConnectionFromWebContent.h
- Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txt
- Tests/LibWeb/Text/expected/css/scroll-snap-type-animation.txt
- Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
- Libraries/LibWeb/Compositor/CompositorHost.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.html
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
- Libraries/LibWeb/Page/Page.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txt
- Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
- Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
- Libraries/LibWebView/CompositorHostBase.h
- UI/AppKit/Interface/LadybirdWebView.mm
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html
- Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txt
- UI/AppKit/Interface/Event.mm
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
- Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txt
- Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
- Libraries/LibWebView/WebContentClient.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
- Libraries/LibWeb/Page/Page.cpp
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.html
- Libraries/LibWeb/Painting/Scrollbar.cpp
- UI/Qt/WebContentView.cpp
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
- Tests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.html
- Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
- Services/Compositor/ConnectionFromClient.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
- Libraries/LibWeb/Compositor/CompositorHost.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
- Tests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txt
- Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.html
- Libraries/LibWeb/DOM/Document.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txt
- Libraries/LibWeb/Page/AutoScrollHandler.cpp
- Libraries/LibWeb/Layout/ScrollableOverflow.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txt
- Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
- Services/Compositor/CompositorState.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
- Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
- Libraries/LibWeb/HTML/LocalNavigable.h
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
- Services/Compositor/ConnectionFromWebContent.cpp
- Libraries/LibWeb/Page/InputEvent.h
- Libraries/LibWeb/CSS/StyleInvalidation.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.html
- Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
- Libraries/LibWebView/CompositorConnection.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
- Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txt
- Libraries/LibWebView/CompositorConnection.h
- Libraries/LibWebView/Application.h
- Libraries/LibWeb/DOM/Element.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.html
- Libraries/LibWeb/Page/EventHandler.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txt
- Tests/LibWeb/Text/expected/css/getComputedStyle-print-all.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txt
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
- Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
- Libraries/LibWebView/WebContentClient.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.html
- Libraries/LibWeb/Page/AutoScrollHandler.h
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
- Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
- Libraries/LibWeb/Painting/ScrollSnap.h
- Libraries/LibWeb/Internals/Internals.idl
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.js
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.html
- Tests/LibWeb/Text/input/scroll-snap-after-flick.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html
- Libraries/LibWeb/Compositor/AsyncScrollingState.h
- Services/Compositor/ContextState.h
- Libraries/LibWeb/Page/InputEvent.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.html
- Libraries/LibWeb/CSS/StyleInvalidation.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.html
- Libraries/LibWeb/Internals/Internals.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
- Services/Compositor/ContextState.cpp
- Libraries/LibWeb/CSS/ComputedValues.h
- Libraries/LibWeb/Compositor/Types.h
- Libraries/LibWeb/CSS/UpdateStyle.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.html
- Libraries/LibWeb/HTML/Window.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.html
- Libraries/LibWeb/CSS/Parser/Parser.h
- Services/Compositor/CompositorState.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txt
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.html
- Libraries/LibWeb/Painting/DisplayListCommand.h
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html
- Libraries/LibWeb/Internals/Internals.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.html
- Tests/LibWeb/Text/input/include.js
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
- Libraries/LibWeb/Painting/Paintable.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.html
- Libraries/LibWeb/Layout/LayoutRustBridge.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.html
- Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
- Libraries/LibWeb/DOM/Element.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.html
- Libraries/LibWeb/HTML/Window.h
- Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.html
- Libraries/LibWebView/Application.cpp
- Libraries/LibWeb/CSS/ComputedProperties.cpp
- Libraries/LibWebView/CompositorHostBase.cpp
- Libraries/LibWeb/CSS/Enums.json
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
- Libraries/LibWeb/Layout/Node.cpp
- Libraries/LibWeb/CSS/Properties.json
- Libraries/LibWeb/DOM/Document.cpp
- Libraries/LibWeb/Painting/Paintable.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txt
- Libraries/LibWeb/HTML/LocalNavigable.cpp
- Libraries/LibWeb/Compositor/Types.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txt
There was a problem hiding this comment.
🧹 Nitpick comments (1)
Tests/Compositor/TestContextState.cpp (1)
144-148: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAssert the scroll target and offset.
Line 146 only checks that an update exists. A reversed drag direction, an incorrect scroll-node ID, or an incorrect scroll amount still passes. Assert the update for
TEST_SCROLL_NODE_INDEXhas the expected{ 0, 400 }offset for this 100-pixel thumb movement.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Tests/Compositor/TestContextState.cpp` around lines 144 - 148, Strengthen the assertions in the mouse-move test around TEST_SCROLL_NODE_INDEX by verifying the pending update targets that scroll node and has the expected scroll offset of { 0, 400 } for the 100-pixel thumb movement, while retaining the existing gesture-state checks.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@Tests/Compositor/TestContextState.cpp`:
- Around line 144-148: Strengthen the assertions in the mouse-move test around
TEST_SCROLL_NODE_INDEX by verifying the pending update targets that scroll node
and has the expected scroll offset of { 0, 400 } for the 100-pixel thumb
movement, while retaining the existing gesture-state checks.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 80e90226-a3a6-4253-9643-8fd38eb584d5
📒 Files selected for processing (283)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/css/scroll-snap-type-animation.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txtTests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/css/scroll-snap-type-animation.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.htmlTests/LibWeb/Text/input/scroll-snap-after-paging-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.htmlTests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.htmlTests/LibWeb/Text/input/scroll-snap-align-writing-mode.htmlTests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.htmlTests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.htmlTests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.htmlTests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.htmlTests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.htmlTests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.htmlTests/LibWeb/Text/input/scroll-snap-stop-wheel-step.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.htmlTests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.htmlTests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.htmlTests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.jsTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/support/common.cssTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.htmlTests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.htmlTests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.htmlUI/Android/src/main/cpp/WebViewImplementationNative.cppUI/AppKit/Interface/Event.mmUI/AppKit/Interface/LadybirdWebView.mmUI/Qt/WebContentView.cpp
🚧 Files skipped from review as they are similar to previous changes (266)
- Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
- Libraries/LibWeb/CSS/Keywords.json
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txt
- Libraries/LibWeb/Painting/AccumulatedVisualContext.h
- Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txt
- Libraries/LibWeb/DOM/Element.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txt
- Services/WebContent/ConnectionFromClient.cpp
- Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txt
- Tests/LibWeb/Text/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
- Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
- Libraries/LibWeb/Forward.h
- Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-steps-with-held-input.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txt
- Libraries/LibWeb/Page/Page.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
- Tests/LibWeb/Text/expected/scroll-snap-after-precise-wheel-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txt
- Tests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txt
- Services/Compositor/CompositorControlServer.ipc
- Tests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txt
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txt
- Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
- Tests/LibWeb/Text/expected/css/scroll-snap-type-animation.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txt
- Libraries/LibWebView/WebContentClient.cpp
- Services/Compositor/ConnectionFromClient.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.html
- Libraries/LibWeb/Compositor/Types.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.html
- Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
- Tests/LibWeb/Text/input/scroll-snap-directional-wheel-scroll.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.html
- Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txt
- Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
- UI/AppKit/Interface/LadybirdWebView.mm
- Tests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txt
- Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.html
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.html
- Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txt
- Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
- Libraries/LibWeb/CMakeLists.txt
- Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
- Tests/LibWeb/Text/expected/all-window-properties.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txt
- Libraries/LibWebView/WebContentClient.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.html
- Tests/LibWeb/Text/input/scroll-snap-at-reported-gesture-end.html
- Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
- Tests/LibWeb/Text/expected/css/getComputedStyle-print-all.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
- Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
- Tests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txt
- Tests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
- Libraries/LibWeb/Compositor/AsyncScrollTree.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txt
- Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
- Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
- Tests/LibWeb/Text/input/scroll-snap-consecutive-wheel-steps.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
- Libraries/LibWeb/Compositor/CompositorHost.cpp
- Tests/LibWeb/Text/input/include.js
- UI/Android/src/main/cpp/WebViewImplementationNative.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-type.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.html
- Libraries/LibWeb/HTML/Window.h
- Tests/LibWeb/Text/input/scroll-snap-after-flick.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.html
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
- Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
- Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
- Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
- Services/Compositor/ConnectionFromClient.cpp
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
- Libraries/LibWeb/Internals/Internals.idl
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/mouse-wheel.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.html
- Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
- Libraries/LibWeb/Layout/Node.cpp
- Libraries/LibWeb/Page/Page.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
- Tests/LibWeb/TestSmoothScrollAnimation.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.html
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-intended-direction.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txt
- Services/Compositor/ConnectionFromWebContent.h
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/no-snap-position.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txt
- Libraries/LibWeb/Page/EventHandler.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-margin.html
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
- Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
- Libraries/LibWeb/CSS/Parser/Parser.h
- Libraries/LibWeb/Compositor/Types.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.html
- Services/Compositor/ConnectionFromWebContent.cpp
- UI/AppKit/Interface/Event.mm
- Services/Compositor/CompositorWebContentServer.ipc
- Libraries/LibWeb/Layout/ScrollableOverflow.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.html
- Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
- UI/Qt/WebContentView.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.html
- Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
- Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.html
- Libraries/LibWeb/WebDriver/Actions.cpp
- Libraries/LibWeb/CSS/StyleInvalidation.h
- Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
- Libraries/LibWebView/ViewImplementation.cpp
- Libraries/LibWeb/Painting/Scrollbar.cpp
- Libraries/LibWeb/CSS/UpdateStyle.cpp
- Libraries/LibWeb/Compositor/AsyncScrollingState.h
- Libraries/LibWeb/Page/InputEvent.h
- Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
- Libraries/LibWeb/Page/AutoScrollHandler.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.html
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
- Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.html
- Libraries/LibWebView/CompositorConnection.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txt
- Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
- Libraries/LibWeb/Page/AutoScrollHandler.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/inheritance.html
- Libraries/LibWeb/CSS/ComputedValues.cpp
- Libraries/LibWeb/CSS/Enums.json
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txt
- Libraries/LibWeb/CSS/ComputedValues.h
- Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txt
- Libraries/LibWebView/CompositorHostBase.h
- Libraries/LibWebView/Application.h
- Libraries/LibWeb/CSS/StyleInvalidation.cpp
- Libraries/LibWeb/Compositor/CompositorHost.h
- Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
- Libraries/LibWeb/Page/InputEvent.cpp
- Services/Compositor/CompositorState.h
- Libraries/LibWeb/DOM/Document.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
- Libraries/LibWeb/Internals/Internals.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html
- Services/Compositor/ContextState.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
- Libraries/LibWeb/CSS/Properties.json
- Libraries/LibWeb/DOM/Element.cpp
- Libraries/LibWebView/CompositorConnection.h
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overflowing-snap-areas.html
- Services/Compositor/ContextState.cpp
- Services/Compositor/CompositorState.cpp
- Libraries/LibWeb/Painting/DisplayListCommand.h
- Libraries/LibWebView/Application.cpp
- Libraries/LibWeb/Layout/LayoutRustBridge.cpp
- Libraries/LibWeb/HTML/LocalNavigable.h
- Libraries/LibWeb/Painting/Paintable.h
- Libraries/LibWeb/Painting/Paintable.cpp
- Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/resources/common.js
- Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
- Libraries/LibWeb/CSS/ComputedProperties.cpp
- Libraries/LibWeb/HTML/Window.cpp
- Libraries/LibWeb/Internals/Internals.cpp
- Libraries/LibWeb/DOM/Document.cpp
- Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
- Libraries/LibWeb/Page/EventHandler.cpp
- Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.html
- Libraries/LibWeb/Painting/ScrollSnap.h
- Libraries/LibWeb/HTML/LocalNavigable.cpp
- Libraries/LibWebView/CompositorHostBase.cpp
- Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
dcf6dca to
a59c475
Compare
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
a59c475 to
55472c0
Compare
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
55472c0 to
a1820f8
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Libraries/LibWeb/Page/EventHandler.cpp`:
- Around line 1420-1432: Update perform_snapped_scroll_step_for_key_input to
obtain its initial target through scroll_target_for_key_input() instead of
falling back directly to document->paintable(), preserving the
m_last_mousedown_target behavior and ensuring snap selection uses the same
target as normal key scrolling.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 02ef415e-f5e2-4f8b-b5ec-c756a5626a26
📒 Files selected for processing (188)
Libraries/LibWeb/CMakeLists.txtLibraries/LibWeb/CSS/ComputedProperties.cppLibraries/LibWeb/CSS/ComputedValues.cppLibraries/LibWeb/CSS/ComputedValues.hLibraries/LibWeb/CSS/Enums.jsonLibraries/LibWeb/CSS/Keywords.jsonLibraries/LibWeb/CSS/Parser/Parser.hLibraries/LibWeb/CSS/Parser/PropertyParsing.cppLibraries/LibWeb/CSS/Properties.jsonLibraries/LibWeb/CSS/StyleInvalidation.cppLibraries/LibWeb/CSS/StyleInvalidation.hLibraries/LibWeb/CSS/UpdateStyle.cppLibraries/LibWeb/Compositor/AsyncScrollTree.cppLibraries/LibWeb/Compositor/AsyncScrollTree.hLibraries/LibWeb/Compositor/AsyncScrollingState.cppLibraries/LibWeb/Compositor/AsyncScrollingState.hLibraries/LibWeb/Compositor/CompositorHost.cppLibraries/LibWeb/Compositor/CompositorHost.hLibraries/LibWeb/Compositor/SmoothScrollAnimation.cppLibraries/LibWeb/Compositor/SmoothScrollAnimation.hLibraries/LibWeb/Compositor/Types.cppLibraries/LibWeb/Compositor/Types.hLibraries/LibWeb/DOM/Document.cppLibraries/LibWeb/DOM/Document.hLibraries/LibWeb/DOM/Element.cppLibraries/LibWeb/DOM/Element.hLibraries/LibWeb/Forward.hLibraries/LibWeb/HTML/EventLoop/EventLoop.cppLibraries/LibWeb/HTML/LocalNavigable.cppLibraries/LibWeb/HTML/LocalNavigable.hLibraries/LibWeb/HTML/Window.cppLibraries/LibWeb/HTML/Window.hLibraries/LibWeb/Internals/Internals.cppLibraries/LibWeb/Internals/Internals.hLibraries/LibWeb/Internals/Internals.idlLibraries/LibWeb/Layout/LayoutRustBridge.cppLibraries/LibWeb/Layout/Node.cppLibraries/LibWeb/Layout/ScrollableOverflow.cppLibraries/LibWeb/Page/AutoScrollHandler.cppLibraries/LibWeb/Page/AutoScrollHandler.hLibraries/LibWeb/Page/EventHandler.cppLibraries/LibWeb/Page/EventHandler.hLibraries/LibWeb/Page/InputEvent.cppLibraries/LibWeb/Page/InputEvent.hLibraries/LibWeb/Page/MiddleButtonScrollHandler.cppLibraries/LibWeb/Page/MiddleButtonScrollHandler.hLibraries/LibWeb/Page/Page.cppLibraries/LibWeb/Page/Page.hLibraries/LibWeb/Painting/AccumulatedVisualContext.cppLibraries/LibWeb/Painting/AccumulatedVisualContext.hLibraries/LibWeb/Painting/DisplayListCommand.hLibraries/LibWeb/Painting/Paintable.cppLibraries/LibWeb/Painting/Paintable.hLibraries/LibWeb/Painting/ScrollSnap.cppLibraries/LibWeb/Painting/ScrollSnap.hLibraries/LibWeb/Painting/Scrollbar.cppLibraries/LibWeb/WebDriver/Actions.cppLibraries/LibWebView/Application.cppLibraries/LibWebView/Application.hLibraries/LibWebView/CompositorConnection.cppLibraries/LibWebView/CompositorConnection.hLibraries/LibWebView/CompositorHostBase.cppLibraries/LibWebView/CompositorHostBase.hLibraries/LibWebView/ViewImplementation.cppLibraries/LibWebView/WebContentClient.cppLibraries/LibWebView/WebContentClient.hServices/Compositor/CompositorControlServer.ipcServices/Compositor/CompositorState.cppServices/Compositor/CompositorState.hServices/Compositor/CompositorWebContentServer.ipcServices/Compositor/ConnectionFromClient.cppServices/Compositor/ConnectionFromClient.hServices/Compositor/ConnectionFromWebContent.cppServices/Compositor/ConnectionFromWebContent.hServices/Compositor/ContextState.cppServices/Compositor/ContextState.hServices/WebContent/ConnectionFromClient.cppTests/Compositor/TestContextState.cppTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.htmlTests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.htmlTests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.htmlTests/LibWeb/TestSmoothScrollAnimation.cppTests/LibWeb/Text/expected/all-window-properties.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txtTests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txtTests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txtTests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txtTests/LibWeb/Text/expected/css/getComputedStyle-print-all.txtTests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txtTests/LibWeb/Text/expected/scroll-snap-after-flick.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txtTests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txtTests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txtTests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txtTests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txtTests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txtTests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txtTests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txtTests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txtTests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txtTests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txtTests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txtTests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txtTests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txtTests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txtTests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txtTests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txtTests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txtTests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.htmlTests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.htmlTests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.htmlTests/LibWeb/Text/input/include.jsTests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.htmlTests/LibWeb/Text/input/scroll-snap-after-flick.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.htmlTests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.htmlTests/LibWeb/Text/input/scroll-snap-after-homing-keys.htmlTests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
🚧 Files skipped from review as they are similar to previous changes (176)
- Tests/LibWeb/Text/expected/css/getComputedStyle-print-all.txt
- Tests/LibWeb/Text/expected/scroll-snap-at-reported-gesture-end.txt
- Libraries/LibWeb/HTML/Window.h
- Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/ignore-snap-points-orthogonal-to-snap-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-type.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-in-one-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
- Libraries/LibWeb/CSS/Keywords.json
- Libraries/LibWebView/Application.cpp
- Tests/LibWeb/Text/expected/scroll-snap-after-repeated-keyboard-scroll.txt
- Libraries/LibWeb/CMakeLists.txt
- Services/Compositor/ConnectionFromClient.h
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
- Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
- Tests/LibWeb/Text/expected/scroll-snap-after-pan-adopted-following-key-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-chained-to-snap-container.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-computed.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/move-current-target.txt
- Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-both.txt
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
- Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-001.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-on-root-element.txt
- Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.txt
- Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/remove-current-target.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.txt
- Services/Compositor/CompositorControlServer.ipc
- Libraries/LibWeb/DOM/Element.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-x-axis.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-nested.txt
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
- Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.txt
- Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
- Tests/LibWeb/Text/expected/scroll-snap-after-paging-keys.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.txt
- Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
- Tests/LibWeb/TestSmoothScrollAnimation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both.txt
- Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
- Libraries/LibWeb/Compositor/CompositorHost.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-snap-alignment-change.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-empty-sized-element.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-at-user-scroll-end.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.txt
- Services/Compositor/CompositorWebContentServer.ipc
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.txt
- Tests/LibWeb/Text/expected/scroll-snap-directional-wheel-scroll.txt
- Libraries/LibWeb/Compositor/Types.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-valid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-to-focused.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.txt
- Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-2.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-valid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.txt
- Libraries/LibWeb/CSS/StyleInvalidation.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overscroll-snap.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/inheritance.txt
- Libraries/LibWeb/CSS/StyleInvalidation.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.txt
- Tests/LibWeb/Text/input/include.js
- Libraries/LibWeb/Layout/LayoutRustBridge.cpp
- Libraries/LibWeb/Painting/AccumulatedVisualContext.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.txt
- Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/resnap-on-oveflow-hidden-container.txt
- Libraries/LibWeb/DOM/Element.cpp
- Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
- Libraries/LibWeb/Compositor/CompositorHost.h
- Services/Compositor/CompositorState.cpp
- Libraries/LibWeb/HTML/Window.cpp
- Tests/LibWeb/Text/expected/scroll-snap-consecutive-wheel-steps.txt
- Libraries/LibWeb/CSS/ComputedProperties.cpp
- Libraries/LibWeb/Layout/Node.cpp
- Libraries/LibWeb/Page/AutoScrollHandler.cpp
- Libraries/LibWebView/ViewImplementation.cpp
- Libraries/LibWeb/Compositor/AsyncScrollTree.h
- Libraries/LibWeb/Forward.h
- Libraries/LibWebView/WebContentClient.cpp
- Libraries/LibWeb/CSS/ComputedValues.cpp
- Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
- Libraries/LibWebView/CompositorHostBase.h
- Libraries/LibWeb/HTML/LocalNavigable.h
- Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
- Libraries/LibWeb/CSS/Enums.json
- Tests/LibWeb/Text/input/scroll-snap-after-flick.html
- Libraries/LibWebView/CompositorConnection.h
- Libraries/LibWebView/CompositorConnection.cpp
- Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
- Libraries/LibWeb/Internals/Internals.h
- Tests/LibWeb/Text/expected/scroll-snap-wheel-step-during-programmatic-scroll.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/no-snap-position.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding-and-margin.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/resnap-on-layout-is-immediate.txt
- Libraries/LibWeb/Internals/Internals.idl
- Services/Compositor/CompositorState.h
- Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
- Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
- Tests/LibWeb/Text/expected/all-window-properties.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-invalid.txt
- Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
- Libraries/LibWeb/Painting/Paintable.cpp
- Libraries/LibWeb/Painting/Scrollbar.cpp
- Libraries/LibWeb/Compositor/AsyncScrollingState.h
- Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.txt
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
- Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
- Libraries/LibWeb/CSS/ComputedValues.h
- Libraries/LibWeb/Internals/Internals.cpp
- Libraries/LibWeb/CSS/Properties.json
- Services/Compositor/ContextState.h
- Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
- Libraries/LibWeb/Page/EventHandler.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.txt
- Libraries/LibWeb/Page/InputEvent.cpp
- Libraries/LibWeb/Page/InputEvent.h
- Libraries/LibWeb/Page/AutoScrollHandler.h
- Libraries/LibWeb/CSS/UpdateStyle.cpp
- Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
- Libraries/LibWebView/CompositorHostBase.cpp
- Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
- Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
- Libraries/LibWeb/HTML/LocalNavigable.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.txt
- Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-intended-direction.txt
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-y-axis.txt
- Tests/LibWeb/Text/expected/css/CSSStyleProperties-all-supported-properties-and-default-values.txt
- Services/Compositor/ConnectionFromClient.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.txt
- Libraries/LibWeb/CSS/Parser/Parser.h
- Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.txt
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-002.txt
- Libraries/LibWeb/Compositor/Types.h
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.txt
- Libraries/LibWeb/Page/Page.h
- Services/Compositor/ConnectionFromWebContent.h
- Libraries/LibWebView/WebContentClient.h
- Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
- Libraries/LibWeb/Painting/DisplayListCommand.h
- Libraries/LibWeb/Layout/ScrollableOverflow.cpp
- Libraries/LibWeb/DOM/Document.h
- Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
- Libraries/LibWeb/WebDriver/Actions.cpp
- Services/WebContent/ConnectionFromClient.cpp
- Libraries/LibWebView/Application.h
- Libraries/LibWeb/Painting/Paintable.h
- Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
- Libraries/LibWeb/Page/Page.cpp
- Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.txt
- Services/Compositor/ConnectionFromWebContent.cpp
- Libraries/LibWeb/Painting/ScrollSnap.h
- Services/Compositor/ContextState.cpp
- Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
9987928 to
c957dbd
Compare
c957dbd to
04f2d39
Compare
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
04f2d39 to
da73c0b
Compare
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
No change in behavior.
The scroll offset getters returned the viewport's position for the root element without first updating layout, so a read that followed a change to the document could observe a stale scroll position.
This mirrors the WebDriver Element Send Keys action.
The `scroll-snap-type` value is normalized at parse time so that the default proximity strictness is dropped, producing the shortest serialization.
A scroll container with a `scroll-snap-type` now captures every snap area whose nearest scroll container it is, and programmatic scroll destinations are adjusted to the nearest valid snap position before the scroll is performed. A snap position aligns a snap area, the border box of the box outset by its `scroll-margin`, with the snapport according to the area's `scroll-snap-align`; a position that would leave the contributing area entirely outside the snapport is not valid. A scroll relative to the current position selects the snap position nearest its destination in the direction of travel, and must not pass over a position defined by an element with `scroll-snap-stop: always`.
When a user scroll gesture settles, each snapped scroll container now performs a smooth scroll to its chosen snap position, and the scrollend event fires once that animation completes. A gesture is tracked per scrolling box, so that the box it moved is known when it settles. A gesture whose input is held runs until that input is released, rather than until its scrolls stop arriving. Selection auto scrolling and middle button scrolling hold their gestures open for as long as the mode they belong to lasts, and the compositor process reports both a viewport scrollbar drag in progress and the release of one.
Wheel steps and arrow key presses are relative scrolls with only an intended direction. Selecting the snap position nearest the settled offset leaves such scrolls trapped on the starting snap position whenever one step is shorter than half the distance between neighboring snap positions. A gesture built from relative input now selects the nearest snap position beyond the offset it started from, in the direction of travel, and only in the axes it moved the scrolling box in. Homing keys, scrollbar drags, autoscroll and precise touchpad input are absolute scrolls that keep the nearest-position selection. Wheel events lose the distinction between stepwise mouse wheel input and precise touchpad input at the process boundary, so the kind of input and the phase of the movement it belongs to now travel on the event.
A scroll gesture was taken to be finished once no user scrolling had moved a scrolling box for 500 milliseconds. A touchpad pans for as long as the user keeps their fingers on it, so a gesture that paused for longer than that settled while the user was still making it, and one that finished sooner left the scrolling box between snap positions until the deadline expired. A gesture is now held open for as long as the input device reports it as ongoing. Deltas that belong to no such gesture, such as the notches of a physical wheel, carry no phase and keep waiting for the deadline. A gesture that runs out of input while layout is too far out of date to consult its snap positions stays latched and snaps once layout is up to date again.
A discrete wheel step or scroll key press is a relative scroll whose intended direction is known as soon as it arrives, so the snap position it selects is now scrolled to straight away. Selecting once the gesture settled instead left the scrolling box resting at an offset the snap container never meant to show, for as long as the settlement delay. Each step selects from the offset the gesture's deltas have reached without snapping, so that a burst of steps advances by the distance they asked for rather than by one snap position each. Arrow keys travel with only an intended direction, so they ignore every snap position up to that offset, while paging keys carry an intended end position and select the snap position nearest it. Only the main thread holds the snap positions to select from, so the compositor now declines a step whose scrolling box snaps along an axis the step travels in, asking that of the box the step scrolls once it has chained.
A scrolling box the user drags with a panning gesture is put where they release it rather than traveling there on its own, so it passes over no snap position on the way and comes to rest at the one nearest where they left it. The momentum a flick hands the scrolling over to does travel over the offsets between there and where it runs out, so a snap position with `scroll-snap-stop: always` among them must not be passed over. A gesture that travels under its own momentum therefore reports the offsets it traveled between, while still selecting its snap position from the offset it ends at alone.
An instant scroll from user input left any smooth scroll of the same scrolling box in flight, so the animation kept moving the box toward its own destination underneath the user and discarded the offsets later inputs applied. Such a scroll is now taken over by the input, which reports the end of the combined scrolling operation once it settles rather than from wherever the scroll was interrupted. A smooth scroll requested while a smooth scroll of the same scrolling box toward the same position is in flight continues that scroll instead of restarting it, matching other engines. Restarting began a new animation from the current offset, so a page repeating such a request could keep its scrolling box from ever arriving.
A pass that runs once a layout update completes now re-evaluates the scroll position of every snap container, so that containers follow their snap targets as content changes and snap into place as soon as they gain snap areas. A container re-snaps to the snap areas it was snapped to before the change when those still align somewhere, preferring focused and targeted areas between multiple candidates, and falls back to the nearest snap position otherwise. Re-snapping to the same areas is instant, while snapping to different areas honors `scroll-behavior`. A container being scrolled re-snaps when that scroll settles instead. Changes to the scroll snap properties, and to the properties a snap area's border box depends on, schedule the same re-evaluation.
The momentum a flick hands the scrolling over to was applied delta by delta, and the scroll container only snapped once that momentum had run out, which pulled it back behind positions it had already traveled past. Momentum deltas decay toward zero by a roughly constant share of the delta before them, so the distance left to travel can be estimated from the latest of them. The scroll container now travels to the snap position nearest where that distance is headed, along a curve that decays the way the momentum it replaces would have. Selecting that position needs the snap positions only the main thread holds, so the compositor declines momentum deltas over a snap container.
da73c0b to
5ed2f9f
Compare
|
Warning Your free Security trial is over. An organization admin can activate billing to continue. |
|
Your pull request has conflicts that need to be resolved before it can be reviewed and merged. Make sure to rebase your branch on top of the latest |
This is used to control panning and zooming by defining snap positions. Content can then be snapped into the desired snap position when the user scrolls.
What is supported:
scroll-snap-type,scroll-snap-alignandscroll-snap-stoppropertiesscrollTo()/scrollBy()/scroll()destinations are adjusted to a valid snap position.What isn't supported:
scrollsnapchange/scrollsnapchanging/SnapEvent). These are fromcss-scroll-snap-2,scroll-initial-targetproperty. This is fromcss-scroll-snap-2.scrollIntoView()currently bypasses snap position selection.To support this more information is now carried through from the UI about the type of scroll that is occurring, this allows us to distinguish types of scroll, for example: mouse-wheel, touchpad and fling gestures. These behave differently according to the specification: https://drafts.csswg.org/css-scroll-snap/#scroll-types.
Fixes: #10362