Title: [250235] trunk/Source/WebCore
Revision
250235
Author
za...@apple.com
Date
2019-09-23 09:14:21 -0700 (Mon, 23 Sep 2019)

Log Message

[LFC][IFC] Pass in the Used*Values to inline layout functions.
https://bugs.webkit.org/show_bug.cgi?id=202091
<rdar://problem/55601987>

Reviewed by Antti Koivisto.

Only the top level layout functions should generate constraint values.

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::widthConstraint const):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (250234 => 250235)


--- trunk/Source/WebCore/ChangeLog	2019-09-23 15:54:58 UTC (rev 250234)
+++ trunk/Source/WebCore/ChangeLog	2019-09-23 16:14:21 UTC (rev 250235)
@@ -1,3 +1,31 @@
+2019-09-23  Zalan Bujtas  <za...@apple.com>
+
+        [LFC][IFC] Pass in the Used*Values to inline layout functions.
+        https://bugs.webkit.org/show_bug.cgi?id=202091
+        <rdar://problem/55601987>
+
+        Reviewed by Antti Koivisto.
+
+        Only the top level layout functions should generate constraint values.
+
+        * layout/inlineformatting/InlineFormattingContext.cpp:
+        (WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
+        (WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
+        (WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer):
+        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
+        (WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
+        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
+        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
+        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
+        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
+        * layout/inlineformatting/InlineFormattingContext.h:
+        (WebCore::Layout::InlineFormattingContext::InlineLayout::widthConstraint const):
+        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
+        (WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
+        (WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
+        (WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
+        (WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
+
 2019-09-23  Antti Koivisto  <an...@apple.com>
 
         Refcount simple line layout

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp (250234 => 250235)


--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp	2019-09-23 15:54:58 UTC (rev 250234)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp	2019-09-23 16:14:21 UTC (rev 250235)
@@ -69,16 +69,19 @@
         return;
 
     LOG_WITH_STREAM(FormattingContextLayout, stream << "[Start] -> inline formatting context -> formatting root(" << &root() << ")");
-    auto usedValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { geometryForBox(root()) } };
+    auto& rootGeometry = geometryForBox(root());
+    auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { rootGeometry } };
+    auto usedVerticalValues = UsedVerticalValues { UsedVerticalValues::Constraints { rootGeometry } };
     auto* layoutBox = root().firstInFlowOrFloatingChild();
-    // Compute width/height for non-text content and margin/border/padding for inline containers.
+    // 1. Visit each inline box and partially compute their geometry (margins, paddings and borders).
+    // 2. Collect the inline items (flatten the the layout tree) and place them on lines in bidirectional order. 
     while (layoutBox) {
         if (layoutBox->establishesFormattingContext())
-            layoutFormattingContextRoot(*layoutBox, usedValues);
+            layoutFormattingContextRoot(*layoutBox, usedHorizontalValues, usedVerticalValues);
         else if (is<Container>(*layoutBox))
-            computeMarginBorderAndPaddingForInlineContainer(downcast<Container>(*layoutBox), usedValues);
+            computeMarginBorderAndPaddingForInlineContainer(downcast<Container>(*layoutBox), usedHorizontalValues);
         else if (layoutBox->isReplaced())
-            computeWidthAndHeightForReplacedInlineBox(*layoutBox, usedValues);
+            computeWidthAndHeightForReplacedInlineBox(*layoutBox, usedHorizontalValues, usedVerticalValues);
         else {
             ASSERT(layoutBox->isInlineLevelBox());
             initializeMarginBorderAndPaddingForGenericInlineBox(*layoutBox);
@@ -91,7 +94,7 @@
     formattingState().inlineRuns().clear();
 
     collectInlineContent();
-    InlineLayout(*this).layout(formattingState().inlineItems(), usedValues.constraints.width);
+    InlineLayout(*this, usedHorizontalValues).layout(formattingState().inlineItems());
     LOG_WITH_STREAM(FormattingContextLayout, stream << "[End] -> inline formatting context -> formatting root(" << &root() << ")");
 }
 
@@ -107,21 +110,21 @@
     }
 
     Vector<const Box*> formattingContextRootList;
-    auto usedValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, { } } };
+    auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, { } } };
     auto* layoutBox = root().firstInFlowOrFloatingChild();
     while (layoutBox) {
         if (layoutBox->establishesFormattingContext()) {
             formattingContextRootList.append(layoutBox);
-            computeIntrinsicWidthForFormattingRoot(*layoutBox);
+            computeIntrinsicWidthForFormattingRoot(*layoutBox, usedHorizontalValues);
         } else if (layoutBox->isReplaced() || is<Container>(*layoutBox)) {
-            computeBorderAndPadding(*layoutBox, usedValues);
+            computeBorderAndPadding(*layoutBox, usedHorizontalValues);
             // inline-block and replaced.
             auto needsWidthComputation = layoutBox->isReplaced();
             if (needsWidthComputation)
-                computeWidthAndMargin(*layoutBox, usedValues);
+                computeWidthAndMargin(*layoutBox, usedHorizontalValues);
             else {
                 // Simple inline container with no intrinsic width <span>.
-                computeHorizontalMargin(*layoutBox, usedValues);
+                computeHorizontalMargin(*layoutBox, usedHorizontalValues);
             }
         }
         layoutBox = nextInPreOrder(*layoutBox, root());
@@ -137,7 +140,8 @@
             auto contentWidth = (availableWidth ? intrinsicWidths->maximum : intrinsicWidths->minimum) - displayBox.horizontalMarginBorderAndPadding();
             displayBox.setContentBoxWidth(contentWidth);
         }
-        return InlineLayout(*this).computedIntrinsicWidth(formattingState().inlineItems(), availableWidth);
+        auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, availableWidth } };
+        return InlineLayout(*this, usedHorizontalValues).computedIntrinsicWidth(formattingState().inlineItems());
     };
 
     auto constraints = geometry().constrainByMinMaxWidth(root(), { maximumLineWidth(0), maximumLineWidth(LayoutUnit::max()) });
@@ -156,21 +160,20 @@
     displayBox.setPadding({ });
 }
 
-void InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer(const Container& container, UsedHorizontalValues usedValues)
+void InlineFormattingContext::computeMarginBorderAndPaddingForInlineContainer(const Container& container, UsedHorizontalValues usedHorizontalValues)
 {
-    computeHorizontalMargin(container, usedValues);
-    computeBorderAndPadding(container, usedValues);
+    computeHorizontalMargin(container, usedHorizontalValues);
+    computeBorderAndPadding(container, usedHorizontalValues);
     // Inline containers (<span>) have 0 vertical margins.
     formattingState().displayBox(container).setVerticalMargin({ { }, { } });
 }
 
-void InlineFormattingContext::computeIntrinsicWidthForFormattingRoot(const Box& formattingRoot)
+void InlineFormattingContext::computeIntrinsicWidthForFormattingRoot(const Box& formattingRoot, UsedHorizontalValues usedHorizontalValues)
 {
     ASSERT(formattingRoot.establishesFormattingContext());
 
-    auto usedValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { { }, { } } };
-    computeBorderAndPadding(formattingRoot, usedValues);
-    computeHorizontalMargin(formattingRoot, usedValues);
+    computeBorderAndPadding(formattingRoot, usedHorizontalValues);
+    computeHorizontalMargin(formattingRoot, usedHorizontalValues);
 
     auto constraints = IntrinsicWidthConstraints { };
     if (auto fixedWidth = geometry().fixedValue(formattingRoot.style().logicalWidth()))
@@ -182,23 +185,23 @@
     formattingState().setIntrinsicWidthConstraintsForBox(formattingRoot, constraints);
 }
 
-void InlineFormattingContext::computeHorizontalMargin(const Box& layoutBox, UsedHorizontalValues usedValues)
+void InlineFormattingContext::computeHorizontalMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
 {
-    auto computedHorizontalMargin = geometry().computedHorizontalMargin(layoutBox, usedValues);
+    auto computedHorizontalMargin = geometry().computedHorizontalMargin(layoutBox, usedHorizontalValues);
     auto& displayBox = formattingState().displayBox(layoutBox);
     displayBox.setHorizontalComputedMargin(computedHorizontalMargin);
     displayBox.setHorizontalMargin({ computedHorizontalMargin.start.valueOr(0), computedHorizontalMargin.end.valueOr(0) });
 }
 
-void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedValues)
+void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
 {
     WidthAndMargin widthAndMargin;
     if (layoutBox.isFloatingPositioned())
-        widthAndMargin = geometry().floatingWidthAndMargin(layoutBox, usedValues);
+        widthAndMargin = geometry().floatingWidthAndMargin(layoutBox, usedHorizontalValues);
     else if (layoutBox.isInlineBlockBox())
-        widthAndMargin = geometry().inlineBlockWidthAndMargin(layoutBox, usedValues);
+        widthAndMargin = geometry().inlineBlockWidthAndMargin(layoutBox, usedHorizontalValues);
     else if (layoutBox.replaced())
-        widthAndMargin = geometry().inlineReplacedWidthAndMargin(layoutBox, usedValues);
+        widthAndMargin = geometry().inlineReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
     else
         ASSERT_NOT_REACHED();
 
@@ -208,12 +211,9 @@
     displayBox.setHorizontalComputedMargin(widthAndMargin.computedMargin);
 }
 
-void InlineFormattingContext::computeHeightAndMargin(const Box& layoutBox)
+void InlineFormattingContext::computeHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
 {
     HeightAndMargin heightAndMargin;
-    auto& containingBlockGeometry = geometryForBox(*layoutBox.containingBlock());
-    auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { containingBlockGeometry } };
-    auto usedVerticalValues = UsedVerticalValues { UsedVerticalValues::Constraints { containingBlockGeometry } };
     if (layoutBox.isFloatingPositioned())
         heightAndMargin = geometry().floatingHeightAndMargin(layoutBox, usedHorizontalValues, usedVerticalValues);
     else if (layoutBox.isInlineBlockBox())
@@ -228,7 +228,7 @@
     displayBox.setVerticalMargin({ heightAndMargin.nonCollapsedMargin, { } });
 }
 
-void InlineFormattingContext::layoutFormattingContextRoot(const Box& root, UsedHorizontalValues usedHorizontalValues)
+void InlineFormattingContext::layoutFormattingContextRoot(const Box& root, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
 {
     ASSERT(root.isFloatingPositioned() || root.isInlineBlockBox());
 
@@ -242,14 +242,14 @@
         auto formattingContext = LayoutContext::createFormattingContext(rootContainer, layoutState());
         formattingContext->layoutInFlowContent();
         // Come back and finalize the root's height and margin.
-        computeHeightAndMargin(rootContainer);
+        computeHeightAndMargin(rootContainer, usedHorizontalValues, usedVerticalValues);
         // Now that we computed the root's height, we can go back and layout the out-of-flow content.
         formattingContext->layoutOutOfFlowContent();
     } else
-        computeHeightAndMargin(root);
+        computeHeightAndMargin(root, usedHorizontalValues, usedVerticalValues);
 }
 
-void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
+void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
 {
     ASSERT(!layoutBox.isContainer());
     ASSERT(!layoutBox.establishesFormattingContext());
@@ -257,7 +257,7 @@
 
     computeBorderAndPadding(layoutBox, usedHorizontalValues);
     computeWidthAndMargin(layoutBox, usedHorizontalValues);
-    computeHeightAndMargin(layoutBox);
+    computeHeightAndMargin(layoutBox, usedHorizontalValues, usedVerticalValues);
 }
 
 void InlineFormattingContext::collectInlineContent()

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h (250234 => 250235)


