Skip to content

LibWeb: Implement CSS Scroll Snap Level 1 - #10944

Open
tcl3 wants to merge 13 commits into
LadybirdBrowser:masterfrom
tcl3:libweb_scroll_snap
Open

LibWeb: Implement CSS Scroll Snap Level 1#10944
tcl3 wants to merge 13 commits into
LadybirdBrowser:masterfrom
tcl3:libweb_scroll_snap

Conversation

@tcl3

@tcl3 tcl3 commented Jul 31, 2026

Copy link
Copy Markdown
Member

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:

  • The scroll-snap-type, scroll-snap-align and scroll-snap-stop properties
  • Snapping of user-initiated scrolls - All types of user-initiated scrolling are supported (scroll-thumb dragging, mouse, keyboard, touchpad - including fling gestures)
  • Snapping of programmatic scrolls - scrollTo()/scrollBy()/scroll() destinations are adjusted to a valid snap position.
  • Re-snapping on layout changes - This ensures that snap positions are currently updated if the document layout changes.

What isn't supported:

  • Snap events (scrollsnapchange/scrollsnapchanging/SnapEvent). These are from css-scroll-snap-2,
  • The scroll-initial-target property. This is from css-scroll-snap-2.
  • scrollIntoView() currently bypasses snap position selection.
  • RTL writiing modes - scroll snap alignment mapping is writing-mode aware but RTL scroll containers don't currently scroll in the correct direction.

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

@tcl3
tcl3 requested a review from trflynn89 as a code owner July 31, 2026 03:15
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds 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, scroll-snap-stop: always, momentum scrolling, stable scroll-node identifiers, relative scrolling, takeover tracking, and scrollend settlement. It also adds browser, WPT, reference, compositor, and animation tests.

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
Loading

Possibly related PRs

Suggested reviewers: trflynn89, awesomekling

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The description accurately covers the CSS Scroll Snap implementation, supported scrolling paths, limitations, and linked issue.
Linked Issues check ✅ Passed The changes implement CSS Scroll Snap behavior requested by issue #10362, including user scrolling, programmatic scrolling, and layout re-snapping.
Out of Scope Changes check ✅ Passed The changes are related to CSS Scroll Snap, input handling, compositor integration, supporting APIs, and tests for the linked objective.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (2)
Tests/LibWeb/Text/input/include.js (1)

67-75: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Read the scroll offset once per iteration.

The loop reads readScrollOffset() twice per iteration: once in the condition and once for previousScrollOffset. 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 value

Make the non-null invariants in select_resnap_destination explicit.

Two dereferences in this block rely on invariants established elsewhere in the function:

  • Line 816 dereferences computed_values without a null check. Every other call site of computed_values_for_snap_container checks the result (lines 392-394 and 426-428). The pointer is non-null here only because collect_snap_position_candidates at 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 VERIFY for 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

📥 Commits

Reviewing files that changed from the base of the PR and between de154e5 and 518cb92.

📒 Files selected for processing (285)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
  • Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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/css/scroll-snap-type-animation.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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/scroll-snap-after-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-removed-snap-area-is-not-retained.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.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/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
  • Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
  • Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.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/input/scroll-snap-directional-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-removed-snap-area-is-not-retained.html
  • Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
  • Tests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
  • Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
  • 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/inheritance.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
  • 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/snap-area-overflow-boundary-viewport-covering.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/overflowing-snap-areas.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.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-align-valid.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
  • 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/parsing/scroll-snap-type-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
  • 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/resnap-on-layout-is-immediate.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/scroll-margin.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
  • 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/scroll-padding.html
  • 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/scroll-snap-stop-002.html
  • 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/scroll-snap-type.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
  • 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/snap-after-relayout/changing-scroll-snap-align.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/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/move-current-target.html
  • 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/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-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.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-after-relayout/remove-current-target.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/snap-after-relayout/resnap-to-focused.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/snap-area-capturing-remove-scroll-container.html
  • 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-intended-direction.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.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-to-empty-sized-element.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.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-to-visible-areas-margin-both.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
  • 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-to-visible-areas-x-axis.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/support/common.css
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
  • Tests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.html
  • UI/Android/src/main/cpp/WebViewImplementationNative.cpp
  • UI/AppKit/Interface/Event.mm
  • UI/AppKit/Interface/LadybirdWebView.mm
  • UI/Qt/WebContentView.cpp

Comment thread Libraries/LibWeb/Internals/Internals.cpp
Comment thread Services/Compositor/ContextState.cpp
Comment thread Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html Outdated
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 518cb92 to 9bb5967 Compare July 31, 2026 05:04
@github-actions

Copy link
Copy Markdown

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 master.

@github-actions github-actions Bot added the conflicts Pull request has merge conflicts that need resolution label Jul 31, 2026
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 9bb5967 to 10a577f Compare July 31, 2026 05:47
@github-actions github-actions Bot removed the conflicts Pull request has merge conflicts that need resolution label Jul 31, 2026
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 10a577f to 821f055 Compare July 31, 2026 17:31

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
Libraries/LibWeb/Painting/ScrollSnap.cpp (1)

458-493: 🚀 Performance & Scalability | 🔵 Trivial

Consider caching collected snap candidates for containers with many snap areas.

collect_snap_position_candidates walks the complete paintable subtree of the container, and is_captured_by_snap_container walks 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

📥 Commits

Reviewing files that changed from the base of the PR and between 10a577f and 821f055.

📒 Files selected for processing (283)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
  • Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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/css/scroll-snap-type-animation.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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/scroll-snap-after-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.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/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
  • Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
  • Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.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/input/scroll-snap-directional-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
  • Tests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
  • Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
  • 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/inheritance.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
  • 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/snap-area-overflow-boundary-viewport-covering.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/overflowing-snap-areas.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.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-align-valid.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
  • 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/parsing/scroll-snap-type-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
  • 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/resnap-on-layout-is-immediate.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/scroll-margin.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
  • 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/scroll-padding.html
  • 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/scroll-snap-stop-002.html
  • 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/scroll-snap-type.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
  • 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/snap-after-relayout/changing-scroll-snap-align.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/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/move-current-target.html
  • 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/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-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.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-after-relayout/remove-current-target.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/snap-after-relayout/resnap-to-focused.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/snap-area-capturing-remove-scroll-container.html
  • 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-intended-direction.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.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-to-empty-sized-element.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.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-to-visible-areas-margin-both.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
  • 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-to-visible-areas-x-axis.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/support/common.css
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
  • Tests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.html
  • UI/Android/src/main/cpp/WebViewImplementationNative.cpp
  • UI/AppKit/Interface/Event.mm
  • UI/AppKit/Interface/LadybirdWebView.mm
  • UI/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

@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 821f055 to d4c20fc Compare July 31, 2026 18:39

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 win

Identify main-thread smooth scrolls by stable_node_id before mutating while ticking.

set_scroll_offset_for can enter document->update_layout(...), then re_snap_scroll_containers_after_layout_change() and perform_a_scroll_of_a_scrolling_box(), which aborts/resolves smooth scrolls under the same stable_node_id. The index in process_main_thread_smooth_scrolls() can then remove take(index) the wrong entry because m_main_thread_smooth_scrolls changed. Use one entry per stable_node_id before 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 | 🔵 Trivial

Consider caching snap-area candidates for the scroll hot path.

collect_snap_position_candidates walks 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_destination can pay this cost twice: lines 771 and 782 call adjust_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 collected collection for the fallback paths in select_resnap_destination would 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

📥 Commits

Reviewing files that changed from the base of the PR and between 821f055 and d4c20fc.

