Title: [281388] trunk/Source/WebCore
Revision
281388
Author
za...@apple.com
Date
2021-08-21 21:28:58 -0700 (Sat, 21 Aug 2021)

Log Message

[LFC][Integration] Do not create an InlineFormattingContext object for constructing display lines and runs
https://bugs.webkit.org/show_bug.cgi?id=228061

Reviewed by Sam Weinig.

We've got all we need in the inlineFormattingState object.

* layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLineRuns const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):
* layout/integration/LayoutIntegrationInlineContentBuilder.h:
* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::constructContent):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (281387 => 281388)


--- trunk/Source/WebCore/ChangeLog	2021-08-22 04:24:30 UTC (rev 281387)
+++ trunk/Source/WebCore/ChangeLog	2021-08-22 04:28:58 UTC (rev 281388)
@@ -1,5 +1,22 @@
 2021-08-21  Alan Bujtas  <za...@apple.com>
 
+        [LFC][Integration] Do not create an InlineFormattingContext object for constructing display lines and runs
+        https://bugs.webkit.org/show_bug.cgi?id=228061
+
+        Reviewed by Sam Weinig.
+
+        We've got all we need in the inlineFormattingState object.
+
+        * layout/integration/LayoutIntegrationInlineContentBuilder.cpp:
+        (WebCore::LayoutIntegration::InlineContentBuilder::build const):
+        (WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLineRuns const):
+        (WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):
+        * layout/integration/LayoutIntegrationInlineContentBuilder.h:
+        * layout/integration/LayoutIntegrationLineLayout.cpp:
+        (WebCore::LayoutIntegration::LineLayout::constructContent):
+
+2021-08-21  Alan Bujtas  <za...@apple.com>
+
         [LFC][IFC] Add support for -webkit-text-security: disc
         https://bugs.webkit.org/show_bug.cgi?id=229047
 

Modified: trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.cpp (281387 => 281388)


--- trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.cpp	2021-08-22 04:24:30 UTC (rev 281387)
+++ trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.cpp	2021-08-22 04:28:58 UTC (rev 281388)
@@ -164,13 +164,12 @@
 {
 }
 
-void InlineContentBuilder::build(const Layout::InlineFormattingContext& inlineFormattingContext, InlineContent& inlineContent) const
+void InlineContentBuilder::build(const Layout::InlineFormattingState& inlineFormattingState, InlineContent& inlineContent) const
 {
-    auto& inlineFormattingState = inlineFormattingContext.formattingState();
     auto lineLevelVisualAdjustmentsForRuns = computeLineLevelVisualAdjustmentsForRuns(inlineFormattingState);
-    createDisplayLineRuns(inlineFormattingState, inlineContent, lineLevelVisualAdjustmentsForRuns);
-    createDisplayNonRootInlineBoxes(inlineFormattingContext, inlineContent);
-    createDisplayLines(inlineFormattingState, inlineContent, lineLevelVisualAdjustmentsForRuns);
+    createDisplayLineRuns(inlineFormattingState.lines(), inlineFormattingState.lineRuns(), inlineContent, lineLevelVisualAdjustmentsForRuns);
+    createDisplayNonRootInlineBoxes(inlineFormattingState, inlineContent);
+    createDisplayLines(inlineFormattingState.lines(), inlineContent, lineLevelVisualAdjustmentsForRuns);
 }
 
 InlineContentBuilder::LineLevelVisualAdjustmentsForRunsList InlineContentBuilder::computeLineLevelVisualAdjustmentsForRuns(const Layout::InlineFormattingState& inlineFormattingState) const
@@ -218,12 +217,10 @@
     return lineLevelVisualAdjustmentsForRuns;
 }
 
-void InlineContentBuilder::createDisplayLineRuns(const Layout::InlineFormattingState& inlineFormattingState, InlineContent& inlineContent, const LineLevelVisualAdjustmentsForRunsList& lineLevelVisualAdjustmentsForRuns) const
+void InlineContentBuilder::createDisplayLineRuns(const Layout::InlineLines& lines, const Layout::InlineLineRuns& lineRuns, InlineContent& inlineContent, const LineLevelVisualAdjustmentsForRunsList& lineLevelVisualAdjustmentsForRuns) const
 {
-    auto& runList = inlineFormattingState.lineRuns();
-    if (runList.isEmpty())
+    if (lineRuns.isEmpty())
         return;
-    auto& lines = inlineFormattingState.lines();
 
 #if PROCESS_BIDI_CONTENT
     BidiResolver<Iterator, BidiRun> bidiResolver;
@@ -230,8 +227,8 @@
     // FIXME: Add support for override.
     bidiResolver.setStatus(BidiStatus(m_layoutState.root().style().direction(), false));
     // FIXME: Grab the nested isolates from the previous line.
-    bidiResolver.setPosition(Iterator(&runList, 0), 0);
-    bidiResolver.createBidiRunsForLine(Iterator(&runList, runList.size()));
+    bidiResolver.setPosition(Iterator(&lineRuns, 0), 0);
+    bidiResolver.createBidiRunsForLine(Iterator(&lineRuns, lineRuns.size()));
 #endif
 
     Vector<bool> hasAdjustedTrailingLineList(lines.size(), false);
@@ -309,8 +306,8 @@
         inlineContent.runs.append(displayRun);
     };
 
-    inlineContent.runs.reserveInitialCapacity(inlineFormattingState.lineRuns().size());
-    for (auto& lineRun : inlineFormattingState.lineRuns()) {
+    inlineContent.runs.reserveInitialCapacity(lineRuns.size());
+    for (auto& lineRun : lineRuns) {
         if (auto& text = lineRun.text())
             createDisplayTextRunForRange(lineRun, text->start(), text->end());
         else
@@ -318,9 +315,8 @@
     }
 }
 
