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

Reply via email to