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