Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b1e52cdf594f3a929ef57147f432a711d2516458
https://github.com/WebKit/WebKit/commit/b1e52cdf594f3a929ef57147f432a711d2516458
Author: Fady Farag <[email protected]>
Date: 2026-08-03 (Mon, 03 Aug 2026)
Changed paths:
M Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations
M Source/WebCore/page/IntersectionObserver.cpp
M Source/WebCore/page/LargestContentfulPaintData.cpp
M Source/WebCore/page/LocalFrameView.cpp
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderBox.h
M Source/WebCore/rendering/RenderInline.cpp
M Source/WebCore/rendering/RenderInline.h
M Source/WebCore/rendering/RenderLayerModelObject.cpp
M Source/WebCore/rendering/RenderLayerModelObject.h
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebCore/rendering/RenderObjectInlines.h
M Source/WebCore/rendering/RenderTableCell.cpp
M Source/WebCore/rendering/RenderTableCell.h
M Source/WebCore/rendering/RenderTableCol.cpp
M Source/WebCore/rendering/RenderTableCol.h
M Source/WebCore/rendering/RenderTableRow.cpp
M Source/WebCore/rendering/RenderTableRow.h
M Source/WebCore/rendering/RenderView.cpp
M Source/WebCore/rendering/RenderView.h
M Source/WebCore/rendering/VisibleRectContext.h
M Source/WebCore/rendering/svg/RenderSVGBlock.cpp
M Source/WebCore/rendering/svg/RenderSVGBlock.h
M Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp
M Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h
M Source/WebCore/rendering/svg/RenderSVGInline.cpp
M Source/WebCore/rendering/svg/RenderSVGInline.h
M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/RenderSVGModelObject.h
M Source/WebCore/rendering/svg/RenderSVGRoot.cpp
M Source/WebCore/rendering/svg/RenderSVGRoot.h
M Source/WebCore/rendering/svg/SVGRenderSupport.cpp
M Source/WebCore/rendering/svg/SVGRenderSupport.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGHiddenContainer.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGHiddenContainer.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.h
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.h
Log Message:
-----------
Pass `VisibleRectContext` by const reference so visible rect computation can
be `NODELETE`
https://bugs.webkit.org/show_bug.cgi?id=320855
rdar://183887604
Reviewed by Chris Dumez.
Initially, `VisibleRectContext` was passed by value throughout the render tree
which
triggered `NoDeleteChecker`'s parameter rule where it counts a by-value
parameter
with a non-trivially-destructible member against the callee. This introduces an
architectural
change where the `VisibleRectContext` struct keeps the traversal-constant
configuration
and is now passed by const reference and mutable per-step state moves to
a new trivially-destructible `VisibleRectState` struct. This makes the
`NODELETE` annotations
on the SVG hidden container overrides provably correct.
* Source/WebCore/SaferCPPExpectations/NoDeleteCheckerExpectations:
* Source/WebCore/page/IntersectionObserver.cpp:
(WebCore::computeClippedRectInRootContentsSpace):
(WebCore::IntersectionObserver::computeIntersectionState const):
* Source/WebCore/page/LargestContentfulPaintData.cpp:
(WebCore::LargestContentfulPaintData::computeViewportIntersectionRect):
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::visibleRectOfChild const):
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::applyCachedClipAndScrollPosition const):
(WebCore::RenderBox::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/RenderBox.h:
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::clippedOverflowRect const):
(WebCore::RenderInline::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/RenderInline.h:
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::applyCachedClipAndScrollPosition const):
(WebCore::RenderLayerModelObject::computeVisibleRectsInSVGContainer const):
* Source/WebCore/rendering/RenderLayerModelObject.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::clippedOverflowRect const):
(WebCore::RenderObject::computeRects const):
(WebCore::RenderObject::computeFloatRectForRepaint const):
(WebCore::RenderObject::computeVisibleRectsInContainer const):
(WebCore::RenderObject::computeFloatVisibleRectInContainer const):
(WebCore::RenderObject::hasEmptyVisibleRectRespectingParentFrames const):
(WebCore::borderAndTextRects):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/RenderObjectInlines.h:
(WebCore::RenderObject::visibleRectContextForRepaint):
(WebCore::RenderObject::visibleRectContextForSpatialNavigation):
(WebCore::RenderObject::visibleRectContextForRenderTreeAsText):
* Source/WebCore/rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/RenderTableCell.h:
* Source/WebCore/rendering/RenderTableCol.cpp:
(WebCore::RenderTableCol::clippedOverflowRect const):
* Source/WebCore/rendering/RenderTableCol.h:
* Source/WebCore/rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::clippedOverflowRect const):
* Source/WebCore/rendering/RenderTableRow.h:
* Source/WebCore/rendering/RenderView.cpp:
(WebCore::RenderView::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/RenderView.h:
* Source/WebCore/rendering/VisibleRectContext.h:
* Source/WebCore/rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::clippedOverflowRect const):
(WebCore::RenderSVGBlock::computeVisibleRectsInContainer const):
(WebCore::RenderSVGBlock::computeFloatVisibleRectInContainer const):
* Source/WebCore/rendering/svg/RenderSVGBlock.h:
* Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp:
(WebCore::RenderSVGHiddenContainer::clippedOverflowRect const):
(WebCore::RenderSVGHiddenContainer::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h:
* Source/WebCore/rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::clippedOverflowRect const):
(WebCore::RenderSVGInline::computeFloatVisibleRectInContainer const):
* Source/WebCore/rendering/svg/RenderSVGInline.h:
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::computeVisibleRectsInContainer const):
(WebCore::RenderSVGModelObject::applyCachedClipAndScrollPosition const):
* Source/WebCore/rendering/svg/RenderSVGModelObject.h:
* Source/WebCore/rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::computeFloatVisibleRectInContainer const):
* Source/WebCore/rendering/svg/RenderSVGRoot.h:
* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGRenderSupport::clippedOverflowRectForRepaint):
(WebCore::SVGRenderSupport::computeFloatVisibleRectInContainer):
* Source/WebCore/rendering/svg/SVGRenderSupport.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGHiddenContainer.cpp:
(WebCore::LegacyRenderSVGHiddenContainer::clippedOverflowRect const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGHiddenContainer.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp:
(WebCore::LegacyRenderSVGModelObject::clippedOverflowRect const):
(WebCore::LegacyRenderSVGModelObject::computeFloatVisibleRectInContainer const):
(WebCore::LegacyRenderSVGModelObject::computeVisibleRectsInContainer const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp:
(WebCore::LegacyRenderSVGRoot::clippedOverflowRect const):
(WebCore::LegacyRenderSVGRoot::computeFloatVisibleRectInContainer const):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.h:
Canonical link: https://commits.webkit.org/318444@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications