Skip to content

Commit

Permalink
Rename RenderSelectionInfo to RenderSelectionGeometry as part of rena…
Browse files Browse the repository at this point in the history
…me work to clarify classes around highlights.

https://bugs.webkit.org/show_bug.cgi?id=261625
rdar://115575135

Reviewed by Simon Fraser.

Several classes associated with Highlights have a very confusing naming
structure. This is the second rename of several to help clarify
what these classes are and their relationship to each other.

* Source/WebCore/rendering/RenderSelectionGeometry.cpp: Renamed from Source/WebCore/rendering/RenderSelectionInfo.cpp.
(WebCore::RenderSelectionGeometryBase::RenderSelectionGeometryBase):
(WebCore::RenderSelectionGeometryBase::repaintRectangle):
(WebCore::RenderSelectionGeometry::RenderSelectionGeometry):
(WebCore::RenderSelectionGeometry::repaint):
(WebCore::RenderBlockSelectionGeometry::RenderBlockSelectionGeometry):
(WebCore::RenderBlockSelectionGeometry::repaint):
* Source/WebCore/rendering/RenderSelectionGeometry.h: Renamed from Source/WebCore/rendering/RenderSelectionInfo.h.
(WebCore::RenderSelectionGeometryBase::repaintContainer const):
(WebCore::RenderSelectionGeometryBase::state const):
(WebCore::RenderSelectionGeometry::collectedSelectionQuads const):
(WebCore::RenderSelectionGeometry::rect const):
(WebCore::RenderBlockSelectionGeometry::rects const):

Canonical link: https://commits.webkit.org/268051@main
  • Loading branch information
megangardner committed Sep 16, 2023
1 parent 92dfc54 commit 5b2b956
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 45 deletions.
2 changes: 1 addition & 1 deletion Source/WebCore/Headers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2312,7 +2312,7 @@ set(WebCore_PRIVATE_FRAMEWORK_HEADERS
rendering/RenderOverflow.h
rendering/RenderPtr.h
rendering/RenderReplaced.h
rendering/RenderSelectionInfo.h
rendering/RenderSelectionGeometry.h
rendering/RenderText.h
rendering/RenderTextControl.h
rendering/RenderTextLineBoxes.h
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/Sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2620,7 +2620,7 @@ rendering/RenderScrollbar.cpp
rendering/RenderScrollbarPart.cpp
rendering/RenderScrollbarTheme.cpp
rendering/RenderSearchField.cpp
rendering/RenderSelectionInfo.cpp
rendering/RenderSelectionGeometry.cpp
rendering/RenderSlider.cpp
rendering/RenderTable.cpp
rendering/RenderTableCaption.cpp
Expand Down
12 changes: 6 additions & 6 deletions Source/WebCore/WebCore.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@
0F099D0917B968A100FF84B9 /* WebCoreTypedArrayController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F099D0717B968A100FF84B9 /* WebCoreTypedArrayController.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F0E009C26F92D8400ACE9C6 /* ScrollAnimationMomentum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0E009A26F92D7B00ACE9C6 /* ScrollAnimationMomentum.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F11781822E3C47F008BD570 /* FrameIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F11781622E3C47E008BD570 /* FrameIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F11A54F0F39233100C37884 /* RenderSelectionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F11A54F0F39233100C37884 /* RenderSelectionGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F11A54E0F39233100C37884 /* RenderSelectionGeometry.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F13163E16ED0CC80035CC04 /* PlatformCAFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F13163D16ED0CC80035CC04 /* PlatformCAFilters.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F15ED5C1B7EC7C500EDDFEB /* WillChangeData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15ED5A1B7EC7C500EDDFEB /* WillChangeData.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F1774801378B772009DA76A /* ScrollAnimatorIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F17747E1378B771009DA76A /* ScrollAnimatorIOS.h */; };
Expand Down Expand Up @@ -6952,7 +6952,7 @@
0F0E009A26F92D7B00ACE9C6 /* ScrollAnimationMomentum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScrollAnimationMomentum.h; sourceTree = "<group>"; };
0F0E009B26F92D7B00ACE9C6 /* ScrollAnimationMomentum.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollAnimationMomentum.cpp; sourceTree = "<group>"; };
0F11781622E3C47E008BD570 /* FrameIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameIdentifier.h; sourceTree = "<group>"; };
0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSelectionInfo.h; sourceTree = "<group>"; };
0F11A54E0F39233100C37884 /* RenderSelectionGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSelectionGeometry.h; sourceTree = "<group>"; };
0F13163D16ED0CC80035CC04 /* PlatformCAFilters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCAFilters.h; sourceTree = "<group>"; };
0F13163F16ED0CDE0035CC04 /* PlatformCAFiltersCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformCAFiltersCocoa.mm; sourceTree = "<group>"; };
0F15ED591B7EC7C500EDDFEB /* WillChangeData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillChangeData.cpp; sourceTree = "<group>"; };
Expand Down Expand Up @@ -11844,7 +11844,7 @@
58B2FA022232D60A00938D63 /* JSResizeObserverEntry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSResizeObserverEntry.h; sourceTree = "<group>"; };
58B2FA032232D60B00938D63 /* JSResizeObserver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSResizeObserver.cpp; sourceTree = "<group>"; };
58CD35CA18EB4C3900B9F3AC /* FloatSizeHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatSizeHash.h; sourceTree = "<group>"; };
58DEED8519873FF000888FF3 /* RenderSelectionInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSelectionInfo.cpp; sourceTree = "<group>"; };
58DEED8519873FF000888FF3 /* RenderSelectionGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSelectionGeometry.cpp; sourceTree = "<group>"; };
5905ADBD1302F3CE00F116DF /* XMLTreeViewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLTreeViewer.cpp; sourceTree = "<group>"; };
5905ADBE1302F3CE00F116DF /* XMLTreeViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLTreeViewer.h; sourceTree = "<group>"; };
590E1B4811E4EF4B0069F784 /* DeviceOrientationData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceOrientationData.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -35626,8 +35626,8 @@
BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */,
458FE4071589DF0B005609E6 /* RenderSearchField.cpp */,
458FE4081589DF0B005609E6 /* RenderSearchField.h */,
58DEED8519873FF000888FF3 /* RenderSelectionInfo.cpp */,
0F11A54E0F39233100C37884 /* RenderSelectionInfo.h */,
58DEED8519873FF000888FF3 /* RenderSelectionGeometry.cpp */,
0F11A54E0F39233100C37884 /* RenderSelectionGeometry.h */,
AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */,
AB247A6B0AFD6383003FA5FD /* RenderSlider.h */,
A8DF4AE20980C42C0052981B /* RenderTable.cpp */,
Expand Down Expand Up @@ -40746,7 +40746,7 @@
BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */,
BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */,
458FE40A1589DF0B005609E6 /* RenderSearchField.h in Headers */,
0F11A54F0F39233100C37884 /* RenderSelectionInfo.h in Headers */,
0F11A54F0F39233100C37884 /* RenderSelectionGeometry.h in Headers */,
AB247A6D0AFD6383003FA5FD /* RenderSlider.h in Headers */,
BC8C8FAE0DDCD31B00B592F4 /* RenderStyle.h in Headers */,
BC5EB6680E81CB7100B25965 /* RenderStyleConstants.h in Headers */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,26 @@
*/

