Index: third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc |
index 23456ec01553d3bf529eb8e5a24cca953706da55..5e395a79e9fd9c6ab22e2802056abec530eea6c1 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc |
@@ -22,11 +22,9 @@ |
namespace blink { |
NGLineBuilder::NGLineBuilder(NGInlineNode* inline_box, |
- NGConstraintSpace* constraint_space, |
- NGFragmentBuilder* containing_block_builder) |
+ NGConstraintSpace* constraint_space) |
: inline_box_(inline_box), |
constraint_space_(constraint_space), |
- containing_block_builder_(containing_block_builder), |
container_builder_(NGPhysicalFragment::kFragmentBox, inline_box_), |
container_layout_result_(nullptr), |
is_horizontal_writing_mode_( |
@@ -309,13 +307,17 @@ void NGLineBuilder::PlaceItems( |
} else { |
LayoutObject* layout_object = item.GetLayoutObject(); |
if (layout_object->isOutOfFlowPositioned()) { |
- if (containing_block_builder_) { |
- // Absolute positioning blockifies the box's display type. |
- // https://drafts.csswg.org/css-display/#transformations |
- containing_block_builder_->AddOutOfFlowChildCandidate( |
- new NGBlockNode(layout_object), |
- NGLogicalOffset(line_box_data.inline_size, content_size_)); |
- } |
+ // Absolute positioning blockifies the box's display type. |
+ // https://drafts.csswg.org/css-display/#transformations |
+ // |
+ // TODO(layout-dev): Report the correct static position for the out of |
+ // flow descendant. We can't do this here yet as it doesn't know the |
+ // size of the line box. |
+ container_builder_.AddOutOfFlowDescendant( |
+ new NGBlockNode(layout_object), |
+ NGStaticPosition::Create(ConstraintSpace().WritingMode(), |
+ ConstraintSpace().Direction(), |
+ NGPhysicalOffset())); |
continue; |
} else if (layout_object->isFloating()) { |
// TODO(kojii): Implement float. |