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();