Index: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc |
index 946002fc732be72cf23a65589de80e484065eee4..1a584184b9bc5aaa389770efe39dd54ac84525d2 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc |
@@ -24,31 +24,6 @@ |
namespace blink { |
namespace { |
-// Positions pending floats stored on the fragment builder starting from |
-// {@code origin_point_block_offset}. |
-void PositionPendingFloats(const LayoutUnit origin_point_block_offset, |
- NGConstraintSpace* new_parent_space, |
- NGFragmentBuilder* builder) { |
- DCHECK(builder->BfcOffset()) << "Parent BFC offset should be known here"; |
- LayoutUnit bfc_block_offset = builder->BfcOffset().value().block_offset; |
- |
- for (auto& floating_object : builder->UnpositionedFloats()) { |
- const auto* float_space = floating_object->space.get(); |
- const NGConstraintSpace* original_parent_space = |
- floating_object->original_parent_space.get(); |
- |
- NGLogicalOffset origin_point = {float_space->BfcOffset().inline_offset, |
- origin_point_block_offset}; |
- NGLogicalOffset from_offset = { |
- original_parent_space->BfcOffset().inline_offset, bfc_block_offset}; |
- |
- NGLogicalOffset float_fragment_offset = PositionFloat( |
- origin_point, from_offset, floating_object.get(), new_parent_space); |
- builder->AddFloatingObject(floating_object, float_fragment_offset); |
- } |
- builder->MutableUnpositionedFloats().clear(); |
-} |
- |
// Returns if a child may be affected by its clear property. I.e. it will |
// actually clear a float. |
bool ClearanceMayAffectLayout( |
@@ -216,9 +191,7 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() { |
if (ConstraintSpace().IsNewFormattingContext()) { |
UpdateFragmentBfcOffset(curr_bfc_offset_); |
DCHECK_EQ(curr_margin_strut_, NGMarginStrut()); |
- // TODO(glebl): Uncomment the line below once we add the fragmentation |
- // support for floats. |
- // DCHECK_EQ(builder_.BfcOffset().value(), NGLogicalOffset()); |
+ DCHECK_EQ(builder_.BfcOffset().value(), NGLogicalOffset()); |
curr_bfc_offset_ = {}; |
} |
@@ -382,11 +355,13 @@ void NGBlockLayoutAlgorithm::FinishChildLayout( |
builder_.MutableUnpositionedFloats().appendVector( |
layout_result->UnpositionedFloats()); |
- if (child->Type() == NGLayoutInputNode::kLegacyBlock && |
- toNGBlockNode(child)->Style().isFloating()) { |
+ if (child->IsBlock() && child->Style().isFloating()) { |
+ NGLogicalOffset origin_offset = constraint_space_->BfcOffset(); |
+ origin_offset.inline_offset += border_and_padding_.inline_start; |
RefPtr<NGFloatingObject> floating_object = NGFloatingObject::Create( |
- child_space, constraint_space_, toNGBlockNode(child)->Style(), |
- curr_child_margins_, child_space->AvailableSize(), |
+ child->Style(), child_space->WritingMode(), |
+ child_space->AvailableSize(), origin_offset, |
+ constraint_space_->BfcOffset(), curr_child_margins_, |
layout_result->PhysicalFragment().get()); |
builder_.AddUnpositionedFloat(floating_object); |
// No need to postpone the positioning if we know the correct offset. |
@@ -545,9 +520,6 @@ RefPtr<NGConstraintSpace> NGBlockLayoutAlgorithm::CreateConstraintSpaceForChild( |
if (is_new_bfc) { |
DCHECK(builder_.BfcOffset()); |
space_available -= curr_bfc_offset_.block_offset; |
- // TODO(glebl): We need to reset BFCOffset in ToConstraintSpace() after we |
- // started handling the fragmentation for floats. |
- space_builder_.SetBfcOffset(NGLogicalOffset()); |
} |
} |
space_builder_.SetFragmentainerSpaceAvailable(space_available); |