Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc |
index cf99563b25553911c110a83b8f17ce39cc5e38e8..95a0349a1a5ed1763920ffad5805b716bcb2192d 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc |
@@ -49,7 +49,8 @@ NGConstraintSpace::NGConstraintSpace( |
margin_strut_(margin_strut), |
bfc_offset_(bfc_offset), |
exclusions_(exclusions), |
- clearance_offset_(clearance_offset) {} |
+ clearance_offset_(clearance_offset), |
+ layout_opp_iter_(nullptr) {} |
RefPtr<NGConstraintSpace> NGConstraintSpace::CreateFromLayoutObject( |
const LayoutBox& box) { |
@@ -126,14 +127,20 @@ RefPtr<NGConstraintSpace> NGConstraintSpace::CreateFromLayoutObject( |
void NGConstraintSpace::AddExclusion(const NGExclusion& exclusion) { |
exclusions_->Add(exclusion); |
+ // Invalidate the Layout Opportunity Iterator. |
+ layout_opp_iter_.reset(); |
} |
NGFragmentationType NGConstraintSpace::BlockFragmentationType() const { |
return static_cast<NGFragmentationType>(block_direction_fragmentation_type_); |
} |
-void NGConstraintSpace::Subtract(const NGBoxFragment*) { |
- // TODO(layout-ng): Implement. |
+NGLayoutOpportunityIterator* NGConstraintSpace::LayoutOpportunityIterator() { |
+ if (!layout_opp_iter_) { |
+ layout_opp_iter_ = |
+ WTF::makeUnique<NGLayoutOpportunityIterator>(this, this->bfc_offset_); |
+ } |
+ return layout_opp_iter_.get(); |
} |
String NGConstraintSpace::ToString() const { |