--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h	2019-09-23 15:54:58 UTC (rev 250234)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h	2019-09-23 16:14:21 UTC (rev 250235)
@@ -53,9 +53,9 @@
 
     class InlineLayout {
     public:
-        InlineLayout(InlineFormattingContext&);
-        void layout(const InlineItems&, LayoutUnit widthConstraint);
-        LayoutUnit computedIntrinsicWidth(const InlineItems&, LayoutUnit widthConstraint) const;
+        InlineLayout(InlineFormattingContext&, UsedHorizontalValues);
+        void layout(const InlineItems&);
+        LayoutUnit computedIntrinsicWidth(const InlineItems&) const;
 
     private:
         LayoutState& layoutState() const { return m_inlineFormattingContext.layoutState(); }
@@ -62,12 +62,15 @@
         InlineFormattingContext& formattingContext() const { return m_inlineFormattingContext; }
         const Container& formattingRoot() const { return m_inlineFormattingContext.root(); }
         InlineFormattingState& formattingState() { return m_inlineFormattingContext.formattingState(); }
+        LayoutUnit widthConstraint() const { return m_usedHorizontalValues.constraints.width; }
+
         LineContent placeInlineItems(const LineInput&) const;
-        void createDisplayRuns(const Line::Content&, const Vector<WeakPtr<InlineItem>>& floats, LayoutUnit widthConstraint);
+        void createDisplayRuns(const Line::Content&, const Vector<WeakPtr<InlineItem>>& floats);
         void alignRuns(TextAlignMode, InlineRuns&, unsigned firstRunIndex, LayoutUnit availableWidth) const;
 
     private:
         InlineFormattingContext& m_inlineFormattingContext;
+        UsedHorizontalValues m_usedHorizontalValues;
     };
 
     class Quirks : public FormattingContext::Quirks {
@@ -98,13 +101,13 @@
     };
     InlineFormattingContext::Geometry geometry() const { return Geometry(*this); }
 
-    void layoutFormattingContextRoot(const Box&, UsedHorizontalValues);
+    void layoutFormattingContextRoot(const Box&, UsedHorizontalValues, UsedVerticalValues);
     void computeMarginBorderAndPaddingForInlineContainer(const Container&, UsedHorizontalValues);
     void initializeMarginBorderAndPaddingForGenericInlineBox(const Box&);
-    void computeIntrinsicWidthForFormattingRoot(const Box&);
-    void computeWidthAndHeightForReplacedInlineBox(const Box&, UsedHorizontalValues);
+    void computeIntrinsicWidthForFormattingRoot(const Box&, UsedHorizontalValues);
+    void computeWidthAndHeightForReplacedInlineBox(const Box&, UsedHorizontalValues, UsedVerticalValues);
     void computeHorizontalMargin(const Box&, UsedHorizontalValues);
-    void computeHeightAndMargin(const Box&);
+    void computeHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues);
     void computeWidthAndMargin(const Box&, UsedHorizontalValues);
 
     void collectInlineContent();

Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp (250234 => 250235)


--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp	2019-09-23 15:54:58 UTC (rev 250234)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp	2019-09-23 16:14:21 UTC (rev 250235)
@@ -269,12 +269,13 @@
 {
 }
 
-InlineFormattingContext::InlineLayout::InlineLayout(InlineFormattingContext& inlineFormattingContext)
+InlineFormattingContext::InlineLayout::InlineLayout(InlineFormattingContext& inlineFormattingContext, UsedHorizontalValues usedHorizontalValues)
     : m_inlineFormattingContext(inlineFormattingContext)
+    , m_usedHorizontalValues(usedHorizontalValues)
 {
 }
 
