Title: [253435] trunk/Source/WebCore
- Revision
- 253435
- Author
- [email protected]
- Date
- 2019-12-12 10:27:17 -0800 (Thu, 12 Dec 2019)
Log Message
[LFC][IFC] Fix fast/text/whitespace/023.html
https://bugs.webkit.org/show_bug.cgi?id=205170
<rdar://problem/57881365>
Reviewed by Antti Koivisto.
Do not try to find expansion opportunities in content with preserved whitespace.
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::ContinousContent::ContinousContent):
(WebCore::Layout::LineBuilder::ContinousContent::append):
(WebCore::Layout::LineBuilder::ContinousContent::close):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (253434 => 253435)
--- trunk/Source/WebCore/ChangeLog 2019-12-12 18:26:00 UTC (rev 253434)
+++ trunk/Source/WebCore/ChangeLog 2019-12-12 18:27:17 UTC (rev 253435)
@@ -1,3 +1,18 @@
+2019-12-12 Zalan Bujtas <[email protected]>
+
+ [LFC][IFC] Fix fast/text/whitespace/023.html
+ https://bugs.webkit.org/show_bug.cgi?id=205170
+ <rdar://problem/57881365>
+
+ Reviewed by Antti Koivisto.
+
+ Do not try to find expansion opportunities in content with preserved whitespace.
+
+ * layout/inlineformatting/InlineLineBuilder.cpp:
+ (WebCore::Layout::LineBuilder::ContinousContent::ContinousContent):
+ (WebCore::Layout::LineBuilder::ContinousContent::append):
+ (WebCore::Layout::LineBuilder::ContinousContent::close):
+
2019-12-12 Patrick Griffis <[email protected]>
[SOUP] Use new API for strict secure cookies
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp (253434 => 253435)
--- trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp 2019-12-12 18:26:00 UTC (rev 253434)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp 2019-12-12 18:27:17 UTC (rev 253435)
@@ -36,6 +36,12 @@
namespace WebCore {
namespace Layout {
+static inline bool isWhitespacePreserved(const RenderStyle& style)
+{
+ auto whitespace = style.whiteSpace();
+ return whitespace == WhiteSpace::Pre || whitespace == WhiteSpace::PreWrap || whitespace == WhiteSpace::BreakSpaces;
+}
+
struct LineBuilder::ContinousContent {
public:
ContinousContent(const InlineItemRun&, bool textIsAlignJustify);
@@ -48,7 +54,7 @@
bool canBeMerged(const InlineItemRun& run) const { return run.isText() && !run.isCollapsedToZeroAdvanceWidth() && &m_initialInlineRun.layoutBox() == &run.layoutBox(); }
const InlineItemRun& m_initialInlineRun;
- const bool m_textIsAlignJustify { false };
+ const bool m_collectExpansionOpportunities { false };
unsigned m_expandedLength { 0 };
InlineLayoutUnit m_expandedWidth { 0 };
bool m_trailingRunCanBeExpanded { false };
@@ -58,7 +64,7 @@
LineBuilder::ContinousContent::ContinousContent(const InlineItemRun& initialInlineRun, bool textIsAlignJustify)
: m_initialInlineRun(initialInlineRun)
- , m_textIsAlignJustify(textIsAlignJustify)
+ , m_collectExpansionOpportunities(textIsAlignJustify && !isWhitespacePreserved(m_initialInlineRun.style())) // Do not collect expansion data on preserved whitespace content (we should not mutate the spacing between runs in such cases).
, m_trailingRunCanBeExpanded(canBeExpanded(initialInlineRun))
{
}
@@ -77,7 +83,7 @@
m_expandedLength += inlineItemRun.textContext()->length();
m_expandedWidth += inlineItemRun.logicalWidth();
- if (m_textIsAlignJustify) {
+ if (m_collectExpansionOpportunities) {
m_hasTrailingExpansionOpportunity = inlineItemRun.hasExpansionOpportunity();
if (m_hasTrailingExpansionOpportunity)
++m_expansionOpportunityCount;
@@ -95,7 +101,7 @@
auto length = textContext.length() + m_expandedLength;
textContext.expand(length);
- if (m_textIsAlignJustify) {
+ if (m_collectExpansionOpportunities) {
// FIXME: This is a very simple expansion merge. We should eventually switch over to FontCascade::expansionOpportunityCount.
ExpansionBehavior expansionBehavior = m_hasTrailingExpansionOpportunity ? (ForbidLeadingExpansion | AllowTrailingExpansion) : (AllowLeadingExpansion | AllowTrailingExpansion);
if (m_initialInlineRun.hasExpansionOpportunity())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes