[webkit-changes] [WebKit/WebKit] a56c5d: Lay the groundwork for computing a pair of repaint...

Simon Fraser noreply at github.com
Thu Nov 30 18:16:24 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a56c5d7d78e04c9d5722856240d01d67312f7bca
      https://github.com/WebKit/WebKit/commit/a56c5d7d78e04c9d5722856240d01d67312f7bca
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-11-30 (Thu, 30 Nov 2023)

  Changed paths:
    M Source/WebCore/page/IntersectionObserver.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/RenderTableCell.cpp
    M Source/WebCore/rendering/RenderTableCell.h
    M Source/WebCore/rendering/RenderView.cpp
    M Source/WebCore/rendering/RenderView.h
    M Source/WebCore/rendering/svg/RenderSVGBlock.cpp
    M Source/WebCore/rendering/svg/RenderSVGBlock.h
    M Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h
    M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
    M Source/WebCore/rendering/svg/RenderSVGModelObject.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp

  Log Message:
  -----------
  Lay the groundwork for computing a pair of repaint rects
https://bugs.webkit.org/show_bug.cgi?id=265585
rdar://118989146

Reviewed by Alan Baradlay.

A future patch will eliminate `outlineBoundsForRepaint()` and compute that rect via the
`computeVisibleRectsInContainer()` code path. In preparation, create a new RepaintRects
struct that will hold both rects; for now, it just has a `clippedOverflowRect`. Use it
in `computeVisibleRectsInContainer()` which is the core function for mapping rects up
to a repaint container, and in `computeRects()` which is the non-virtual wrapper.

Functions called from also need to use RepaintRects: `applyCachedClipAndScrollPosition()`
and `computeVisibleRectsInSVGContainer()`.

`computeFloatVisibleRectInContainer()` is a parallel function to `computeVisibleRectsInContainer()`
used only for SVG: ideally these two would be collapsed together. For now, since SVG doesn't care
about painting outline bounds changes only, leave this FloatRect code alone.

This replacement is largely mechanical. For cleanliness, RepaintRects has some
helper functions for flipping, transforming etc, that in future will operate on
both rects.

* Source/WebCore/page/IntersectionObserver.cpp:
(WebCore::computeClippedRectInRootContentsSpace):
(WebCore::IntersectionObserver::computeIntersectionState const):
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::applyCachedClipAndScrollPosition const):
(WebCore::RenderBox::computeVisibleRectsUsingPaintOffset const):
(WebCore::RenderBox::computeVisibleRectsInContainer const):
(WebCore::RenderBox::flipForWritingMode const):
(WebCore::RenderBox::computeVisibleRectUsingPaintOffset const): Deleted.
(WebCore::RenderBox::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/RenderBox.h:
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::clippedOverflowRect const):
(WebCore::RenderInline::computeVisibleRectsUsingPaintOffset const):
(WebCore::RenderInline::computeVisibleRectsInContainer const):
(WebCore::RenderInline::computeVisibleRectUsingPaintOffset const): Deleted.
(WebCore::RenderInline::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/RenderInline.h:
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::computeVisibleRectsInSVGContainer const):
(WebCore::RenderLayerModelObject::computeVisibleRectInSVGContainer const): Deleted.
* Source/WebCore/rendering/RenderLayerModelObject.h:
(WebCore::RenderLayerModelObject::applyCachedClipAndScrollPosition const):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::clippedOverflowRect const):
(WebCore::RenderObject::computeRects const):
(WebCore::RenderObject::computeVisibleRectsInContainer const):
(WebCore::RenderObject::hasNonEmptyVisibleRectRespectingParentFrames const):
(WebCore::borderAndTextRects):
(WebCore::RenderObject::RepaintRects::transform):
(WebCore::RenderObject::computeRect const): Deleted.
(WebCore::RenderObject::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::RepaintRects::move):
(WebCore::RenderObject::RepaintRects::moveBy):
(WebCore::RenderObject::RepaintRects::expand):
(WebCore::RenderObject::RepaintRects::encloseToIntRects):
(WebCore::RenderObject::RepaintRects::unite):
(WebCore::RenderObject::RepaintRects::flipForWritingMode):
(WebCore::RenderObject::computeRectForRepaint const):
(WebCore::RenderObject::computeAbsoluteRepaintRect const): Deleted. It was unused.
* Source/WebCore/rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::computeVisibleRectsInContainer const):
(WebCore::RenderTableCell::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/RenderTableCell.h:
* Source/WebCore/rendering/RenderView.cpp:
(WebCore::RenderView::computeVisibleRectsInContainer const):
(WebCore::RenderView::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/RenderView.h:
* Source/WebCore/rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::computeVisibleRectsInContainer const):
(WebCore::RenderSVGBlock::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/svg/RenderSVGBlock.h:
* Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h:
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::computeVisibleRectsInContainer const):
(WebCore::RenderSVGModelObject::applyCachedClipAndScrollPosition const):
(WebCore::RenderSVGModelObject::computeVisibleRectInContainer const): Deleted.
* Source/WebCore/rendering/svg/RenderSVGModelObject.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp:
(WebCore::LegacyRenderSVGRoot::clippedOverflowRect const):
(WebCore::LegacyRenderSVGRoot::computeFloatVisibleRectInContainer const):

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




More information about the webkit-changes mailing list