-void InlineFormattingContext::InlineLayout::layout(const InlineItems& inlineItems, LayoutUnit widthConstraint)
+void InlineFormattingContext::InlineLayout::layout(const InlineItems& inlineItems)
 {
     auto& formattingContext = this->formattingContext();
     auto& formattingRoot = this->formattingRoot();
@@ -323,10 +324,10 @@
     IndexAndRange currentInlineItem;
     auto quirks = formattingContext.quirks();
     while (currentInlineItem.index < inlineItems.size()) {
-        auto lineInput = LineInput { { { lineLogicalLeft, lineLogicalTop }, widthConstraint, quirks.lineHeightConstraints(formattingRoot) }, Line::SkipVerticalAligment::No, currentInlineItem, inlineItems };
+        auto lineInput = LineInput { { { lineLogicalLeft, lineLogicalTop }, widthConstraint(), quirks.lineHeightConstraints(formattingRoot) }, Line::SkipVerticalAligment::No, currentInlineItem, inlineItems };
         applyFloatConstraint(lineInput);
         auto lineContent = LineLayout(formattingContext, lineInput).layout();
-        createDisplayRuns(*lineContent.runs, lineContent.floats, widthConstraint);
+        createDisplayRuns(*lineContent.runs, lineContent.floats);
         if (!lineContent.lastCommitted) {
             // Floats prevented us putting any content on the line.
             ASSERT(lineInput.floatMinimumLogicalBottom);
@@ -339,7 +340,7 @@
     }
 }
 
-LayoutUnit InlineFormattingContext::InlineLayout::computedIntrinsicWidth(const InlineItems& inlineItems, LayoutUnit widthConstraint) const
+LayoutUnit InlineFormattingContext::InlineLayout::computedIntrinsicWidth(const InlineItems& inlineItems) const
 {
     auto& formattingContext = this->formattingContext();
     LayoutUnit maximumLineWidth;
@@ -346,7 +347,7 @@
     IndexAndRange currentInlineItem;
     auto quirks = formattingContext.quirks();
     while (currentInlineItem.index < inlineItems.size()) {
-        auto lineContent = LineLayout(formattingContext, { { { }, widthConstraint, quirks.lineHeightConstraints(formattingRoot()) }, Line::SkipVerticalAligment::Yes, currentInlineItem, inlineItems }).layout();
+        auto lineContent = LineLayout(formattingContext, { { { }, widthConstraint(), quirks.lineHeightConstraints(formattingRoot()) }, Line::SkipVerticalAligment::Yes, currentInlineItem, inlineItems }).layout();
         currentInlineItem = { lineContent.lastCommitted->index + 1, WTF::nullopt };
         LayoutUnit floatsWidth;
         for (auto& floatItem : lineContent.floats)
@@ -356,7 +357,7 @@
     return maximumLineWidth;
 }
 
-void InlineFormattingContext::InlineLayout::createDisplayRuns(const Line::Content& lineContent, const Vector<WeakPtr<InlineItem>>& floats, LayoutUnit widthConstraint)
+void InlineFormattingContext::InlineLayout::createDisplayRuns(const Line::Content& lineContent, const Vector<WeakPtr<InlineItem>>& floats)
 {
     auto& formattingContext = this->formattingContext();
     auto& formattingState = this->formattingState();
@@ -402,12 +403,11 @@
             continue;
         }
 
-        auto usedHorizontalValues = UsedHorizontalValues { UsedHorizontalValues::Constraints { formattingContext.geometryForBox(*layoutBox.containingBlock()) } };
         // Inline level box (replaced or inline-block)
         if (lineRun->isBox()) {
             auto topLeft = logicalRect.topLeft();
             if (layoutBox.isInFlowPositioned())
-                topLeft += geometry.inFlowPositionedPositionOffset(layoutBox, usedHorizontalValues);
+                topLeft += geometry.inFlowPositionedPositionOffset(layoutBox, m_usedHorizontalValues);
             displayBox.setTopLeft(topLeft);
             lineBoxRect.expandHorizontally(logicalRect.width());
             formattingState.addInlineRun(makeUnique<Display::Run>(logicalRect));
@@ -424,7 +424,7 @@
         // Inline level container end (</span>)
         if (lineRun->isContainerEnd()) {
             if (layoutBox.isInFlowPositioned()) {
-                auto inflowOffset = geometry.inFlowPositionedPositionOffset(layoutBox, usedHorizontalValues);
+                auto inflowOffset = geometry.inFlowPositionedPositionOffset(layoutBox, m_usedHorizontalValues);
                 displayBox.moveHorizontally(inflowOffset.width());
                 displayBox.moveVertically(inflowOffset.height());
             }
@@ -467,7 +467,7 @@
     }
     // FIXME linebox needs to be ajusted after content alignment.
     formattingState.addLineBox({ lineBoxRect, lineContent.baseline(), lineContent.baselineOffset() });
-    alignRuns(formattingRoot().style().textAlign(), inlineDisplayRuns, previousLineLastRunIndex.valueOr(-1) + 1, widthConstraint - lineContent.logicalWidth());
+    alignRuns(formattingRoot().style().textAlign(), inlineDisplayRuns, previousLineLastRunIndex.valueOr(-1) + 1, widthConstraint() - lineContent.logicalWidth());
 }
 
 static Optional<LayoutUnit> horizontalAdjustmentForAlignment(TextAlignMode align, LayoutUnit remainingWidth)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to