📒 Files selected for processing (283)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
  • Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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/css/scroll-snap-type-animation.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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/scroll-snap-after-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.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/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
  • Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
  • Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.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/input/scroll-snap-directional-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
  • Tests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
  • Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
  • 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/inheritance.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
  • 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/snap-area-overflow-boundary-viewport-covering.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/overflowing-snap-areas.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.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-align-valid.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
  • 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/parsing/scroll-snap-type-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
  • 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/resnap-on-layout-is-immediate.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/scroll-margin.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
  • 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/scroll-padding.html
  • 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/scroll-snap-stop-002.html
  • 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/scroll-snap-type.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
  • 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/snap-after-relayout/changing-scroll-snap-align.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/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/move-current-target.html
  • 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/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-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.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-after-relayout/remove-current-target.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/snap-after-relayout/resnap-to-focused.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/snap-area-capturing-remove-scroll-container.html
  • 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-intended-direction.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.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-to-empty-sized-element.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.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-to-visible-areas-margin-both.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
  • 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-to-visible-areas-x-axis.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/support/common.css
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
  • Tests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.html
  • UI/Android/src/main/cpp/WebViewImplementationNative.cpp
  • UI/AppKit/Interface/Event.mm
  • UI/AppKit/Interface/LadybirdWebView.mm
  • UI/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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
Libraries/LibWeb/Painting/ScrollSnap.cpp (1)

815-816: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low value

Add a null check for computed_values_for_snap_container here.

computed_values_for_snap_container returns nullptr when 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_container at Line 764 returns an empty SnapAxes in 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

📥 Commits

Reviewing files that changed from the base of the PR and between 821f055 and d4c20fc.

📒 Files selected for processing (283)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
  • Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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/css/scroll-snap-type-animation.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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/scroll-snap-after-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.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/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
  • Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
  • Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.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/input/scroll-snap-directional-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
  • Tests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
  • Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
  • 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/inheritance.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
  • 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/snap-area-overflow-boundary-viewport-covering.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/overflowing-snap-areas.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.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-align-valid.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
  • 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/parsing/scroll-snap-type-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
  • 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/resnap-on-layout-is-immediate.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/scroll-margin.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
  • 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/scroll-padding.html
  • 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/scroll-snap-stop-002.html
  • 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/scroll-snap-type.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
  • 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/snap-after-relayout/changing-scroll-snap-align.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/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/move-current-target.html
  • 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/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-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.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-after-relayout/remove-current-target.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/snap-after-relayout/resnap-to-focused.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/snap-area-capturing-remove-scroll-container.html
  • 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-intended-direction.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.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-to-empty-sized-element.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.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-to-visible-areas-margin-both.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
  • 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-to-visible-areas-x-axis.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/support/common.css
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
  • Tests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.html
  • UI/Android/src/main/cpp/WebViewImplementationNative.cpp
  • UI/AppKit/Interface/Event.mm
  • UI/AppKit/Interface/LadybirdWebView.mm
  • UI/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

@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from d4c20fc to dcf6dca Compare July 31, 2026 22:25

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
Tests/Compositor/TestContextState.cpp (1)

144-148: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Assert 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_INDEX has 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

📥 Commits

Reviewing files that changed from the base of the PR and between d4c20fc and dcf6dca.

