Commit 4c403999 authored by ikilpatrick's avatar ikilpatrick Committed by Commit bot

[LayoutNG] Don't pass parent NGFragmentBuilder into NGLineBuilder.

BUG=636993

Review-Url: https://codereview.chromium.org/2750213002
Cr-Commit-Position: refs/heads/master@{#457822}
parent e42e82d2
...@@ -458,14 +458,9 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() { ...@@ -458,14 +458,9 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() {
RefPtr<NGConstraintSpace> child_space = RefPtr<NGConstraintSpace> child_space =
CreateConstraintSpaceForChild(child); CreateConstraintSpaceForChild(child);
RefPtr<NGLayoutResult> layout_result =
child->Layout(child_space.get(), child_break_token);
RefPtr<NGLayoutResult> layout_result;
if (child->Type() == NGLayoutInputNode::kLegacyInline) {
layout_result = toNGInlineNode(child)->Layout(
child_space.get(), &builder_, child_break_token);
} else {
layout_result = child->Layout(child_space.get(), child_break_token);
}
FinishChildLayout(child, child_space.get(), layout_result); FinishChildLayout(child, child_space.get(), layout_result);
entry = child_iterator.NextChild(); entry = child_iterator.NextChild();
......
...@@ -263,17 +263,11 @@ void NGInlineNode::ShapeText() { ...@@ -263,17 +263,11 @@ void NGInlineNode::ShapeText() {
} }
} }
RefPtr<NGLayoutResult> NGInlineNode::Layout(NGConstraintSpace*, NGBreakToken*) {
ASSERT_NOT_REACHED();
return nullptr;
}
RefPtr<NGLayoutResult> NGInlineNode::Layout(NGConstraintSpace* constraint_space, RefPtr<NGLayoutResult> NGInlineNode::Layout(NGConstraintSpace* constraint_space,
NGFragmentBuilder* parent_builder, NGBreakToken*) {
NGBreakToken* break_token) {
// TODO(kojii): Invalidate PrepareLayout() more efficiently. // TODO(kojii): Invalidate PrepareLayout() more efficiently.
InvalidatePrepareLayout(); InvalidatePrepareLayout();
NGLineBuilder line_builder(this, constraint_space, parent_builder); NGLineBuilder line_builder(this, constraint_space);
Layout(&line_builder); Layout(&line_builder);
RefPtr<NGLayoutResult> result = line_builder.CreateFragments(); RefPtr<NGLayoutResult> result = line_builder.CreateFragments();
line_builder.CopyFragmentDataToLayoutBlockFlow(); line_builder.CopyFragmentDataToLayoutBlockFlow();
...@@ -301,7 +295,7 @@ MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() { ...@@ -301,7 +295,7 @@ MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() {
.SetTextDirection(BlockStyle()->direction()) .SetTextDirection(BlockStyle()->direction())
.SetAvailableSize({LayoutUnit(), NGSizeIndefinite}) .SetAvailableSize({LayoutUnit(), NGSizeIndefinite})
.ToConstraintSpace(writing_mode); .ToConstraintSpace(writing_mode);
NGLineBuilder line_builder(this, constraint_space.get(), nullptr); NGLineBuilder line_builder(this, constraint_space.get());
Layout(&line_builder); Layout(&line_builder);
MinMaxContentSize sizes; MinMaxContentSize sizes;
sizes.min_content = line_builder.MaxInlineSize(); sizes.min_content = line_builder.MaxInlineSize();
......
...@@ -25,7 +25,6 @@ class LayoutObject; ...@@ -25,7 +25,6 @@ class LayoutObject;
class LayoutUnit; class LayoutUnit;
struct MinMaxContentSize; struct MinMaxContentSize;
class NGConstraintSpace; class NGConstraintSpace;
class NGFragmentBuilder;
class NGLayoutInlineItem; class NGLayoutInlineItem;
class NGLayoutInlineItemRange; class NGLayoutInlineItemRange;
class NGLayoutInlineItemsBuilder; class NGLayoutInlineItemsBuilder;
...@@ -44,9 +43,6 @@ class CORE_EXPORT NGInlineNode : public NGLayoutInputNode { ...@@ -44,9 +43,6 @@ class CORE_EXPORT NGInlineNode : public NGLayoutInputNode {
NGLayoutInputNode* NextSibling() override; NGLayoutInputNode* NextSibling() override;
RefPtr<NGLayoutResult> Layout(NGConstraintSpace*, NGBreakToken*) override; RefPtr<NGLayoutResult> Layout(NGConstraintSpace*, NGBreakToken*) override;
RefPtr<NGLayoutResult> Layout(NGConstraintSpace*,
NGFragmentBuilder*,
NGBreakToken*);
LayoutObject* GetLayoutObject() override; LayoutObject* GetLayoutObject() override;
// Computes the value of min-content and max-content for this anonymous block // Computes the value of min-content and max-content for this anonymous block
......
...@@ -89,7 +89,7 @@ class NGInlineNodeTest : public RenderingTest { ...@@ -89,7 +89,7 @@ class NGInlineNodeTest : public RenderingTest {
RefPtr<NGConstraintSpace> constraint_space = RefPtr<NGConstraintSpace> constraint_space =
NGConstraintSpaceBuilder(kHorizontalTopBottom) NGConstraintSpaceBuilder(kHorizontalTopBottom)
.ToConstraintSpace(kHorizontalTopBottom); .ToConstraintSpace(kHorizontalTopBottom);
NGLineBuilder line_builder(node, constraint_space.get(), nullptr); NGLineBuilder line_builder(node, constraint_space.get());
NGTextLayoutAlgorithm algorithm(node); NGTextLayoutAlgorithm algorithm(node);
algorithm.LayoutInline(&line_builder); algorithm.LayoutInline(&line_builder);
......
...@@ -22,11 +22,9 @@ ...@@ -22,11 +22,9 @@
namespace blink { namespace blink {
NGLineBuilder::NGLineBuilder(NGInlineNode* inline_box, NGLineBuilder::NGLineBuilder(NGInlineNode* inline_box,
NGConstraintSpace* constraint_space, NGConstraintSpace* constraint_space)
NGFragmentBuilder* containing_block_builder)
: inline_box_(inline_box), : inline_box_(inline_box),
constraint_space_(constraint_space), constraint_space_(constraint_space),
containing_block_builder_(containing_block_builder),
container_builder_(NGPhysicalFragment::kFragmentBox, inline_box_), container_builder_(NGPhysicalFragment::kFragmentBox, inline_box_),
container_layout_result_(nullptr), container_layout_result_(nullptr),
is_horizontal_writing_mode_( is_horizontal_writing_mode_(
...@@ -309,13 +307,17 @@ void NGLineBuilder::PlaceItems( ...@@ -309,13 +307,17 @@ void NGLineBuilder::PlaceItems(
} else { } else {
LayoutObject* layout_object = item.GetLayoutObject(); LayoutObject* layout_object = item.GetLayoutObject();
if (layout_object->isOutOfFlowPositioned()) { if (layout_object->isOutOfFlowPositioned()) {
if (containing_block_builder_) { // Absolute positioning blockifies the box's display type.
// Absolute positioning blockifies the box's display type. // https://drafts.csswg.org/css-display/#transformations
// https://drafts.csswg.org/css-display/#transformations //
containing_block_builder_->AddOutOfFlowChildCandidate( // TODO(layout-dev): Report the correct static position for the out of
new NGBlockNode(layout_object), // flow descendant. We can't do this here yet as it doesn't know the
NGLogicalOffset(line_box_data.inline_size, content_size_)); // size of the line box.
} container_builder_.AddOutOfFlowDescendant(
new NGBlockNode(layout_object),
NGStaticPosition::Create(ConstraintSpace().WritingMode(),
ConstraintSpace().Direction(),
NGPhysicalOffset()));
continue; continue;
} else if (layout_object->isFloating()) { } else if (layout_object->isFloating()) {
// TODO(kojii): Implement float. // TODO(kojii): Implement float.
......
...@@ -31,7 +31,7 @@ class CORE_EXPORT NGLineBuilder final { ...@@ -31,7 +31,7 @@ class CORE_EXPORT NGLineBuilder final {
STACK_ALLOCATED(); STACK_ALLOCATED();
public: public:
NGLineBuilder(NGInlineNode*, NGConstraintSpace*, NGFragmentBuilder*); NGLineBuilder(NGInlineNode*, NGConstraintSpace*);
const NGConstraintSpace& ConstraintSpace() const { const NGConstraintSpace& ConstraintSpace() const {
return *constraint_space_; return *constraint_space_;
...@@ -159,7 +159,6 @@ class CORE_EXPORT NGLineBuilder final { ...@@ -159,7 +159,6 @@ class CORE_EXPORT NGLineBuilder final {
Persistent<NGInlineNode> inline_box_; Persistent<NGInlineNode> inline_box_;
NGConstraintSpace* constraint_space_; // Not owned as STACK_ALLOCATED. NGConstraintSpace* constraint_space_; // Not owned as STACK_ALLOCATED.
NGFragmentBuilder* containing_block_builder_;
Vector<RefPtr<NGLayoutResult>, 32> layout_results_; Vector<RefPtr<NGLayoutResult>, 32> layout_results_;
Vector<LineBoxData, 32> line_box_data_list_; Vector<LineBoxData, 32> line_box_data_list_;
unsigned start_index_ = 0; unsigned start_index_ = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment