Title: [267515] trunk/Source/WebCore
Revision
267515
Author
[email protected]
Date
2020-09-23 20:15:01 -0700 (Wed, 23 Sep 2020)

Log Message

[LFC][Integration] Line layout logic should consult LayoutState whether remove trailing letter spacing.
https://bugs.webkit.org/show_bug.cgi?id=216905

Reviewed by Sam Weinig.

This is in preparation for completely moving away from the RuntimeEnabledFeatures check.

* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):
* layout/LayoutState.h:
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::appendTextContent):
* layout/inlineformatting/InlineLine.h:
* layout/inlineformatting/InlineLineBuilder.cpp:
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (267514 => 267515)


--- trunk/Source/WebCore/ChangeLog	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/ChangeLog	2020-09-24 03:15:01 UTC (rev 267515)
@@ -1,3 +1,22 @@
+2020-09-23  Zalan Bujtas  <[email protected]>
+
+        [LFC][Integration] Line layout logic should consult LayoutState whether remove trailing letter spacing.
+        https://bugs.webkit.org/show_bug.cgi?id=216905
+
+        Reviewed by Sam Weinig.
+
+        This is in preparation for completely moving away from the RuntimeEnabledFeatures check. 
+
+        * layout/LayoutState.cpp:
+        (WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):
+        * layout/LayoutState.h:
+        * layout/inlineformatting/InlineLine.cpp:
+        (WebCore::Layout::Line::Line):
+        (WebCore::Layout::Line::appendTextContent):
+        * layout/inlineformatting/InlineLine.h:
+        * layout/inlineformatting/InlineLineBuilder.cpp:
+        (WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
+
 2020-09-20  Simon Fraser  <[email protected]>
 
         [LFC Display] Add the beginnings of a CSS display box hierarchy and CSS painter

Modified: trunk/Source/WebCore/layout/LayoutState.cpp (267514 => 267515)


--- trunk/Source/WebCore/layout/LayoutState.cpp	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/layout/LayoutState.cpp	2020-09-24 03:15:01 UTC (rev 267515)
@@ -239,7 +239,12 @@
     m_isIntegratedRootBoxFirstChild = value ? IsIntegratedRootBoxFirstChild::Yes : IsIntegratedRootBoxFirstChild::No;
 }
 
+bool LayoutState::shouldIgnoreTrailingLetterSpacing() const
+{
+    return RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled();
 }
+
 }
+}
 
 #endif

Modified: trunk/Source/WebCore/layout/LayoutState.h (267514 => 267515)


--- trunk/Source/WebCore/layout/LayoutState.h	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/layout/LayoutState.h	2020-09-24 03:15:01 UTC (rev 267515)
@@ -92,6 +92,7 @@
     enum IsIntegratedRootBoxFirstChild { Yes, No, NotApplicable };
     IsIntegratedRootBoxFirstChild isIntegratedRootBoxFirstChild() const { return m_isIntegratedRootBoxFirstChild; }
     void setIsIntegratedRootBoxFirstChild(bool);
+    bool shouldIgnoreTrailingLetterSpacing() const;
 
 private:
     void setQuirksMode(QuirksMode quirksMode) { m_quirksMode = quirksMode; }

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp (267514 => 267515)


--- trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp	2020-09-24 03:15:01 UTC (rev 267515)
@@ -31,7 +31,6 @@
 #include "InlineFormattingContext.h"
 #include "InlineSoftLineBreakItem.h"
 #include "LayoutBoxGeometry.h"
-#include "RuntimeEnabledFeatures.h"
 #include "TextFlags.h"
 #include "TextUtil.h"
 #include <wtf/IsoMallocInlines.h>
@@ -48,7 +47,6 @@
 Line::Line(const InlineFormattingContext& inlineFormattingContext)
     : m_inlineFormattingContext(inlineFormattingContext)
     , m_trimmableTrailingContent(m_runs)
-    , m_shouldIgnoreTrailingLetterSpacing(RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled())
 {
 }
 
@@ -317,7 +315,7 @@
     }
     // Any non-whitespace, no-trimmable content resets the existing trimmable.
     m_trimmableTrailingContent.reset();
-    if (!m_shouldIgnoreTrailingLetterSpacing && !inlineTextItem.isWhitespace() && inlineTextItem.style().letterSpacing() > 0)
+    if (!formattingContext().layoutState().shouldIgnoreTrailingLetterSpacing() && !inlineTextItem.isWhitespace() && inlineTextItem.style().letterSpacing() > 0)
         m_trimmableTrailingContent.addPartiallyTrimmableContent(m_runs.size() - 1, logicalWidth);
 }
 

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLine.h (267514 => 267515)


--- trunk/Source/WebCore/layout/inlineformatting/InlineLine.h	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLine.h	2020-09-24 03:15:01 UTC (rev 267515)
@@ -181,7 +181,6 @@
     InlineLayoutUnit m_contentLogicalWidth { 0 };
     bool m_isVisuallyEmpty { true };
     Optional<bool> m_lineIsVisuallyEmptyBeforeTrimmableTrailingContent;
-    bool m_shouldIgnoreTrailingLetterSpacing { false };
 };
 
 inline void Line::TrimmableTrailingContent::reset()

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp (267514 => 267515)


--- trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp	2020-09-24 02:46:41 UTC (rev 267514)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp	2020-09-24 03:15:01 UTC (rev 267515)
@@ -33,7 +33,6 @@
 #include "LayoutBox.h"
 #include "LayoutBoxGeometry.h"
 #include "LayoutState.h"
-#include "RuntimeEnabledFeatures.h"
 #include "TextUtil.h"
 
 namespace WebCore {
@@ -177,9 +176,13 @@
 }
 
 struct LineCandidate {
+    LineCandidate(bool ignoreTrailingLetterSpacing);
+
     void reset();
 
     struct InlineContent {
+        InlineContent(bool ignoreTrailingLetterSpacing);
+
         const LineBreaker::RunList& runs() const { return m_inlineRuns; }
         InlineLayoutUnit logicalWidth() const { return m_LogicalWidth; }
         InlineLayoutUnit collapsibleTrailingWidth() const { return m_collapsibleTrailingWidth; }
@@ -192,6 +195,7 @@
     private:
         void setTrailingLineBreak(const InlineItem& lineBreakItem) { m_trailingLineBreak = &lineBreakItem; }
 
+        bool m_ignoreTrailingLetterSpacing { false };
         InlineLayoutUnit m_LogicalWidth { 0 };
         InlineLayoutUnit m_collapsibleTrailingWidth { 0 };
         LineBreaker::RunList m_inlineRuns;
@@ -221,6 +225,16 @@
     FloatContent floatContent;
 };
 
+LineCandidate::LineCandidate(bool ignoreTrailingLetterSpacing)
+    : inlineContent(ignoreTrailingLetterSpacing)
+{
+}
+
+LineCandidate::InlineContent::InlineContent(bool ignoreTrailingLetterSpacing)
+    : m_ignoreTrailingLetterSpacing(ignoreTrailingLetterSpacing)
+{
+}
+
 inline void LineCandidate::InlineContent::appendInlineItem(const InlineItem& inlineItem, InlineLayoutUnit logicalWidth)
 {
     m_LogicalWidth += logicalWidth;
@@ -241,7 +255,7 @@
     }
 
     auto partiallyCollapsibleTrailingWidth = [&]() -> InlineLayoutUnit {
-        if (RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled())
+        if (m_ignoreTrailingLetterSpacing)
             return { };
         if (!inlineItem.isText())
             return { };
@@ -363,7 +377,7 @@
 
 LineBuilder::CommittedContent LineBuilder::placeInlineContent(const InlineItemRange& needsLayoutRange, Optional<unsigned> partialLeadingContentLength)
 {
-    auto lineCandidate = LineCandidate { };
+    auto lineCandidate = LineCandidate { layoutState().shouldIgnoreTrailingLetterSpacing() };
     auto lineBreaker = LineBreaker { };
 
     auto currentItemIndex = needsLayoutRange.start;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to