Title: [285860] trunk/Source/WebCore
Revision
285860
Author
[email protected]
Date
2021-11-16 07:07:51 -0800 (Tue, 16 Nov 2021)

Log Message

[LFC][IFC] Fix fast/text/text-indent-inside-float.html
https://bugs.webkit.org/show_bug.cgi?id=233163

Reviewed by Antti Koivisto.

Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
https://drafts.csswg.org/css-text/#text-indent-property

Note that this patch is in preparation for enabling IFC preferred width computation.

* layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialConstraintsForLine const):
* layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used
for other, preferred width computation specific properties and values.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (285859 => 285860)


--- trunk/Source/WebCore/ChangeLog	2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/ChangeLog	2021-11-16 15:07:51 UTC (rev 285860)
@@ -1,3 +1,21 @@
+2021-11-16  Alan Bujtas  <[email protected]>
+
+        [LFC][IFC] Fix fast/text/text-indent-inside-float.html
+        https://bugs.webkit.org/show_bug.cgi?id=233163
+
+        Reviewed by Antti Koivisto.
+
+        Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
+        https://drafts.csswg.org/css-text/#text-indent-property
+
+        Note that this patch is in preparation for enabling IFC preferred width computation.
+
+        * layout/formattingContexts/inline/InlineLineBuilder.cpp:
+        (WebCore::Layout::LineBuilder::LineBuilder):
+        (WebCore::Layout::LineBuilder::initialConstraintsForLine const):
+        * layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used
+        for other, preferred width computation specific properties and values.
+
 2021-11-16  Chris Lord  <[email protected]>
 
         [GTK][WPE] displayDidRefresh can shortcut waking up the scrolling thread

Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp (285859 => 285860)


--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp	2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp	2021-11-16 15:07:51 UTC (rev 285860)
@@ -268,8 +268,9 @@
     return boxGeometry.marginBoxWidth();
 }
 
-LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems)
-    : m_inlineFormattingContext(inlineFormattingContext)
+LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
+    : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
+    , m_inlineFormattingContext(inlineFormattingContext)
     , m_inlineFormattingState(&inlineFormattingContext.formattingState())
     , m_floatingState(&floatingState)
     , m_rootHorizontalConstraints(rootHorizontalConstraints)
@@ -278,8 +279,9 @@
 {
 }
 
-LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems)
-    : m_inlineFormattingContext(inlineFormattingContext)
+LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
+    : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
+    , m_inlineFormattingContext(inlineFormattingContext)
     , m_line(inlineFormattingContext)
     , m_inlineItems(inlineItems)
 {
@@ -547,6 +549,11 @@
         auto textIndent = root.style().textIndent();
         if (textIndent == RenderStyle::initialTextIndent())
             return { };
+        if (m_isIntrinsicWidthMode && textIndent.isPercent()) {
+            // Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
+            // https://drafts.csswg.org/css-text/#text-indent-property
+            return { };
+        }
         return { minimumValueForLength(textIndent, initialLineLogicalRect.width()) };
     };
     lineLogicalLeft += computedTextIndent();

Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h (285859 => 285860)


--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h	2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h	2021-11-16 15:07:51 UTC (rev 285860)
@@ -39,8 +39,9 @@
 
 class LineBuilder {
 public:
-    LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&);
-    LineBuilder(const InlineFormattingContext&, const InlineItems&);
+    enum class IsIntrinsicWidthMode { No, Yes };
+    LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::No);
+    LineBuilder(const InlineFormattingContext&, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::Yes);
 
     struct InlineItemRange {
         bool isEmpty() const { return start == end; }
@@ -120,6 +121,7 @@
 
 private:
     bool m_isFirstLine { false };
+    bool m_isIntrinsicWidthMode { false };
     const InlineFormattingContext& m_inlineFormattingContext;
     InlineFormattingState* m_inlineFormattingState { nullptr };
     FloatingState* m_floatingState { nullptr };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to