📒 Files selected for processing (283)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-nested-navigable.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-prevent-default.txt
  • Tests/LibWeb/Text/expected/async-scrolling/snap-container-wheel-target.txt
  • Tests/LibWeb/Text/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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/css/scroll-snap-type-animation.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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/scroll-snap-after-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.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/expected/smooth-scroll-toward-unchanged-position-returns-a-new-promise.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/css/scroll-snap-type-animation.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-keyboard-scroll-of-smooth-viewport.html
  • Tests/LibWeb/Text/input/scroll-snap-after-paging-keys.html
  • Tests/LibWeb/Text/input/scroll-snap-after-pan-adopted-following-key-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-precise-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-repeated-keyboard-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-after-scrollbar-drag.html
  • Tests/LibWeb/Text/input/scroll-snap-align-writing-mode.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/input/scroll-snap-directional-wheel-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-in-pseudo-element-scroll-container.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-compositor-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-new-gesture-during-snap-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-scroll-step-while-pinch-zoomed.html
  • Tests/LibWeb/Text/input/scroll-snap-settlement-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-spaced-wheel-steps.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-always-during-pan.html
  • Tests/LibWeb/Text/input/scroll-snap-stop-wheel-step.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-chained-to-snap-container.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-during-programmatic-scroll.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-in-one-axis.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-step-past-nested-navigable-extent.html
  • Tests/LibWeb/Text/input/scroll-snap-wheel-steps-with-held-input.html
  • Tests/LibWeb/Text/input/smooth-scroll-toward-unchanged-position-returns-a-new-promise.html
  • 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/inheritance.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/input/keyboard.html
  • 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/snap-area-overflow-boundary-viewport-covering.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/overflowing-snap-areas.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/overscroll-snap.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-align-computed.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-align-valid.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html
  • 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/parsing/scroll-snap-type-computed.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html
  • 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/resnap-on-layout-is-immediate.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/scroll-margin.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scroll-on-large-element-not-covering-snapport.html
  • 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/scroll-padding.html
  • 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/scroll-snap-stop-002.html
  • 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/scroll-snap-type.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/scrollTo-scrollBy-snaps.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
  • 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/snap-after-relayout/changing-scroll-snap-align.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/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/move-current-target.html
  • 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/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-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.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-after-relayout/remove-current-target.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/snap-after-relayout/resnap-to-focused.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/snap-area-capturing-remove-scroll-container.html
  • 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-intended-direction.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-combination-of-two-elements-1.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-to-empty-sized-element.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-transformed-target.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.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-to-visible-areas-margin-both.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html
  • 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-to-visible-areas-x-axis.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/support/common.css
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-001.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-002.html
  • Tests/LibWeb/Text/input/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.html
  • Tests/LibWeb/Text/input/wpt-import/css/cssom-view/smooth-scroll-nonstop.html
  • UI/Android/src/main/cpp/WebViewImplementationNative.cpp
  • UI/AppKit/Interface/Event.mm
  • UI/AppKit/Interface/LadybirdWebView.mm
  • UI/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

@github-actions github-actions Bot added the conflicts Pull request has merge conflicts that need resolution label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

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 master.

@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from dcf6dca to a59c475 Compare August 2, 2026 00:53
@github-actions github-actions Bot added conflicts Pull request has merge conflicts that need resolution and removed conflicts Pull request has merge conflicts that need resolution labels Aug 2, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

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 master.

@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from a59c475 to 55472c0 Compare August 3, 2026 15:54
@github-actions github-actions Bot removed the conflicts Pull request has merge conflicts that need resolution label Aug 3, 2026
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

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 master.

@github-actions github-actions Bot added the conflicts Pull request has merge conflicts that need resolution label Aug 4, 2026
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 55472c0 to a1820f8 Compare August 4, 2026 11:27
@github-actions github-actions Bot removed the conflicts Pull request has merge conflicts that need resolution label Aug 4, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 55472c0 and a1820f8.

