Skip to content

Commit

Permalink
[IFC] Rename TextOnlyLineBuilder to TextOnlySimpleLineBuilder
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=260261

Reviewed by Tim Nguyen.

This builder is supposed to stay simple, covering only the most common cases (properties).

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowAndFloatContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicSizes):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
* Source/WebCore/layout/formattingContexts/inline/TextOnlySimpleLineBuilder.cpp: Renamed from Source/WebCore/layout/formattingContexts/inline/TextOnlyLineBuilder.cpp.
(WebCore::Layout::inlineTextItemWidth):
(WebCore::Layout::placedInlineItemEnd):
(WebCore::Layout::isLastLineWithInlineContent):
(WebCore::Layout::appendInlineTextItem):
(WebCore::Layout::consumeTrailingLineBreakIfApplicable):
(WebCore::Layout::TextOnlySimpleLineBuilder::TextOnlySimpleLineBuilder):
(WebCore::Layout::TextOnlySimpleLineBuilder::layoutInlineContent):
(WebCore::Layout::TextOnlySimpleLineBuilder::initialize):
(WebCore::Layout::TextOnlySimpleLineBuilder::placeInlineTextContent):
(WebCore::Layout::TextOnlySimpleLineBuilder::placeNonWrappingInlineTextContent):
(WebCore::Layout::TextOnlySimpleLineBuilder::handleInlineTextContent):
(WebCore::Layout::TextOnlySimpleLineBuilder::handleLineEnding):
(WebCore::Layout::TextOnlySimpleLineBuilder::rebuildLine):
(WebCore::Layout::TextOnlySimpleLineBuilder::root const):
(WebCore::Layout::TextOnlySimpleLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout):
* Source/WebCore/layout/formattingContexts/inline/TextOnlySimpleLineBuilder.h: Renamed from Source/WebCore/layout/formattingContexts/inline/TextOnlyLineBuilder.h.
(WebCore::Layout::TextOnlySimpleLineBuilder::isFirstFormattedLine const):
(WebCore::Layout::TextOnlySimpleLineBuilder::formattingContext const):

Canonical link: https://commits.webkit.org/266965@main
  • Loading branch information
