Diff
Modified: trunk/Source/WebCore/ChangeLog (276201 => 276202)
--- trunk/Source/WebCore/ChangeLog 2021-04-17 15:38:31 UTC (rev 276201)
+++ trunk/Source/WebCore/ChangeLog 2021-04-17 18:22:35 UTC (rev 276202)
@@ -1,5 +1,25 @@
2021-04-17 Zalan Bujtas <[email protected]>
+ [Cleanup] Modernize TrailingObjects
+ https://bugs.webkit.org/show_bug.cgi?id=224712
+
+ Reviewed by Antti Koivisto.
+
+ Remove redundant c'tor and start using enum class.
+
+ * rendering/line/BreakingContext.h:
+ (WebCore::BreakingContext::handleText):
+ (WebCore::checkWhitespaceCollapsingTransitions):
+ (WebCore::BreakingContext::handleEndOfLine):
+ * rendering/line/TrailingObjects.cpp:
+ (WebCore::TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes):
+ * rendering/line/TrailingObjects.h:
+ (WebCore::TrailingObjects::setTrailingWhitespace):
+ (WebCore::TrailingObjects::clear):
+ (WebCore::TrailingObjects::TrailingObjects): Deleted.
+
+2021-04-17 Zalan Bujtas <[email protected]>
+
[Cleanup] BreakingContext::handleText should consistently use the cached renderer
https://bugs.webkit.org/show_bug.cgi?id=224711
Modified: trunk/Source/WebCore/rendering/line/BreakingContext.h (276201 => 276202)
--- trunk/Source/WebCore/rendering/line/BreakingContext.h 2021-04-17 15:38:31 UTC (rev 276201)
+++ trunk/Source/WebCore/rendering/line/BreakingContext.h 2021-04-17 18:22:35 UTC (rev 276202)
@@ -980,7 +980,7 @@
// spaces. Create a transition to terminate the run
// before the second space.
m_lineWhitespaceCollapsingState.startIgnoringSpaces(m_startOfIgnoredSpaces);
- m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, InlineIterator(), TrailingObjects::DoNotCollapseFirstSpace);
+ m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, InlineIterator(), TrailingObjects::CollapseFirstSpace::No);
}
}
// Measuring the width of complex text character-by-character, rather than measuring it all together,
@@ -1185,7 +1185,7 @@
}
}
-inline TrailingObjects::CollapseFirstSpaceOrNot checkWhitespaceCollapsingTransitions(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak)
+inline TrailingObjects::CollapseFirstSpace checkWhitespaceCollapsingTransitions(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak)
{
// Check to see if our last transition is a start point beyond the line break. If so,
// shave it off the list, and shave off a trailing space if the previous end point doesn't
@@ -1202,11 +1202,11 @@
lineWhitespaceCollapsingState.decrementNumTransitions();
if (endpoint.renderer()->style().collapseWhiteSpace() && endpoint.renderer()->isText()) {
lineWhitespaceCollapsingState.decrementTransitionAt(lineWhitespaceCollapsingState.numTransitions() - 1);
- return TrailingObjects::DoNotCollapseFirstSpace;
+ return TrailingObjects::CollapseFirstSpace::No;
}
}
}
- return TrailingObjects::CollapseFirstSpace;
+ return TrailingObjects::CollapseFirstSpace::Yes;
}
inline InlineIterator BreakingContext::handleEndOfLine()
@@ -1240,8 +1240,7 @@
}
// Sanity check our whitespace collapsing transitions.
- TrailingObjects::CollapseFirstSpaceOrNot collapsed = checkWhitespaceCollapsingTransitions(m_lineWhitespaceCollapsingState, m_lineBreak);
-
+ auto collapsed = checkWhitespaceCollapsingTransitions(m_lineWhitespaceCollapsingState, m_lineBreak);
m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, m_lineBreak, collapsed);
// We might have made lineBreak an iterator that points past the end
Modified: trunk/Source/WebCore/rendering/line/TrailingObjects.cpp (276201 => 276202)
--- trunk/Source/WebCore/rendering/line/TrailingObjects.cpp 2021-04-17 15:38:31 UTC (rev 276201)
+++ trunk/Source/WebCore/rendering/line/TrailingObjects.cpp 2021-04-17 18:22:35 UTC (rev 276202)
@@ -29,7 +29,7 @@
namespace WebCore {
-void TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak, CollapseFirstSpaceOrNot collapseFirstSpace)
+void TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak, CollapseFirstSpace collapseFirstSpace)
{
if (!m_whitespace)
return;
@@ -41,7 +41,7 @@
int trailingSpaceTransition = lineWhitespaceCollapsingState.numTransitions() - 1;
for ( ; trailingSpaceTransition > 0 && lineWhitespaceCollapsingState.transitions()[trailingSpaceTransition].renderer() != m_whitespace; --trailingSpaceTransition) { }
ASSERT(trailingSpaceTransition >= 0);
- if (collapseFirstSpace == CollapseFirstSpace)
+ if (collapseFirstSpace == CollapseFirstSpace::Yes)
lineWhitespaceCollapsingState.decrementTransitionAt(trailingSpaceTransition);
// Now make sure every single trailingPositionedBox following the trailingSpaceTransition properly stops and starts
@@ -59,7 +59,7 @@
}
} else if (!lBreak.renderer()) {
ASSERT(m_whitespace->isText());
- ASSERT(collapseFirstSpace == CollapseFirstSpace);
+ ASSERT(collapseFirstSpace == CollapseFirstSpace::Yes);
// Add a new end transition that stops right at the very end.
unsigned length = m_whitespace->text().length();
unsigned pos = length >= 2 ? length - 2 : UINT_MAX;
Modified: trunk/Source/WebCore/rendering/line/TrailingObjects.h (276201 => 276202)
--- trunk/Source/WebCore/rendering/line/TrailingObjects.h 2021-04-17 15:38:31 UTC (rev 276201)
+++ trunk/Source/WebCore/rendering/line/TrailingObjects.h 2021-04-17 18:22:35 UTC (rev 276202)
@@ -43,18 +43,10 @@
class TrailingObjects {
public:
- TrailingObjects()
- : m_whitespace(0)
- { }
-
- void setTrailingWhitespace(RenderText& whitespace)
- {
- m_whitespace = &whitespace;
- }
-
+ void setTrailingWhitespace(RenderText& whitespace) { m_whitespace = &whitespace; }
void clear()
{
- m_whitespace = 0;
+ m_whitespace = { };
m_boxes.shrink(0); // Use shrink(0) instead of clear() to retain our capacity.
}
@@ -64,12 +56,11 @@
m_boxes.append(box);
}
- enum CollapseFirstSpaceOrNot { DoNotCollapseFirstSpace, CollapseFirstSpace };
+ enum class CollapseFirstSpace { No, Yes };
+ void updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState&, const InlineIterator& lBreak, CollapseFirstSpace);
- void updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState&, const InlineIterator& lBreak, CollapseFirstSpaceOrNot);
-
private:
- RenderText* m_whitespace;
+ RenderText* m_whitespace { nullptr };
Vector<std::reference_wrapper<RenderBoxModelObject>, 4> m_boxes;
};