Title: [254794] trunk/Source/WebCore
- Revision
- 254794
- Author
- [email protected]
- Date
- 2020-01-18 06:01:07 -0800 (Sat, 18 Jan 2020)
Log Message
Unreviewed, rolling out r254780.
https://bugs.webkit.org/show_bug.cgi?id=206472
fast/css/content/content-none.html asserts in
LineBuilder::CollapsibleContent::collapse() (Requested by
zalan on #webkit).
Reverted changeset:
"[LFC][IFC] Do not construct a dedicated run for the trailing
(fully) collapsed whitespace."
https://bugs.webkit.org/show_bug.cgi?id=206428
https://trac.webkit.org/changeset/254780
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (254793 => 254794)
--- trunk/Source/WebCore/ChangeLog 2020-01-18 07:21:53 UTC (rev 254793)
+++ trunk/Source/WebCore/ChangeLog 2020-01-18 14:01:07 UTC (rev 254794)
@@ -1,3 +1,19 @@
+2020-01-18 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r254780.
+ https://bugs.webkit.org/show_bug.cgi?id=206472
+
+ fast/css/content/content-none.html asserts in
+ LineBuilder::CollapsibleContent::collapse() (Requested by
+ zalan on #webkit).
+
+ Reverted changeset:
+
+ "[LFC][IFC] Do not construct a dedicated run for the trailing
+ (fully) collapsed whitespace."
+ https://bugs.webkit.org/show_bug.cgi?id=206428
+ https://trac.webkit.org/changeset/254780
+
2020-01-17 Cathie Chen <[email protected]>
Add support for scroll behavior parsing
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp (254793 => 254794)
--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp 2020-01-18 07:21:53 UTC (rev 254793)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp 2020-01-18 14:01:07 UTC (rev 254794)
@@ -47,15 +47,13 @@
if (run.isContainerEnd() || layoutBox.style().verticalAlign() != VerticalAlign::Baseline)
continue;
+ if (run.isLineBreak())
+ return false;
if (run.isText()) {
if (!run.isCollapsedToVisuallyEmpty())
return false;
continue;
}
-
- if (run.isLineBreak())
- return false;
-
if (run.isContainerStart()) {
auto& boxGeometry = formattingContext().geometryForBox(layoutBox);
if (boxGeometry.horizontalBorder() || (boxGeometry.horizontalPadding() && boxGeometry.horizontalPadding().value()))
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp (254793 => 254794)
--- trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp 2020-01-18 07:21:53 UTC (rev 254793)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp 2020-01-18 14:01:07 UTC (rev 254794)
@@ -69,7 +69,7 @@
ContinuousContent(const InlineItemRun&, bool textIsAlignJustify);
bool isEligible(const InlineItemRun&) const;
- void expand(const InlineItemRun&);
+ void append(const InlineItemRun&);
LineBuilder::Run close();
static bool canInlineItemRunBeExpanded(const InlineItemRun& run) { return run.isText() && !run.isCollapsed() && !run.isCollapsedToZeroAdvanceWidth(); }
@@ -96,10 +96,11 @@
{
if (!m_trailingRunCanBeExpanded)
return false;
- return inlineItemRun.isText() && &m_initialInlineRun.layoutBox() == &inlineItemRun.layoutBox();
+ // Only non-collapsed text runs with the same layout box can be added as continuous content.
+ return inlineItemRun.isText() && !inlineItemRun.isCollapsedToZeroAdvanceWidth() && &m_initialInlineRun.layoutBox() == &inlineItemRun.layoutBox();
}
-void LineBuilder::ContinuousContent::expand(const InlineItemRun& inlineItemRun)
+void LineBuilder::ContinuousContent::append(const InlineItemRun& inlineItemRun)
{
// Merged content needs to be continuous.
ASSERT(isEligible(inlineItemRun));
@@ -106,8 +107,7 @@
m_trailingRunCanBeExpanded = canInlineItemRunBeExpanded(inlineItemRun);
ASSERT(inlineItemRun.isText());
- if (!inlineItemRun.isCollapsedToZeroAdvanceWidth())
- m_expandedLength += inlineItemRun.textContext()->length();
+ m_expandedLength += inlineItemRun.textContext()->length();
m_expandedWidth += inlineItemRun.logicalWidth();
if (m_collectExpansionOpportunities) {
@@ -238,7 +238,8 @@
visuallyCollapsePreWrapOverflowContent();
auto hangingContent = collectHangingContent(isLastLineWithInlineContent);
- auto mergedInlineItemRuns = [&] (auto& runList) {
+ auto mergedInlineItemRuns = [&] {
+ RunList runList;
unsigned runIndex = 0;
while (runIndex < m_inlineItemRuns.size()) {
// Merge eligible runs.
@@ -250,13 +251,13 @@
}
auto mergedRuns = ContinuousContent { inlineItemRun, isTextAlignJustify() };
for (runIndex = runIndex + 1; runIndex < m_inlineItemRuns.size() && mergedRuns.isEligible(m_inlineItemRuns[runIndex]); ++runIndex)
- mergedRuns.expand(m_inlineItemRuns[runIndex]);
+ mergedRuns.append(m_inlineItemRuns[runIndex]);
runList.append(mergedRuns.close());
}
+ return runList;
};
- RunList runList;
- mergedInlineItemRuns(runList);
+ auto runList = mergedInlineItemRuns();
if (!m_isIntrinsicSizing) {
for (auto& run : runList) {
adjustBaselineAndLineHeight(run);
@@ -345,7 +346,7 @@
switch (verticalAlign) {
case VerticalAlign::Baseline:
- if (run.isText() || run.isLineBreak())
+ if (run.isLineBreak() || run.isText())
logicalTop = baselineOffset() - ascent;
else if (run.isContainerStart()) {
auto& boxGeometry = formattingContext().geometryForBox(layoutBox);
@@ -790,7 +791,7 @@
ASSERT_NOT_REACHED();
}
-inline InlineLayoutUnit LineBuilder::runContentHeight(const Run& run) const
+InlineLayoutUnit LineBuilder::runContentHeight(const Run& run) const
{
ASSERT(!m_isIntrinsicSizing);
auto& fontMetrics = run.style().fontMetrics();
@@ -900,10 +901,14 @@
for (auto index = *m_firstRunIndex; index < m_inlineitemRunList.size(); ++index) {
auto& run = m_inlineitemRunList[index];
run.moveHorizontally(-accumulatedCollapsedWidth);
+ if (!run.isText()) {
+ ASSERT(run.isContainerStart() || run.isContainerEnd() || run.isLineBreak());
+ continue;
+ }
if (run.isWhitespace()) {
accumulatedCollapsedWidth += run.logicalWidth();
run.setCollapsesToZeroAdvanceWidth();
- } else if (run.isText()) {
+ } else {
ASSERT(!hasSeenNonWhitespaceTextContent);
#if ASSERT_ENABLED
hasSeenNonWhitespaceTextContent = true;
@@ -913,7 +918,6 @@
accumulatedCollapsedWidth += run.trailingLetterSpacing();
run.removeTrailingLetterSpacing();
}
- ASSERT(run.isContainerStart() || run.isContainerEnd() || run.isLineBreak());
}
ASSERT(accumulatedCollapsedWidth == width());
reset();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes