Skip to content

Commit

Permalink
[IFC][Cleanup] Move min/max content size LayoutUnit rounding to Inlin…
Browse files Browse the repository at this point in the history
…eFormattingContext level

https://bugs.webkit.org/show_bug.cgi?id=265525

Reviewed by Antti Koivisto.

Use InlineLayoutUnit inside IFC and covert to LayoutUnit only at API boundary.

* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicSizes):
(WebCore::Layout::InlineFormattingContext::maximumContentSize):
* Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.cpp:
(WebCore::Layout::IntrinsicWidthHandler::minimumContentSize):
(WebCore::Layout::IntrinsicWidthHandler::maximumContentSize):
* Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.h:

Canonical link: https://commits.webkit.org/271334@main
  • Loading branch information
alanbaradlay committed Nov 30, 2023
1 parent 2abb6ab commit 6bc2bf1
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ IntrinsicWidthConstraints InlineFormattingContext::computedIntrinsicSizes(const
inlineContentCache.resetMinimumMaximumContentSizes();

if (inlineContentCache.minimumContentSize() && inlineContentCache.maximumContentSize())
return { LayoutUnit { *inlineContentCache.minimumContentSize() }, LayoutUnit { *inlineContentCache.maximumContentSize() } };
return { ceiledLayoutUnit(*inlineContentCache.minimumContentSize()), ceiledLayoutUnit(*inlineContentCache.maximumContentSize()) };

rebuildInlineItemListIfNeeded(lineDamage);
auto& inlineItemList = inlineContentCache.inlineItems().content();
Expand All @@ -178,17 +178,17 @@ IntrinsicWidthConstraints InlineFormattingContext::computedIntrinsicSizes(const
inlineContentCache.setMaximumIntrinsicWidthLayoutResult(WTFMove(*intrinsicWidthHandler.maximumIntrinsicWidthResult()));
}

return { LayoutUnit { *inlineContentCache.minimumContentSize() }, LayoutUnit { *inlineContentCache.maximumContentSize() } };
return { ceiledLayoutUnit(*inlineContentCache.minimumContentSize()), ceiledLayoutUnit(*inlineContentCache.maximumContentSize()) };
}

LayoutUnit InlineFormattingContext::maximumContentSize()
{
auto& inlineContentCache = this->inlineContentCache();
if (auto maximumContentSize = inlineContentCache.maximumContentSize())
return LayoutUnit { *maximumContentSize };
return ceiledLayoutUnit(*maximumContentSize);

auto mayUseSimplifiedTextOnlyInlineLayout = TextOnlySimpleLineBuilder::isEligibleForSimplifiedTextOnlyInlineLayout(root(), inlineContentCache);
return IntrinsicWidthHandler { *this, inlineContentCache.inlineItems().content(), mayUseSimplifiedTextOnlyInlineLayout }.maximumContentSize();
return ceiledLayoutUnit(IntrinsicWidthHandler { *this, inlineContentCache.inlineItems().content(), mayUseSimplifiedTextOnlyInlineLayout }.maximumContentSize());
}

static bool mayExitFromPartialLayout(const InlineDamage& lineDamage, size_t lineIndex, const InlineDisplay::Boxes& newContent)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ IntrinsicWidthHandler::IntrinsicWidthHandler(InlineFormattingContext& inlineForm
{
}

LayoutUnit IntrinsicWidthHandler::minimumContentSize()
InlineLayoutUnit IntrinsicWidthHandler::minimumContentSize()
{
auto minimumContentSize = InlineLayoutUnit { };

Expand All @@ -88,10 +88,10 @@ LayoutUnit IntrinsicWidthHandler::minimumContentSize()
minimumContentSize = computedIntrinsicWidthForConstraint(IntrinsicWidthMode::Minimum, lineBuilder, MayCacheLayoutResult::No);
}

return ceiledLayoutUnit(minimumContentSize);
return minimumContentSize;
}

LayoutUnit IntrinsicWidthHandler::maximumContentSize()
InlineLayoutUnit IntrinsicWidthHandler::maximumContentSize()
{
auto mayCacheLayoutResult = m_mayUseSimplifiedTextOnlyInlineLayout ? MayCacheLayoutResult::Yes : MayCacheLayoutResult::No;
auto maximumContentSize = InlineLayoutUnit { };
Expand All @@ -106,7 +106,7 @@ LayoutUnit IntrinsicWidthHandler::maximumContentSize()
maximumContentSize = computedIntrinsicWidthForConstraint(IntrinsicWidthMode::Maximum, lineBuilder, mayCacheLayoutResult);
}

return ceiledLayoutUnit(maximumContentSize);
return maximumContentSize;
}

InlineLayoutUnit IntrinsicWidthHandler::computedIntrinsicWidthForConstraint(IntrinsicWidthMode intrinsicWidthMode, AbstractLineBuilder& lineBuilder, MayCacheLayoutResult mayCacheLayoutResult)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ class IntrinsicWidthHandler {
public:
IntrinsicWidthHandler(InlineFormattingContext&, const InlineItemList&, bool mayUseSimplifiedTextOnlyInlineLayout);

LayoutUnit minimumContentSize();
LayoutUnit maximumContentSize();
InlineLayoutUnit minimumContentSize();
InlineLayoutUnit maximumContentSize();

struct LineBreakingResult {
InlineLayoutUnit constraint;
Expand Down

0 comments on commit 6bc2bf1

Please sign in to comment.