alanbaradlay committed Aug 16, 2023
1 parent 46c2731 commit 641fced
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Source/WebCore/Sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1713,7 +1713,7 @@ layout/formattingContexts/inline/InlineLineBoxBuilder.cpp
layout/formattingContexts/inline/InlineLineBuilder.cpp
layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp
layout/formattingContexts/inline/InlineTextItem.cpp
layout/formattingContexts/inline/TextOnlyLineBuilder.cpp
layout/formattingContexts/inline/TextOnlySimpleLineBuilder.cpp
layout/formattingContexts/inline/display/InlineDisplayContent.cpp
layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp
layout/formattingContexts/inline/display/InlineDisplayLineBuilder.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 @@ -5250,7 +5250,7 @@
DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */ = {isa = PBXBuildFile; fileRef = A80E6CCE0A1989CA007FB8C5 /* CSSUnknownRule.h */; settings = {ATTRIBUTES = (Private, ); }; };
DD8A30B4291DFC8F00AD537C /* BlockLayoutState.h in Headers */ = {isa = PBXBuildFile; fileRef = DD8A30B3291DFC8F00AD537C /* BlockLayoutState.h */; settings = {ATTRIBUTES = (Private, ); }; };
DDA210EA29FC46EE00C712C3 /* InlineLayoutState.h in Headers */ = {isa = PBXBuildFile; fileRef = DDA210E929FC46ED00C712C3 /* InlineLayoutState.h */; settings = {ATTRIBUTES = (Private, ); }; };
DDA3D5CF2A7D844D000ECEE1 /* TextOnlyLineBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = DDA3D5CE2A7D844D000ECEE1 /* TextOnlyLineBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; };
DDA3D5CF2A7D844D000ECEE1 /* TextOnlySimpleLineBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = DDA3D5CE2A7D844D000ECEE1 /* TextOnlySimpleLineBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; };
DDB04F3A278E5539008D3678 /* libWTF.a in Product Dependencies */ = {isa = PBXBuildFile; fileRef = DDB04F39278E5531008D3678 /* libWTF.a */; };
DDC8E9562A3DE60400FF8ECF /* LogicalFlexItem.h in Headers */ = {isa = PBXBuildFile; fileRef = DDC8E9552A3DE60400FF8ECF /* LogicalFlexItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
DDDFE83E2846ECE2006F1EE5 /* cocoa in Copy PDF.js Extras */ = {isa = PBXBuildFile; fileRef = DDDFE83B2846ECD3006F1EE5 /* cocoa */; };
Expand Down Expand Up @@ -18233,8 +18233,8 @@
DD8A30B3291DFC8F00AD537C /* BlockLayoutState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockLayoutState.h; sourceTree = "<group>"; };
DD93A9E129C2A60300ED671E /* InlineDisplayContent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineDisplayContent.cpp; sourceTree = "<group>"; };
DDA210E929FC46ED00C712C3 /* InlineLayoutState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineLayoutState.h; sourceTree = "<group>"; };
DDA3D5CE2A7D844D000ECEE1 /* TextOnlyLineBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextOnlyLineBuilder.h; sourceTree = "<group>"; };
DDA3D5D02A7D847E000ECEE1 /* TextOnlyLineBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextOnlyLineBuilder.cpp; sourceTree = "<group>"; };
DDA3D5CE2A7D844D000ECEE1 /* TextOnlySimpleLineBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextOnlySimpleLineBuilder.h; sourceTree = "<group>"; };
DDA3D5D02A7D847E000ECEE1 /* TextOnlySimpleLineBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextOnlySimpleLineBuilder.cpp; sourceTree = "<group>"; };
DDB04F39278E5531008D3678 /* libWTF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; };
DDC8E9552A3DE60400FF8ECF /* LogicalFlexItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogicalFlexItem.h; sourceTree = "<group>"; };
DDDFE83A2846ECD3006F1EE5 /* adwaita */ = {isa = PBXFileReference; lastKnownFileType = folder; path = adwaita; sourceTree = "<group>"; };
Expand Down Expand Up @@ -21207,8 +21207,8 @@
6F360E4E23999420001512A7 /* InlineSoftLineBreakItem.h */,
6F1CC1DC225F8B4100720AD2 /* InlineTextItem.cpp */,
6F1CC1DD225F8B4200720AD2 /* InlineTextItem.h */,
DDA3D5D02A7D847E000ECEE1 /* TextOnlyLineBuilder.cpp */,
DDA3D5CE2A7D844D000ECEE1 /* TextOnlyLineBuilder.h */,
DDA3D5D02A7D847E000ECEE1 /* TextOnlySimpleLineBuilder.cpp */,
DDA3D5CE2A7D844D000ECEE1 /* TextOnlySimpleLineBuilder.h */,
);
path = inline;
sourceTree = "<group>";
Expand Down Expand Up @@ -41311,7 +41311,7 @@
86AA527C2937BD620065399E /* TextManipulationToken.h in Headers */,
BCEF45E90E687767001C1287 /* TextMetrics.h in Headers */,
E4D988B417BFD1F60084FB88 /* TextNodeTraversal.h in Headers */,
DDA3D5CF2A7D844D000ECEE1 /* TextOnlyLineBuilder.h in Headers */,
DDA3D5CF2A7D844D000ECEE1 /* TextOnlySimpleLineBuilder.h in Headers */,
1C18DA59181AF6A500C4EF22 /* TextPainter.h in Headers */,
E4C91A0E1802343100A17F6D /* TextPaintStyle.h in Headers */,
CE212158240DBEB9006ED443 /* TextPlaceholderElement.h in Headers */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
#include "LayoutState.h"
#include "Logging.h"
#include "RenderStyleInlines.h"
#include "TextOnlyLineBuilder.h"
#include "TextOnlySimpleLineBuilder.h"
#include "TextUtil.h"
#include <wtf/IsoMallocInlines.h>
#include <wtf/text/TextStream.h>
Expand Down Expand Up @@ -96,8 +96,8 @@ InlineLayoutResult InlineFormattingContext::layoutInFlowAndFloatContent(const Co
return PreviousLine { lastLineIndex, { }, { }, { }, { } };
};

