Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2e04d7d6288ed4c152b8cfe3e6f1820fe2449c05
      
https://github.com/WebKit/WebKit/commit/2e04d7d6288ed4c152b8cfe3e6f1820fe2449c05
  Author: Simon Fraser <[email protected]>
  Date:   2025-10-24 (Fri, 24 Oct 2025)

  Changed paths:
    M Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp
    M Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h
    M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
    M Source/WebCore/rendering/RenderLayerScrollableArea.h

  Log Message:
  -----------
  Optimize RenderLayerScrollableArea::updateScrollInfoAfterLayout()
https://bugs.webkit.org/show_bug.cgi?id=301441
rdar://163357644

Reviewed by Alan Baradlay.

Reduces the amount of time in 
`RenderLayerScrollableArea::updateScrollInfoAfterLayout()` by
about 50% on a Speedo subtest.

Avoid calling `layoutOverflowRect()` twice, and 
`clientWidth()`/`clientHeight()` multiple
times.

Avoid the call to `clampScrollOffset()` for the most common case of 
scrollOffset == minimumScrollOffset(),
which is cheap to compute. `maximumScrollOffset()` is more expensive, because 
it computes `viewSize()`.

Avoid computing all the inputs to `updateSnapOffsetsForScrollableArea()` for 
the common case of
no snapping.

More CheckedPtr.

* Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:
(WebCore::hasScrollSnappedBoxes): A helper to quickly know if we need
to do any scroll snapping work.
* Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h:
* Source/WebCore/rendering/RenderLayerScrollableArea.cpp:
(WebCore::RenderLayerScrollableArea::computeScrollDimensions):
(WebCore::RenderLayerScrollableArea::computeScrollOrigin):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
(WebCore::RenderLayerScrollableArea::updateScrollbarSteps):
(WebCore::RenderLayerScrollableArea::updateScrollInfoAfterLayout):
(WebCore::RenderLayerScrollableArea::updateSnapOffsets):
(WebCore::RenderLayerScrollableArea::overflowTop const): Deleted.
(WebCore::RenderLayerScrollableArea::overflowBottom const): Deleted.
(WebCore::RenderLayerScrollableArea::overflowLeft const): Deleted.
(WebCore::RenderLayerScrollableArea::overflowRight const): Deleted.
* Source/WebCore/rendering/RenderLayerScrollableArea.h:

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



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

Reply via email to