📒 Files selected for processing (188)
  • Libraries/LibWeb/CMakeLists.txt
  • Libraries/LibWeb/CSS/ComputedProperties.cpp
  • Libraries/LibWeb/CSS/ComputedValues.cpp
  • Libraries/LibWeb/CSS/ComputedValues.h
  • Libraries/LibWeb/CSS/Enums.json
  • Libraries/LibWeb/CSS/Keywords.json
  • Libraries/LibWeb/CSS/Parser/Parser.h
  • Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp
  • Libraries/LibWeb/CSS/Properties.json
  • Libraries/LibWeb/CSS/StyleInvalidation.cpp
  • Libraries/LibWeb/CSS/StyleInvalidation.h
  • Libraries/LibWeb/CSS/UpdateStyle.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollTree.h
  • Libraries/LibWeb/Compositor/AsyncScrollingState.cpp
  • Libraries/LibWeb/Compositor/AsyncScrollingState.h
  • Libraries/LibWeb/Compositor/CompositorHost.cpp
  • Libraries/LibWeb/Compositor/CompositorHost.h
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.cpp
  • Libraries/LibWeb/Compositor/SmoothScrollAnimation.h
  • Libraries/LibWeb/Compositor/Types.cpp
  • Libraries/LibWeb/Compositor/Types.h
  • Libraries/LibWeb/DOM/Document.cpp
  • Libraries/LibWeb/DOM/Document.h
  • Libraries/LibWeb/DOM/Element.cpp
  • Libraries/LibWeb/DOM/Element.h
  • Libraries/LibWeb/Forward.h
  • Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.cpp
  • Libraries/LibWeb/HTML/LocalNavigable.h
  • Libraries/LibWeb/HTML/Window.cpp
  • Libraries/LibWeb/HTML/Window.h
  • Libraries/LibWeb/Internals/Internals.cpp
  • Libraries/LibWeb/Internals/Internals.h
  • Libraries/LibWeb/Internals/Internals.idl
  • Libraries/LibWeb/Layout/LayoutRustBridge.cpp
  • Libraries/LibWeb/Layout/Node.cpp
  • Libraries/LibWeb/Layout/ScrollableOverflow.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.cpp
  • Libraries/LibWeb/Page/AutoScrollHandler.h
  • Libraries/LibWeb/Page/EventHandler.cpp
  • Libraries/LibWeb/Page/EventHandler.h
  • Libraries/LibWeb/Page/InputEvent.cpp
  • Libraries/LibWeb/Page/InputEvent.h
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.cpp
  • Libraries/LibWeb/Page/MiddleButtonScrollHandler.h
  • Libraries/LibWeb/Page/Page.cpp
  • Libraries/LibWeb/Page/Page.h
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.cpp
  • Libraries/LibWeb/Painting/AccumulatedVisualContext.h
  • Libraries/LibWeb/Painting/DisplayListCommand.h
  • Libraries/LibWeb/Painting/Paintable.cpp
  • Libraries/LibWeb/Painting/Paintable.h
  • Libraries/LibWeb/Painting/ScrollSnap.cpp
  • Libraries/LibWeb/Painting/ScrollSnap.h
  • Libraries/LibWeb/Painting/Scrollbar.cpp
  • Libraries/LibWeb/WebDriver/Actions.cpp
  • Libraries/LibWebView/Application.cpp
  • Libraries/LibWebView/Application.h
  • Libraries/LibWebView/CompositorConnection.cpp
  • Libraries/LibWebView/CompositorConnection.h
  • Libraries/LibWebView/CompositorHostBase.cpp
  • Libraries/LibWebView/CompositorHostBase.h
  • Libraries/LibWebView/ViewImplementation.cpp
  • Libraries/LibWebView/WebContentClient.cpp
  • Libraries/LibWebView/WebContentClient.h
  • Services/Compositor/CompositorControlServer.ipc
  • Services/Compositor/CompositorState.cpp
  • Services/Compositor/CompositorState.h
  • Services/Compositor/CompositorWebContentServer.ipc
  • Services/Compositor/ConnectionFromClient.cpp
  • Services/Compositor/ConnectionFromClient.h
  • Services/Compositor/ConnectionFromWebContent.cpp
  • Services/Compositor/ConnectionFromWebContent.h
  • Services/Compositor/ContextState.cpp
  • Services/Compositor/ContextState.h
  • Services/WebContent/ConnectionFromClient.cpp
  • Tests/Compositor/TestContextState.cpp
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000-ref.html
  • Tests/LibWeb/Ref/expected/wpt-import/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-initial-layout-000.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
  • Tests/LibWeb/Ref/input/wpt-import/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
  • Tests/LibWeb/TestSmoothScrollAnimation.cpp
  • Tests/LibWeb/Text/expected/all-window-properties.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/expected/css/CSSStyleDeclaration-has-indexed-property-getter.txt
  • 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-after-auto-scroll-modes.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-flick.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-settles-during-layout.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-gesture-whose-end-is-never-reported.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-homing-keys.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-keyboard-scroll-of-smooth-viewport.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-repeated-keyboard-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-after-scrollbar-drag.txt
  • Tests/LibWeb/Text/expected/scroll-snap-align-writing-mode.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-directional-wheel-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-in-pseudo-element-scroll-container.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-compositor-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-new-gesture-during-snap-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-scroll-step-while-pinch-zoomed.txt
  • Tests/LibWeb/Text/expected/scroll-snap-settlement-during-programmatic-scroll.txt
  • Tests/LibWeb/Text/expected/scroll-snap-spaced-wheel-steps.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-always-during-pan.txt
  • Tests/LibWeb/Text/expected/scroll-snap-stop-wheel-step.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/expected/scroll-snap-wheel-step-in-one-axis.txt
  • Tests/LibWeb/Text/expected/scroll-snap-wheel-step-past-nested-navigable-extent.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-cascade/all-prop-revert-layer.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/inheritance.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/keyboard.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/input/mouse-wheel.txt
  • 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/no-snap-position.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/overflowing-snap-areas.txt
  • 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-align-computed.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/parsing/scroll-snap-align-valid.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/parsing/scroll-snap-stop-invalid.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/parsing/scroll-snap-stop-valid.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/parsing/scroll-snap-type-invalid.txt
  • 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/resnap-on-layout-is-immediate.txt
  • 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/scroll-margin.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/scroll-padding-and-margin.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-padding.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/scroll-snap-stop-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/scroll-snap-stop-change.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/scrollTo-scrollBy-snaps.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/snap-after-relayout/changing-scroll-snap-align-nested.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.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/snap-after-relayout/changing-scroll-snap-type.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-focused-element-scaled-ancestor.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/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
  • 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/snap-after-relayout/snap-to-different-targets.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/snap-at-user-scroll-end.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-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/snap-to-empty-sized-element.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-transformed-target.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-to-visible-areas-both.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-margin-x-axis.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.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-to-visible-areas-y-axis.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/unreachable-snap-positions-002.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/css-scroll-snap/unreachable-snap-positions-003.txt
  • Tests/LibWeb/Text/expected/wpt-import/css/cssom-view/smooth-scroll-nonstop.txt
  • Tests/LibWeb/Text/input/async-scrolling/nested-scroller-wheel-prevent-default.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-nested-navigable.html
  • Tests/LibWeb/Text/input/async-scrolling/snap-container-wheel-target.html
  • Tests/LibWeb/Text/input/async-scrolling/wheel-scroll-admission.html
  • Tests/LibWeb/Text/input/include.js
  • Tests/LibWeb/Text/input/scroll-snap-after-auto-scroll-modes.html
  • Tests/LibWeb/Text/input/scroll-snap-after-flick.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-settles-during-layout.html
  • Tests/LibWeb/Text/input/scroll-snap-after-gesture-whose-end-is-never-reported.html
  • Tests/LibWeb/Text/input/scroll-snap-after-homing-keys.html
  • Tests/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