-void InlineContentBuilder::createDisplayLines(const Layout::InlineFormattingState& inlineFormattingState, InlineContent& inlineContent, const LineLevelVisualAdjustmentsForRunsList& lineLevelVisualAdjustmentsForRuns) const
+void InlineContentBuilder::createDisplayLines(const Layout::InlineLines& lines, InlineContent& inlineContent, const LineLevelVisualAdjustmentsForRunsList& lineLevelVisualAdjustmentsForRuns) const
 {
-    auto& lines = inlineFormattingState.lines();
     auto& runs = inlineContent.runs;
     auto& nonRootInlineBoxes = inlineContent.nonRootInlineBoxes;
     size_t runIndex = 0;
@@ -374,10 +370,10 @@
     }
 }
 
-void InlineContentBuilder::createDisplayNonRootInlineBoxes(const Layout::InlineFormattingContext& inlineFormattingContext, InlineContent& inlineContent) const
+void InlineContentBuilder::createDisplayNonRootInlineBoxes(const Layout::InlineFormattingState& inlineFormattingState, InlineContent& inlineContent) const
 {
-    auto& inlineFormattingState = inlineFormattingContext.formattingState();
-    auto& inlineFormattingGeometry = downcast<Layout::InlineFormattingGeometry>(inlineFormattingContext.formattingGeometry());
+    auto inlineFormattingContext = Layout::InlineFormattingContext { m_boxTree.rootLayoutBox(), const_cast<Layout::InlineFormattingState&>(inlineFormattingState) };
+    auto& inlineFormattingGeometry = inlineFormattingContext.formattingGeometry();
     for (size_t lineIndex = 0; lineIndex < inlineFormattingState.lineBoxes().size(); ++lineIndex) {
         auto& lineBox = inlineFormattingState.lineBoxes()[lineIndex];
         if (!lineBox.hasInlineBox())

Modified: trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.h (281387 => 281388)


--- trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.h	2021-08-22 04:24:30 UTC (rev 281387)
+++ trunk/Source/WebCore/layout/integration/LayoutIntegrationInlineContentBuilder.h	2021-08-22 04:28:58 UTC (rev 281388)
@@ -27,6 +27,7 @@
 
 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
 
+#include "InlineFormattingState.h"
 #include <wtf/Vector.h>
 
 namespace WebCore {
@@ -33,16 +34,9 @@
 
 class RenderBlockFlow;
 
-namespace Layout {
-class InlineFormattingContext;
-class InlineFormattingState;
-class LayoutState;
-}
-
 namespace LayoutIntegration {
 
 class BoxTree;
-
 struct InlineContent;
 struct LineLevelVisualAdjustmentsForRuns;
 
@@ -50,15 +44,15 @@
 public:
     InlineContentBuilder(const Layout::LayoutState&, const RenderBlockFlow&, const BoxTree&);
 
-    void build(const Layout::InlineFormattingContext&, InlineContent&) const;
+    void build(const Layout::InlineFormattingState&, InlineContent&) const;
 
 private:
     using LineLevelVisualAdjustmentsForRunsList = Vector<LineLevelVisualAdjustmentsForRuns>;
 
     LineLevelVisualAdjustmentsForRunsList computeLineLevelVisualAdjustmentsForRuns(const Layout::InlineFormattingState&) const;
-    void createDisplayLineRuns(const Layout::InlineFormattingState&, InlineContent&, const LineLevelVisualAdjustmentsForRunsList&) const;
-    void createDisplayLines(const Layout::InlineFormattingState&, InlineContent&, const LineLevelVisualAdjustmentsForRunsList&) const;
-    void createDisplayNonRootInlineBoxes(const Layout::InlineFormattingContext&, InlineContent&) const;
+    void createDisplayLineRuns(const Layout::InlineLines&, const Layout::InlineLineRuns&, InlineContent&, const LineLevelVisualAdjustmentsForRunsList&) const;
+    void createDisplayLines(const Layout::InlineLines&, InlineContent&, const LineLevelVisualAdjustmentsForRunsList&) const;
+    void createDisplayNonRootInlineBoxes(const Layout::InlineFormattingState&, InlineContent&) const;
 
     const Layout::LayoutState& m_layoutState;
     const RenderBlockFlow& m_blockFlow;

Modified: trunk/Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp (281387 => 281388)


--- trunk/Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp	2021-08-22 04:24:30 UTC (rev 281387)
+++ trunk/Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp	2021-08-22 04:28:58 UTC (rev 281388)
@@ -226,10 +226,8 @@
 
 void LineLayout::constructContent()
 {
-    auto inlineFormattingContext = Layout::InlineFormattingContext { rootLayoutBox(), m_inlineFormattingState };
-
     auto inlineContentBuilder = InlineContentBuilder { m_layoutState, flow(), m_boxTree };
-    inlineContentBuilder.build(inlineFormattingContext, ensureInlineContent());
+    inlineContentBuilder.build(m_inlineFormattingState, ensureInlineContent());
     ASSERT(m_inlineContent);
 
     auto& boxAndRendererList = m_boxTree.boxAndRendererList();
@@ -239,8 +237,7 @@
             continue;
 
         auto& renderer = downcast<RenderBox>(*boxAndRenderer.renderer);
-        auto& boxGeometry = inlineFormattingContext.geometryForBox(layoutBox);
-        renderer.setLocation(Layout::BoxGeometry::borderBoxTopLeft(boxGeometry));
+        renderer.setLocation(Layout::BoxGeometry::borderBoxTopLeft(m_inlineFormattingState.boxGeometry(layoutBox)));
     }
 
     m_inlineContent->clearGapAfterLastLine = m_inlineFormattingState.clearGapAfterLastLine();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to