if (TextOnlyLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(root(), formattingState(), &floatingState)) {
auto simplifiedLineBuilder = TextOnlyLineBuilder { *this, constraints.horizontal(), inlineItems };
if (TextOnlySimpleLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(root(), formattingState(), &floatingState)) {
auto simplifiedLineBuilder = TextOnlySimpleLineBuilder { *this, constraints.horizontal(), inlineItems };
return lineLayout(simplifiedLineBuilder, inlineItems, needsLayoutRange, previousLine(), constraints, inlineLayoutState, lineDamage);
}
auto lineBuilder = LineBuilder { *this, inlineLayoutState, floatingState, constraints.horizontal(), inlineItems };
Expand Down Expand Up @@ -130,8 +130,8 @@ IntrinsicWidthConstraints InlineFormattingContext::computedIntrinsicSizes(const
};

auto intrinsicSizes = IntrinsicWidthConstraints { };
if (TextOnlyLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(root(), inlineFormattingState)) {
auto simplifiedLineBuilder = TextOnlyLineBuilder { *this, { }, inlineFormattingState.inlineItems() };
if (TextOnlySimpleLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(root(), inlineFormattingState)) {
auto simplifiedLineBuilder = TextOnlySimpleLineBuilder { *this, { }, inlineFormattingState.inlineItems() };
intrinsicSizes = { computedIntrinsicValue(IntrinsicWidthMode::Minimum, simplifiedLineBuilder), computedIntrinsicValue(IntrinsicWidthMode::Maximum, simplifiedLineBuilder, MayCacheLayoutResult::Yes) };
} else {
auto floatingState = FloatingState { root() };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class Line {
void initialize(const Vector<InlineItem>& lineSpanningInlineBoxes, bool isFirstFormattedLine);

void append(const InlineItem&, const RenderStyle&, InlineLayoutUnit logicalWidth);
// Reserved for TextOnlyLineBuilder
// Reserved for TextOnlySimpleLineBuilder
void appendTextFast(const InlineTextItem&, const RenderStyle&, InlineLayoutUnit logicalWidth);

bool hasContent() const;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/

#include "config.h"
#include "TextOnlyLineBuilder.h"
#include "TextOnlySimpleLineBuilder.h"

namespace WebCore {
namespace Layout {
Expand Down Expand Up @@ -87,15 +87,15 @@ static inline bool consumeTrailingLineBreakIfApplicable(const TextOnlyLineBreakR
return true;
}

TextOnlyLineBuilder::TextOnlyLineBuilder(const InlineFormattingContext& inlineFormattingContext, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems)
TextOnlySimpleLineBuilder::TextOnlySimpleLineBuilder(const InlineFormattingContext& inlineFormattingContext, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems)
: m_inlineFormattingContext(inlineFormattingContext)
, m_rootHorizontalConstraints(rootHorizontalConstraints)
, m_line(inlineFormattingContext)
, m_inlineItems(inlineItems)
{
}

LineLayoutResult TextOnlyLineBuilder::layoutInlineContent(const LineInput& lineInput, const std::optional<PreviousLine>& previousLine)
LineLayoutResult TextOnlySimpleLineBuilder::layoutInlineContent(const LineInput& lineInput, const std::optional<PreviousLine>& previousLine)
{
initialize(lineInput.needsLayoutRange, lineInput.initialLogicalRect, previousLine);
auto placedContentEnd = TextUtil::isWrappingAllowed(root().style()) ? placeInlineTextContent(lineInput.needsLayoutRange) : placeNonWrappingInlineTextContent(lineInput.needsLayoutRange);
Expand All @@ -116,7 +116,7 @@ LineLayoutResult TextOnlyLineBuilder::layoutInlineContent(const LineInput& lineI
};
}

void TextOnlyLineBuilder::initialize(const InlineItemRange& layoutRange, const InlineRect& initialLogicalRect, const std::optional<PreviousLine>& previousLine)
void TextOnlySimpleLineBuilder::initialize(const InlineItemRange& layoutRange, const InlineRect& initialLogicalRect, const std::optional<PreviousLine>& previousLine)
{
ASSERT(!layoutRange.isEmpty() || (previousLine && !previousLine->suspendedFloats.isEmpty()));
auto partialLeadingTextItem = [&]() -> std::optional<InlineTextItem> {
Expand All @@ -140,7 +140,7 @@ void TextOnlyLineBuilder::initialize(const InlineItemRange& layoutRange, const I
m_wrapOpportunityList = { };
}

InlineItemPosition TextOnlyLineBuilder::placeInlineTextContent(const InlineItemRange& layoutRange)
InlineItemPosition TextOnlySimpleLineBuilder::placeInlineTextContent(const InlineItemRange& layoutRange)
{
auto candidateContent = InlineContentBreaker::ContinuousContent { };
auto isFirstFormattedLine = this->isFirstFormattedLine();
Expand Down Expand Up @@ -194,7 +194,7 @@ InlineItemPosition TextOnlyLineBuilder::placeInlineTextContent(const InlineItemR
return placedContentEnd;
}

InlineItemPosition TextOnlyLineBuilder::placeNonWrappingInlineTextContent(const InlineItemRange& layoutRange)
InlineItemPosition TextOnlySimpleLineBuilder::placeNonWrappingInlineTextContent(const InlineItemRange& layoutRange)
{
ASSERT(!TextUtil::isWrappingAllowed(root().style()));

Expand Down Expand Up @@ -236,7 +236,7 @@ InlineItemPosition TextOnlyLineBuilder::placeNonWrappingInlineTextContent(const
return placedContentEnd;
}

TextOnlyLineBreakResult TextOnlyLineBuilder::handleInlineTextContent(const InlineContentBreaker::ContinuousContent& candidateContent, const InlineItemRange& layoutRange)
TextOnlyLineBreakResult TextOnlySimpleLineBuilder::handleInlineTextContent(const InlineContentBreaker::ContinuousContent& candidateContent, const InlineItemRange& layoutRange)
{
auto availableWidth = (m_lineLogicalRect.width() + LayoutUnit::epsilon()) - m_line.contentLogicalRight();
auto lineStatus = InlineContentBreaker::LineStatus { m_line.contentLogicalRight(), availableWidth, m_line.trimmableTrailingWidth(), m_line.trailingSoftHyphenWidth(), m_line.isTrailingRunFullyTrimmable(), m_line.hasContentOrListMarker(), !m_wrapOpportunityList.isEmpty() };
Expand Down Expand Up @@ -307,7 +307,7 @@ TextOnlyLineBreakResult TextOnlyLineBuilder::handleInlineTextContent(const Inlin
return { InlineContentBreaker::IsEndOfLine::Yes };
}

void TextOnlyLineBuilder::handleLineEnding(InlineItemPosition placedContentEnd, size_t layoutRangeEndIndex)
void TextOnlySimpleLineBuilder::handleLineEnding(InlineItemPosition placedContentEnd, size_t layoutRangeEndIndex)
{
auto horizontalAvailableSpace = m_lineLogicalRect.width();
auto isLastLine = isLastLineWithInlineContent(placedContentEnd, layoutRangeEndIndex);
Expand All @@ -321,7 +321,7 @@ void TextOnlyLineBuilder::handleLineEnding(InlineItemPosition placedContentEnd,
m_line.handleTrailingHangingContent(intrinsicWidthMode(), horizontalAvailableSpace, isLastLine);
}

size_t TextOnlyLineBuilder::rebuildLine(const InlineItemRange& layoutRange, const InlineTextItem& trailingInlineItem)
size_t TextOnlySimpleLineBuilder::rebuildLine(const InlineItemRange& layoutRange, const InlineTextItem& trailingInlineItem)
{
auto isFirstFormattedLine = this->isFirstFormattedLine();
m_line.initialize({ }, isFirstFormattedLine);
Expand All @@ -344,12 +344,12 @@ size_t TextOnlyLineBuilder::rebuildLine(const InlineItemRange& layoutRange, cons
return { };
}

const ElementBox& TextOnlyLineBuilder::root() const
const ElementBox& TextOnlySimpleLineBuilder::root() const
{
return formattingContext().root();
}

bool TextOnlyLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(const ElementBox& rootBox, const InlineFormattingState& inlineFormattingState, const FloatingState* floatingState)
bool TextOnlySimpleLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(const ElementBox& rootBox, const InlineFormattingState& inlineFormattingState, const FloatingState* floatingState)
{
if (floatingState && !floatingState->isEmpty())
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ namespace Layout {
class InlineContentBreaker;
struct TextOnlyLineBreakResult;

class TextOnlyLineBuilder : public AbstractLineBuilder {
class TextOnlySimpleLineBuilder : public AbstractLineBuilder {
public:
TextOnlyLineBuilder(const InlineFormattingContext&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&);
TextOnlySimpleLineBuilder(const InlineFormattingContext&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&);
LineLayoutResult layoutInlineContent(const LineInput&, const std::optional<PreviousLine>&) final;

static bool isEligibleForSimplifiedTextOnlyInlineLayout(const ElementBox& root, const InlineFormattingState&, const FloatingState* = nullptr);
Expand Down

0 comments on commit 641fced

Please sign in to comment.