Comment thread Libraries/LibWeb/Page/EventHandler.cpp
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

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 master.

@github-actions github-actions Bot added the conflicts Pull request has merge conflicts that need resolution label Aug 9, 2026
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 9987928 to c957dbd Compare August 20, 2026 08:02
@github-actions github-actions Bot added conflicts Pull request has merge conflicts that need resolution and removed conflicts Pull request has merge conflicts that need resolution labels Aug 20, 2026
@LadybirdBrowser LadybirdBrowser deleted a comment from github-actions Bot Aug 20, 2026
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from c957dbd to 04f2d39 Compare August 20, 2026 12:30
@github-actions github-actions Bot added conflicts Pull request has merge conflicts that need resolution and removed conflicts Pull request has merge conflicts that need resolution labels Aug 20, 2026
@github-actions

Copy link
Copy Markdown

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 master.

@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from 04f2d39 to da73c0b Compare August 20, 2026 22:02
@github-actions github-actions Bot added conflicts Pull request has merge conflicts that need resolution and removed conflicts Pull request has merge conflicts that need resolution labels Aug 20, 2026
@github-actions

Copy link
Copy Markdown

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 master.

tcl3 added 13 commits August 21, 2026 13:02
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.
@tcl3
tcl3 force-pushed the libweb_scroll_snap branch from da73c0b to 5ed2f9f Compare August 21, 2026 12:07
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Warning

Your free Security trial is over. An organization admin can activate billing to continue.

@github-actions github-actions Bot added conflicts Pull request has merge conflicts that need resolution and removed conflicts Pull request has merge conflicts that need resolution labels Aug 21, 2026
@github-actions

Copy link
Copy Markdown

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 master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conflicts Pull request has merge conflicts that need resolution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No scroll snap

1 participant