Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: efdc94274152816082dc0b6183901c9a2728d8c3
      
https://github.com/WebKit/WebKit/commit/efdc94274152816082dc0b6183901c9a2728d8c3
  Author: Simon Fraser <[email protected]>
  Date:   2026-01-30 (Fri, 30 Jan 2026)

  Changed paths:
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebCore/page/scrolling/ScrollAnchoringController.cpp
    M Source/WebCore/page/scrolling/ScrollAnchoringController.h
    M Source/WebCore/platform/ScrollAnimator.cpp
    M Source/WebCore/platform/ScrollableArea.cpp
    M Source/WebCore/platform/ScrollableArea.h
    M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
    M Source/WebCore/rendering/RenderLayerScrollableArea.h
    M Source/WebCore/rendering/RenderObject.cpp

  Log Message:
  -----------
  [Scroll anchoring] Eliminate the 
invalidateScrollAnchoringElement/updateScrollAnchoringElement pattern
https://bugs.webkit.org/show_bug.cgi?id=306650
rdar://169303894

Reviewed by Tim Nguyen.

A repeating pattern in scroll anchoring code was this:

    invalidateScrollAnchoringElement();
    updateScrollAnchoringElement();

Fix this by adding a `ComputeNewScrollAnchor` argument which defaults to `Yes`.

We can also push code down into ScrollableArea by making 
scrollAnchoringController() be the virtual
function; other code is common between LocalFrameView and 
RenderLayerScrollableArea. Now only
ScrollableArea needs to call `invalidateAnchorElement()`.

Rename `updateScrollAnchoringPositionForScrollableAreas()` to 
`adjustScrollAnchoringPositionForScrollableAreas()`
because there are too many things with "update" in the name.

Make ScrollAnchoringController CheckedPtr compatible.

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateLayout):
(WebCore::Document::runScrollSteps):
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::LocalFrameView):
(WebCore::LocalFrameView::setLayoutViewportOverrideRect):
(WebCore::LocalFrameView::scrollOffsetChangedViaPlatformWidgetImpl):
(WebCore::LocalFrameView::updateScrollAnchoringElementsForScrollableAreas):
(WebCore::LocalFrameView::adjustScrollAnchoringPositionForScrollableAreas):
(WebCore::LocalFrameView::scheduleResizeEventIfNeeded):
(WebCore::LocalFrameView::updateScrollAnchoringPositionForScrollableAreas): 
Deleted.
(WebCore::LocalFrameView::updateScrollAnchoringElement): Deleted.
(WebCore::LocalFrameView::updateScrollPositionForScrollAnchoringController): 
Deleted.
(WebCore::LocalFrameView::invalidateScrollAnchoringElement): Deleted.
* Source/WebCore/page/LocalFrameView.h:
* Source/WebCore/page/scrolling/ScrollAnchoringController.cpp:
(WebCore::ScrollAnchoringController::invalidateAnchorElement):
(WebCore::ScrollAnchoringController::examineAnchorCandidate):
(WebCore::ScrollAnchoringController::adjustScrollPositionForAnchoring):
* Source/WebCore/page/scrolling/ScrollAnchoringController.h:
* Source/WebCore/platform/ScrollAnimator.cpp:
(WebCore::notifyScrollAnchoringControllerOfScroll):
* Source/WebCore/platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::scrollPositionChanged):
(WebCore::ScrollableArea::updateScrollAnchoringElement):
(WebCore::ScrollableArea::adjustScrollAnchoringPosition):
* Source/WebCore/platform/ScrollableArea.h:
(WebCore::ScrollableArea::scrollAnchoringController const):
(WebCore::ScrollableArea::updateScrollAnchoringElement): Deleted.
(WebCore::ScrollableArea::updateScrollPositionForScrollAnchoringController): 
Deleted.
(WebCore::ScrollableArea::invalidateScrollAnchoringElement): Deleted.
* Source/WebCore/rendering/RenderLayerScrollableArea.cpp:
(WebCore::RenderLayerScrollableArea::updateScrollAnchoringElement): Deleted.
(WebCore::RenderLayerScrollableArea::updateScrollPositionForScrollAnchoringController):
 Deleted.
(WebCore::RenderLayerScrollableArea::invalidateScrollAnchoringElement): Deleted.
* Source/WebCore/rendering/RenderLayerScrollableArea.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::searchParentChainForScrollAnchoringController):

Canonical link: https://commits.webkit.org/306533@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to