[LFC][IFC] Use explicit 0_lu value instead of LayoutUnit { }
https://bugs.webkit.org/show_bug.cgi?id=204964
<rdar://problem/57714095>
Reviewed by Antti Koivisto.
From geometry computation point of view, it is really the 0 value and not an empty value.
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):
* layout/inlineformatting/InlineLineBox.h:
(WebCore::Layout::LineBox::resetDescent):
(WebCore::Layout::LineBox::resetBaseline):
(WebCore::Layout::LineBox::Baseline::reset):
* layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::TrailingTrimmableContent::reset):
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::ContinousContent::close):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
(WebCore::Layout::LineBuilder::TrimmableContent::trimTrailingRun):
(WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const):
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):
* layout/inlineformatting/InlineLineBuilder.h:
(WebCore::Layout::LineBuilder::TrimmableContent::reset):
* layout/inlineformatting/LineLayoutContext.cpp:
(WebCore::Layout::inlineItemWidth):
* layout/inlineformatting/text/TextUtil.h:
(WebCore::Layout::TextUtil::width): Deleted.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253225 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 5241606..293ff55 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,43 @@
+2019-12-06 Zalan Bujtas <zalan@apple.com>
+
+ [LFC][IFC] Use explicit 0_lu value instead of LayoutUnit { }
+ https://bugs.webkit.org/show_bug.cgi?id=204964
+ <rdar://problem/57714095>
+
+ Reviewed by Antti Koivisto.
+
+ From geometry computation point of view, it is really the 0 value and not an empty value.
+
+ * layout/inlineformatting/InlineFormattingContext.cpp:
+ (WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
+ * layout/inlineformatting/InlineFormattingContextQuirks.cpp:
+ (WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):
+ * layout/inlineformatting/InlineLineBox.h:
+ (WebCore::Layout::LineBox::resetDescent):
+ (WebCore::Layout::LineBox::resetBaseline):
+ (WebCore::Layout::LineBox::Baseline::reset):
+ * layout/inlineformatting/InlineLineBreaker.cpp:
+ (WebCore::Layout::LineBreaker::wordBreakingBehavior const):
+ (WebCore::Layout::LineBreaker::Content::reset):
+ (WebCore::Layout::LineBreaker::Content::TrailingTrimmableContent::reset):
+ * layout/inlineformatting/InlineLineBuilder.cpp:
+ (WebCore::Layout::LineBuilder::ContinousContent::close):
+ (WebCore::Layout::LineBuilder::Run::Run):
+ (WebCore::Layout::LineBuilder::initialize):
+ (WebCore::Layout::LineBuilder::close):
+ (WebCore::Layout::LineBuilder::alignContentVertically):
+ (WebCore::Layout::LineBuilder::appendLineBreak):
+ (WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
+ (WebCore::Layout::LineBuilder::TrimmableContent::trimTrailingRun):
+ (WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const):
+ (WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):
+ * layout/inlineformatting/InlineLineBuilder.h:
+ (WebCore::Layout::LineBuilder::TrimmableContent::reset):
+ * layout/inlineformatting/LineLayoutContext.cpp:
+ (WebCore::Layout::inlineItemWidth):
+ * layout/inlineformatting/text/TextUtil.h:
+ (WebCore::Layout::TextUtil::width): Deleted.
+
2019-12-06 Keith Miller <keith_miller@apple.com>
Remove various .order files.
diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
index b723484..dd84a01 100644
--- a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
@@ -189,7 +189,7 @@
}
Vector<const Box*> formattingContextRootList;
- auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, { } } };
+ auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { 0_lu, 0_lu } };
auto* layoutBox = root().firstInFlowOrFloatingChild();
while (layoutBox) {
if (layoutBox->establishesFormattingContext()) {
@@ -219,7 +219,7 @@
auto contentWidth = (availableWidth ? intrinsicWidths->maximum : intrinsicWidths->minimum) - displayBox.horizontalMarginBorderAndPadding();
displayBox.setContentBoxWidth(contentWidth);
}
- auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, availableWidth } };
+ auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { 0_lu, availableWidth } };
return computedIntrinsicWidthForConstraint(usedHorizontalValues);
};
diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp b/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp
index d13996a..8196417 100644
--- a/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp
+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp
@@ -85,7 +85,7 @@
auto lineHeight = formattingRoot.style().lineHeight();
if (lineHeight.isPercentOrCalculated()) {
- auto initialBaselineOffset = LineBuilder::halfLeadingMetrics(formattingRoot.style().fontMetrics(), { }).ascent();
+ auto initialBaselineOffset = LineBuilder::halfLeadingMetrics(formattingRoot.style().fontMetrics(), 0_lu).ascent();
return { initialBaselineOffset, initialBaselineOffset, LineBox::Baseline { strutBaselineOffset, strutHeight - strutBaselineOffset } };
}
// FIXME: The only reason why we use intValue() here is to match current inline tree (integral)behavior.
diff --git a/Source/WebCore/layout/inlineformatting/InlineLineBox.h b/Source/WebCore/layout/inlineformatting/InlineLineBox.h
index 4b23d78..33c45ce 100644
--- a/Source/WebCore/layout/inlineformatting/InlineLineBox.h
+++ b/Source/WebCore/layout/inlineformatting/InlineLineBox.h
@@ -92,7 +92,7 @@
void setDescentIfGreater(LayoutUnit);
void resetBaseline();
- void resetDescent() { m_baseline.setDescent({ }); }
+ void resetDescent() { m_baseline.setDescent(0_lu); }
void setLogicalTopLeft(LayoutPoint logicalTopLeft) { m_rect.setTopLeft(logicalTopLeft); }
void setLogicalHeight(LayoutUnit logicalHeight) { m_rect.setHeight(logicalHeight); }
@@ -187,7 +187,7 @@
#if !ASSERT_DISABLED
m_hasValidBaselineOffset = true;
#endif
- m_baselineOffset = { };
+ m_baselineOffset = 0_lu;
m_baseline.reset();
}
@@ -223,8 +223,8 @@
m_hasValidAscent = true;
m_hasValidDescent = true;
#endif
- m_ascent = { };
- m_descent = { };
+ m_ascent = 0_lu;
+ m_descent = 0_lu;
}
inline LayoutUnit LineBox::Baseline::ascent() const
diff --git a/Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp b/Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp
index c84d1c1..4a32727 100644
--- a/Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp
+++ b/Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp
@@ -120,7 +120,7 @@
// At this point the available width can very well be negative e.g. when some part of the continuous text content can not be broken into parts ->
// <span style="word-break: keep-all">textcontentwithnobreak</span><span>textcontentwithyesbreak</span>
// When the first span computes longer than the available space, by the time we get to the second span, the adjusted available space becomes negative.
- auto adjustedAvailableWidth = std::max(LayoutUnit { }, availableWidth - runsWidth + run.logicalWidth);
+ auto adjustedAvailableWidth = std::max(0_lu, availableWidth - runsWidth + run.logicalWidth);
if (auto leftSide = tryBreakingTextRun(run, adjustedAvailableWidth))
return BreakingContext::PartialTrailingContent { i, leftSide->length, leftSide->logicalWidth, leftSide->needsHyphen };
return { };
@@ -287,7 +287,7 @@
{
m_continousRuns.clear();
m_trailingTrimmableContent.reset();
- m_width = 0;
+ m_width = 0_lu;
}
void LineBreaker::Content::trim(unsigned newSize)
@@ -325,7 +325,7 @@
void LineBreaker::Content::TrailingTrimmableContent::reset()
{
isFullyTrimmable = false;
- width = { };
+ width = 0_lu;
}
diff --git a/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp b/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp
index b61d1aa..2fe86bd 100644
--- a/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp
+++ b/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp
@@ -102,13 +102,13 @@
++m_expansionOpportunityCount;
textContext.setExpansion({ expansionBehavior, { } });
}
- return { m_initialInlineRun, Display::Rect { 0, m_initialInlineRun.logicalLeft(), m_initialInlineRun.logicalWidth() + m_expandedWidth, { } }, textContext, m_expansionOpportunityCount };
+ return { m_initialInlineRun, Display::Rect { 0_lu, m_initialInlineRun.logicalLeft(), m_initialInlineRun.logicalWidth() + m_expandedWidth, 0_lu }, textContext, m_expansionOpportunityCount };
}
LineBuilder::Run::Run(const InlineItemRun& inlineItemRun)
: m_layoutBox(&inlineItemRun.layoutBox())
, m_type(inlineItemRun.type())
- , m_logicalRect({ { }, inlineItemRun.logicalLeft(), inlineItemRun.logicalWidth(), { } })
+ , m_logicalRect({ 0_lu, inlineItemRun.logicalLeft(), inlineItemRun.logicalWidth(), 0_lu })
, m_textContext(inlineItemRun.textContext())
, m_isCollapsedToVisuallyEmpty(inlineItemRun.isCollapsedToZeroAdvanceWidth())
{
@@ -177,7 +177,7 @@
} else
m_initialStrut = { };
- auto lineRect = Display::Rect { constraints.logicalTopLeft, { }, initialLineHeight };
+ auto lineRect = Display::Rect { constraints.logicalTopLeft, 0_lu, initialLineHeight };
auto baseline = LineBox::Baseline { initialBaselineOffset, initialLineHeight - initialBaselineOffset };
m_lineBox = LineBox { lineRect, baseline, initialBaselineOffset };
m_lineLogicalWidth = constraints.availableLogicalWidth;
@@ -221,7 +221,7 @@
}
if (isVisuallyEmpty()) {
m_lineBox.resetBaseline();
- m_lineBox.setLogicalHeight({ });
+ m_lineBox.setLogicalHeight(0_lu);
}
// Remove descent when all content is baseline aligned but none of them have descent.
if (formattingContext().quirks().lineDescentNeedsCollapsing(runList)) {
@@ -273,7 +273,7 @@
logicalTop = baselineOffset() - run.logicalRect().height();
break;
case VerticalAlign::Top:
- logicalTop = { };
+ logicalTop = 0_lu;
break;
case VerticalAlign::Bottom:
logicalTop = logicalBottom() - run.logicalRect().height();
@@ -530,11 +530,11 @@
void LineBuilder::appendLineBreak(const InlineItem& inlineItem)
{
if (inlineItem.isHardLineBreak())
- return m_inlineItemRuns.append({ inlineItem, contentLogicalWidth(), { } });
+ return m_inlineItemRuns.append({ inlineItem, contentLogicalWidth(), 0_lu });
// Soft line breaks (preserved new line characters) require inline text boxes for compatibility reasons.
ASSERT(inlineItem.isSoftLineBreak());
auto& softLineBreakItem = downcast<InlineSoftLineBreakItem>(inlineItem);
- m_inlineItemRuns.append({ softLineBreakItem, contentLogicalWidth(), { }, Display::Run::TextContext { softLineBreakItem.position(), 1, softLineBreakItem.layoutBox().textContext()->content } });
+ m_inlineItemRuns.append({ softLineBreakItem, contentLogicalWidth(), 0_lu, Display::Run::TextContext { softLineBreakItem.position(), 1, softLineBreakItem.layoutBox().textContext()->content } });
}
void LineBuilder::adjustBaselineAndLineHeight(const Run& run)
@@ -598,7 +598,7 @@
// Non inline-block boxes sit on the baseline (including their bottom margin).
m_lineBox.setAscentIfGreater(marginBoxHeight);
// Ignore negative descent (yes, negative descent is a thing).
- m_lineBox.setLogicalHeightIfGreater(marginBoxHeight + std::max(LayoutUnit(), baseline.descent()));
+ m_lineBox.setLogicalHeightIfGreater(marginBoxHeight + std::max(0_lu, baseline.descent()));
}
break;
}
@@ -789,7 +789,7 @@
return trimmedWidth;
}
ASSERT_NOT_REACHED();
- return { };
+ return 0_lu;
}
LineBuilder::InlineItemRun::InlineItemRun(const InlineItem& inlineItem, LayoutUnit logicalLeft, LayoutUnit logicalWidth, WTF::Optional<Display::Run::TextContext> textContext)
@@ -815,14 +815,14 @@
LayoutUnit LineBuilder::InlineItemRun::trailingLetterSpacing() const
{
if (!hasTrailingLetterSpacing())
- return { };
+ return 0_lu;
return LayoutUnit { style().letterSpacing() };
}
void LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth()
{
m_collapsedToZeroAdvanceWidth = true;
- m_logicalWidth = { };
+ m_logicalWidth = 0_lu;
}
void LineBuilder::InlineItemRun::removeTrailingLetterSpacing()
diff --git a/Source/WebCore/layout/inlineformatting/InlineLineBuilder.h b/Source/WebCore/layout/inlineformatting/InlineLineBuilder.h
index 3897cd7..34baee4 100644
--- a/Source/WebCore/layout/inlineformatting/InlineLineBuilder.h
+++ b/Source/WebCore/layout/inlineformatting/InlineLineBuilder.h
@@ -237,7 +237,7 @@
inline void LineBuilder::TrimmableContent::reset()
{
m_firstRunIndex = { };
- m_width = { };
+ m_width = 0_lu;
m_lastRunIsFullyTrimmable = false;
}
diff --git a/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp b/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp
index 3d451ab..931f5f3 100644
--- a/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp
+++ b/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp
@@ -38,7 +38,7 @@
static LayoutUnit inlineItemWidth(const FormattingContext& formattingContext, const InlineItem& inlineItem, LayoutUnit contentLogicalLeft)
{
if (inlineItem.isLineBreak())
- return { };
+ return 0_lu;
if (is<InlineTextItem>(inlineItem)) {
auto& inlineTextItem = downcast<InlineTextItem>(inlineItem);
diff --git a/Source/WebCore/layout/inlineformatting/text/TextUtil.h b/Source/WebCore/layout/inlineformatting/text/TextUtil.h
index e9d3691..06ec5a9 100644
--- a/Source/WebCore/layout/inlineformatting/text/TextUtil.h
+++ b/Source/WebCore/layout/inlineformatting/text/TextUtil.h
@@ -37,7 +37,7 @@
class TextUtil {
public:
- static LayoutUnit width(const Box&, unsigned from, unsigned to, LayoutUnit contentLogicalLeft = { });
+ static LayoutUnit width(const Box&, unsigned from, unsigned to, LayoutUnit contentLogicalLeft = 0_lu);
static Optional<unsigned> hyphenPositionBefore(const InlineItem&, unsigned from, unsigned length);
struct SplitData {
unsigned start { 0 };