#include "config.h"
#include "RenderSelectionInfo.h"
#include "RenderSelectionGeometry.h"

#include "RenderText.h"

namespace WebCore {

RenderSelectionInfoBase::RenderSelectionInfoBase(RenderObject& renderer)
RenderSelectionGeometryBase::RenderSelectionGeometryBase(RenderObject& renderer)
: m_renderer(renderer)
, m_repaintContainer(renderer.containerForRepaint().renderer)
, m_state(renderer.selectionState())
{
}

void RenderSelectionInfoBase::repaintRectangle(const LayoutRect& repaintRect)
void RenderSelectionGeometryBase::repaintRectangle(const LayoutRect& repaintRect)
{
m_renderer.repaintUsingContainer(m_repaintContainer, enclosingIntRect(repaintRect));
}

RenderSelectionInfo::RenderSelectionInfo(RenderObject& renderer, bool clipToVisibleContent)
: RenderSelectionInfoBase(renderer)
RenderSelectionGeometry::RenderSelectionGeometry(RenderObject& renderer, bool clipToVisibleContent)
: RenderSelectionGeometryBase(renderer)
{
if (renderer.canUpdateSelectionOnRootLineBoxes()) {
if (is<RenderText>(renderer))
Expand All @@ -53,18 +53,18 @@ RenderSelectionInfo::RenderSelectionInfo(RenderObject& renderer, bool clipToVisi
}
}

void RenderSelectionInfo::repaint()
void RenderSelectionGeometry::repaint()
{
repaintRectangle(m_rect);
}

RenderBlockSelectionInfo::RenderBlockSelectionInfo(RenderBlock& renderer)
: RenderSelectionInfoBase(renderer)
RenderBlockSelectionGeometry::RenderBlockSelectionGeometry(RenderBlock& renderer)
: RenderSelectionGeometryBase(renderer)
, m_rects(renderer.canUpdateSelectionOnRootLineBoxes() ? renderer.selectionGapRectsForRepaint(m_repaintContainer) : GapRects())
{
}

void RenderBlockSelectionInfo::repaint()
void RenderBlockSelectionGeometry::repaint()
{
repaintRectangle(m_rects);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@

namespace WebCore {

class RenderSelectionInfoBase {
WTF_MAKE_NONCOPYABLE(RenderSelectionInfoBase); WTF_MAKE_FAST_ALLOCATED;
class RenderSelectionGeometryBase {
WTF_MAKE_NONCOPYABLE(RenderSelectionGeometryBase); WTF_MAKE_FAST_ALLOCATED;
public:
explicit RenderSelectionInfoBase(RenderObject& renderer);
explicit RenderSelectionGeometryBase(RenderObject& renderer);
const RenderLayerModelObject* repaintContainer() const { return m_repaintContainer; }
RenderObject::HighlightState state() const { return m_state; }

Expand All @@ -48,9 +48,9 @@ class RenderSelectionInfoBase {
};

// This struct is used when the selection changes to cache the old and new state of the selection for each RenderObject.
class RenderSelectionInfo : public RenderSelectionInfoBase {
class RenderSelectionGeometry : public RenderSelectionGeometryBase {
public:
RenderSelectionInfo(RenderObject& renderer, bool clipToVisibleContent);
RenderSelectionGeometry(RenderObject& renderer, bool clipToVisibleContent);

void repaint();
const Vector<FloatQuad>& collectedSelectionQuads() const { return m_collectedSelectionQuads; }
Expand All @@ -63,9 +63,9 @@ class RenderSelectionInfo : public RenderSelectionInfoBase {


// This struct is used when the selection changes to cache the old and new state of the selection for each RenderBlock.
class RenderBlockSelectionInfo : public RenderSelectionInfoBase {
class RenderBlockSelectionGeometry : public RenderSelectionGeometryBase {
public:
explicit RenderBlockSelectionInfo(RenderBlock& renderer);
explicit RenderBlockSelectionGeometry(RenderBlock& renderer);

void repaint();
GapRects rects() const { return m_rects; }
Expand Down
40 changes: 20 additions & 20 deletions Source/WebCore/rendering/SelectionRangeData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ namespace {

struct SelectionContext {

using RendererMap = HashMap<RenderObject*, std::unique_ptr<RenderSelectionInfo>>;
using RenderBlockMap = HashMap<const RenderBlock*, std::unique_ptr<RenderBlockSelectionInfo>>;
using RendererMap = HashMap<RenderObject*, std::unique_ptr<RenderSelectionGeometry>>;
using RenderBlockMap = HashMap<const RenderBlock*, std::unique_ptr<RenderBlockSelectionGeometry>>;

unsigned startOffset;
unsigned endOffset;
Expand Down Expand Up @@ -92,13 +92,13 @@ static SelectionContext collectSelectionData(const RenderRange& selection, bool
while (start && start != stop) {
if (isValidRendererForSelection(*start, selection)) {
// Blocks are responsible for painting line gaps and margin gaps. They must be examined as well.
oldSelectionData.renderers.set(start, makeUnique<RenderSelectionInfo>(*start, true));
oldSelectionData.renderers.set(start, makeUnique<RenderSelectionGeometry>(*start, true));
if (repaintDifference) {
for (auto* block = containingBlockBelowView(*start); block; block = containingBlockBelowView(*block)) {
auto& blockInfo = oldSelectionData.blocks.add(block, nullptr).iterator->value;
if (blockInfo)
break;
blockInfo = makeUnique<RenderBlockSelectionInfo>(*block);
blockInfo = makeUnique<RenderBlockSelectionGeometry>(*block);
}
}
}
Expand Down Expand Up @@ -151,12 +151,12 @@ void SelectionRangeData::repaint() const
continue;
if (renderer->selectionState() == RenderObject::HighlightState::None)
continue;
RenderSelectionInfo(*renderer, true).repaint();
RenderSelectionGeometry(*renderer, true).repaint();
// Blocks are responsible for painting line gaps and margin gaps. They must be examined as well.
for (auto* block = containingBlockBelowView(*renderer); block; block = containingBlockBelowView(*block)) {
if (!processedBlocks.add(*block).isNewEntry)
break;
RenderSelectionInfo(*block, true).repaint();
RenderSelectionGeometry(*block, true).repaint();
}
}
}
Expand All @@ -176,17 +176,17 @@ IntRect SelectionRangeData::collectBounds(ClipToVisibleContent clipToVisibleCont
if ((start->canBeSelectionLeaf() || start == m_renderRange.start() || start == m_renderRange.end())
&& start->selectionState() != RenderObject::HighlightState::None) {
// Blocks are responsible for painting line gaps and margin gaps. They must be examined as well.
renderers.set(start, makeUnique<RenderSelectionInfo>(*start, clipToVisibleContent == ClipToVisibleContent::Yes));
renderers.set(start, makeUnique<RenderSelectionGeometry>(*start, clipToVisibleContent == ClipToVisibleContent::Yes));
LOG_WITH_STREAM(Selection, stream << " added start " << *start << " with rect " << renderers.get(start)->rect());

auto* block = start->containingBlock();
while (block && !is<RenderView>(*block)) {
LOG_WITH_STREAM(Scrolling, stream << " added block " << *block);
std::unique_ptr<RenderSelectionInfo>& blockInfo = renderers.add(block, nullptr).iterator->value;
if (blockInfo)
auto& blockSelectionGeometry = renderers.add(block, nullptr).iterator->value;
if (blockSelectionGeometry)
break;
blockInfo = makeUnique<RenderSelectionInfo>(*block, clipToVisibleContent == ClipToVisibleContent::Yes);
LOG_WITH_STREAM(Selection, stream << " added containing block " << *block << " with rect " << blockInfo->rect());
blockSelectionGeometry = makeUnique<RenderSelectionGeometry>(*block, clipToVisibleContent == ClipToVisibleContent::Yes);
LOG_WITH_STREAM(Selection, stream << " added containing block " << *block << " with rect " << blockSelectionGeometry->rect());
block = block->containingBlock();
}
}
Expand All @@ -196,7 +196,7 @@ IntRect SelectionRangeData::collectBounds(ClipToVisibleContent clipToVisibleCont
// Now create a single bounding box rect that encloses the whole selection.
LayoutRect selectionRect;
for (auto& info : renderers.values()) {
// RenderSelectionInfo::rect() is in the coordinates of the repaintContainer, so map to page coordinates.
// RenderSelectionGeometry::rect() is in the coordinates of the repaintContainer, so map to page coordinates.
LayoutRect currentRect = info->rect();
if (currentRect.isEmpty())
continue;
Expand Down Expand Up @@ -255,23 +255,23 @@ void SelectionRangeData::apply(const RenderRange& newSelection, RepaintMode bloc
selectionIterator = RenderRangeIterator(selectionStart);
for (auto* currentRenderer = selectionStart; currentRenderer && currentRenderer != selectionEnd; currentRenderer = selectionIterator.next()) {
if (isValidRendererForSelection(*currentRenderer, m_renderRange)) {
std::unique_ptr<RenderSelectionInfo> selectionInfo = makeUnique<RenderSelectionInfo>(*currentRenderer, true);
auto selectionGeometry = makeUnique<RenderSelectionGeometry>(*currentRenderer, true);
#if ENABLE(SERVICE_CONTROLS)
for (auto& quad : selectionInfo->collectedSelectionQuads())
m_selectionGeometryGatherer.addQuad(selectionInfo->repaintContainer(), quad);
for (auto& quad : selectionGeometry->collectedSelectionQuads())
m_selectionGeometryGatherer.addQuad(selectionGeometry->repaintContainer(), quad);
if (!currentRenderer->isTextOrLineBreak())
m_selectionGeometryGatherer.setTextOnly(false);
#endif
newSelectedRenderers.set(currentRenderer, WTFMove(selectionInfo));
newSelectedRenderers.set(currentRenderer, WTFMove(selectionGeometry));
auto* containingBlock = currentRenderer->containingBlock();
while (containingBlock && !is<RenderView>(*containingBlock)) {
std::unique_ptr<RenderBlockSelectionInfo>& blockInfo = newSelectedBlocks.add(containingBlock, nullptr).iterator->value;
if (blockInfo)
auto& blockSelectionGeometry = newSelectedBlocks.add(containingBlock, nullptr).iterator->value;
if (blockSelectionGeometry)
break;
blockInfo = makeUnique<RenderBlockSelectionInfo>(*containingBlock);
blockSelectionGeometry = makeUnique<RenderBlockSelectionGeometry>(*containingBlock);
containingBlock = containingBlock->containingBlock();
#if ENABLE(SERVICE_CONTROLS)
m_selectionGeometryGatherer.addGapRects(blockInfo->repaintContainer(), blockInfo->rects());
m_selectionGeometryGatherer.addGapRects(blockSelectionGeometry->repaintContainer(), blockSelectionGeometry->rects());
#endif
}
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/rendering/SelectionRangeData.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#pragma once

#include "HighlightData.h"
#include "RenderSelectionInfo.h"
#include "RenderSelectionGeometry.h"

#if ENABLE(SERVICE_CONTROLS)
#include "SelectionGeometryGatherer.h"
Expand Down

0 comments on commit 5b2b956

Please sign in to comment.