[LayoutNG] Remove NGConstraintSpaceBuilder "copy" constructor.
Reland of:
https://chromium-review.googlesource.com/c/chromium/src/+/617062
This removes the NGConstraintSpaceBuilder copy constructor which
took a mutable constraint space. The constructor now just picks off
the writing_mode, and icb_size, which are the two things that are
strictly required.
This is in preparation for making NGExclusionSpace immutable when
passed between layouts, via a copy. (Needed to const-ify
NGConstraintSpace in the ng_float_utils.cc file.
Bug: 635619
Change-Id: I082066d3b6ad6ebd08beba0a1ef4101a5624a298
Reviewed-on: https://chromium-review.googlesource.com/624857
Reviewed-by: Emil A Eklund <eae@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496114}
diff --git a/third_party/WebKit/Source/core/layout/ng/NGInlineLayoutTest.cpp b/third_party/WebKit/Source/core/layout/ng/NGInlineLayoutTest.cpp
index 934f151..6deee50a 100644
--- a/third_party/WebKit/Source/core/layout/ng/NGInlineLayoutTest.cpp
+++ b/third_party/WebKit/Source/core/layout/ng/NGInlineLayoutTest.cpp
@@ -24,7 +24,8 @@
RefPtr<NGConstraintSpace> ConstraintSpaceForElement(
LayoutNGBlockFlow* block_flow) {
return NGConstraintSpaceBuilder(
- FromPlatformWritingMode(block_flow->Style()->GetWritingMode()))
+ FromPlatformWritingMode(block_flow->Style()->GetWritingMode()),
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite})
.SetAvailableSize(NGLogicalSize(LayoutUnit(), LayoutUnit()))
.SetPercentageResolutionSize(NGLogicalSize(LayoutUnit(), LayoutUnit()))
.SetTextDirection(block_flow->Style()->Direction())
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
index 2ec8ee6..7048487f 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
@@ -58,8 +58,7 @@
TextDirection::kLtr,
break_token),
is_horizontal_writing_mode_(
- blink::IsHorizontalWritingMode(space->WritingMode())),
- space_builder_(space) {
+ blink::IsHorizontalWritingMode(space->WritingMode())) {
unpositioned_floats_ = ConstraintSpace().UnpositionedFloats();
if (!is_horizontal_writing_mode_)
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.h
index 36abcf0..02377379 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.h
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.h
@@ -76,7 +76,6 @@
unsigned is_horizontal_writing_mode_ : 1;
- NGConstraintSpaceBuilder space_builder_;
Vector<RefPtr<NGUnpositionedFloat>> unpositioned_floats_;
};
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
index cef7513..cc2f270 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
@@ -37,10 +37,14 @@
LayoutNGBlockFlow* block_flow =
ToLayoutNGBlockFlow(GetLayoutObjectByElementId("container"));
NGInlineNode inline_node(block_flow);
+ NGLogicalSize size(LayoutUnit(50), LayoutUnit(20));
+
RefPtr<NGConstraintSpace> constraint_space =
- NGConstraintSpaceBuilder(NGWritingMode::kHorizontalTopBottom)
- .SetAvailableSize({LayoutUnit(50), LayoutUnit(20)})
- .ToConstraintSpace(NGWritingMode::kHorizontalTopBottom);
+ NGConstraintSpaceBuilder(
+ kHorizontalTopBottom,
+ /* icb_size */ size.ConvertToPhysical(kHorizontalTopBottom))
+ .SetAvailableSize(size)
+ .ToConstraintSpace(kHorizontalTopBottom);
RefPtr<NGLayoutResult> layout_result =
inline_node.Layout(constraint_space.Get(), nullptr);
auto* wrapper =
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
index cfb5ee1..2fb00ee6 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
@@ -532,7 +532,9 @@
NGWritingMode writing_mode = FromPlatformWritingMode(style.GetWritingMode());
RefPtr<NGConstraintSpace> space =
- NGConstraintSpaceBuilder(writing_mode)
+ NGConstraintSpaceBuilder(
+ writing_mode,
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite})
.SetTextDirection(style.Direction())
.SetAvailableSize({available_inline_size, NGSizeIndefinite})
.ToConstraintSpace(writing_mode);
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc
index 9cb3870..2b5c503 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc
@@ -94,8 +94,10 @@
void CreateLine(NGInlineNode node,
Vector<RefPtr<const NGPhysicalTextFragment>>* fragments_out) {
+ NGPhysicalSize icb_size(LayoutUnit(200), LayoutUnit(200));
+
RefPtr<NGConstraintSpace> constraint_space =
- NGConstraintSpaceBuilder(kHorizontalTopBottom)
+ NGConstraintSpaceBuilder(kHorizontalTopBottom, icb_size)
.ToConstraintSpace(kHorizontalTopBottom);
RefPtr<NGLayoutResult> result =
NGInlineLayoutAlgorithm(node, constraint_space.Get()).Layout();
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
index 1c41535d..20eab0b 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
@@ -438,11 +438,12 @@
LayoutBox* layout_box = ToLayoutBox(item.GetLayoutObject());
NGBlockNode node = NGBlockNode(layout_box);
const ComputedStyle& style = node.Style();
- NGConstraintSpaceBuilder constraint_space_builder(constraint_space_);
+
+ NGConstraintSpaceBuilder space_builder(*constraint_space_);
// Request to compute baseline during the layout, except when we know the box
// would synthesize box-baseline.
if (NGBaseline::ShouldPropagateBaselines(layout_box)) {
- constraint_space_builder.AddBaselineRequest(
+ space_builder.AddBaselineRequest(
{line_info.UseFirstLineStyle()
? NGBaselineAlgorithmType::kAtomicInlineForFirstLine
: NGBaselineAlgorithmType::kAtomicInline,
@@ -451,8 +452,11 @@
: FontBaseline::kIdeographicBaseline});
}
RefPtr<NGConstraintSpace> constraint_space =
- constraint_space_builder.SetIsNewFormattingContext(true)
+ space_builder.SetIsNewFormattingContext(true)
.SetIsShrinkToFit(true)
+ .SetAvailableSize(constraint_space_->AvailableSize())
+ .SetPercentageResolutionSize(
+ constraint_space_->PercentageResolutionSize())
.SetTextDirection(style.Direction())
.ToConstraintSpace(FromPlatformWritingMode(style.GetWritingMode()));
item_result->layout_result = node.Layout(constraint_space.Get());
@@ -522,7 +526,7 @@
/* break_token */ nullptr);
LayoutUnit inline_size = ComputeInlineSizeForUnpositionedFloat(
- constraint_space_, unpositioned_float.Get());
+ *constraint_space_, unpositioned_float.Get());
// We can only determine if our float will fit if we have an available_width
// I.e. we may not have come across any text yet, in order to be able to
@@ -546,7 +550,8 @@
NGPositionedFloat positioned_float =
PositionFloat(origin_block_offset, container_bfc_offset.block_offset,
- unpositioned_float.Get(), constraint_space_);
+ unpositioned_float.Get(), *constraint_space_,
+ constraint_space_->ExclusionSpace().get());
container_builder_->AddChild(positioned_float.layout_result,
positioned_float.logical_offset);
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker_test.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker_test.cc
index 0498b692..4f4431c 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker_test.cc
@@ -32,7 +32,9 @@
node.PrepareLayout();
RefPtr<NGConstraintSpace> space =
- NGConstraintSpaceBuilder(NGWritingMode::kHorizontalTopBottom)
+ NGConstraintSpaceBuilder(
+ NGWritingMode::kHorizontalTopBottom,
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite})
.SetAvailableSize({available_width, NGSizeIndefinite})
.ToConstraintSpace(NGWritingMode::kHorizontalTopBottom);
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
index c691039..630490a 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
@@ -26,7 +26,9 @@
style_->SetBorderBottomStyle(EBorderStyle::kSolid);
style_->SetBoxSizing(EBoxSizing::kBorderBox);
container_size_ = NGLogicalSize(LayoutUnit(200), LayoutUnit(300));
- NGConstraintSpaceBuilder builder(kHorizontalTopBottom);
+ NGConstraintSpaceBuilder builder(
+ kHorizontalTopBottom,
+ /* icb_size */ container_size_.ConvertToPhysical(kHorizontalTopBottom));
builder.SetAvailableSize(container_size_);
ltr_space_ = builder.SetTextDirection(TextDirection::kLtr)
.ToConstraintSpace(kHorizontalTopBottom);
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 765cac4c..d941959 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
@@ -114,7 +114,8 @@
: space->FloatsBfcOffset().value().block_offset;
const auto positioned_floats = PositionFloats(
- origin_block_offset, from_block_offset, *unpositioned_floats, space);
+ origin_block_offset, from_block_offset, *unpositioned_floats, *space,
+ space->ExclusionSpace().get());
// TODO(ikilpatrick): Add DCHECK that any positioned floats are children.
@@ -768,20 +769,18 @@
LayoutUnit child_bfc_offset_estimate =
child_data.bfc_offset_estimate.block_offset;
- // 1. Position all pending floats to a temporary space.
- RefPtr<NGConstraintSpace> tmp_space =
- NGConstraintSpaceBuilder(&child_space)
- .SetIsNewFormattingContext(false)
- .ToConstraintSpace(child_space.WritingMode());
+ // 1. Position all pending floats to a temporary space, which is a copy of
+ // the current exclusion space.
+ NGExclusionSpace tmp_exclusion_space(
+ *ConstraintSpace().ExclusionSpace().get());
PositionFloats(child_bfc_offset_estimate, child_bfc_offset_estimate,
- unpositioned_floats_, tmp_space.Get());
+ unpositioned_floats_, ConstraintSpace(), &tmp_exclusion_space);
NGLogicalOffset origin_offset = {ConstraintSpace().BfcOffset().inline_offset +
border_scrollbar_padding_.inline_start,
child_bfc_offset_estimate};
- AdjustToClearance(
- ConstraintSpace().ExclusionSpace()->ClearanceOffset(child_style.Clear()),
- &origin_offset);
+ AdjustToClearance(tmp_exclusion_space.ClearanceOffset(child_style.Clear()),
+ &origin_offset);
// 2. Find an estimated layout opportunity for our fragment.
// TODO(ikilpatrick): Should fragment_margin_size be including the block
@@ -789,9 +788,8 @@
NGLogicalSize fragment_margin_size(
fragment.InlineSize() + child_data.margins.InlineSum(),
fragment.BlockSize() + child_data.margins.BlockSum());
- NGLayoutOpportunity opportunity =
- tmp_space->ExclusionSpace()->FindLayoutOpportunity(
- origin_offset, child_space.AvailableSize(), fragment_margin_size);
+ NGLayoutOpportunity opportunity = tmp_exclusion_space.FindLayoutOpportunity(
+ origin_offset, child_space.AvailableSize(), fragment_margin_size);
NGMarginStrut margin_strut = previous_inflow_position.margin_strut;
@@ -915,7 +913,7 @@
const ComputedStyle& child_style = child.Style();
RefPtr<NGConstraintSpace> space =
- NGConstraintSpaceBuilder(MutableConstraintSpace())
+ NGConstraintSpaceBuilder(ConstraintSpace())
.SetAvailableSize(child_available_size_)
.SetPercentageResolutionSize(child_percentage_size_)
.ToConstraintSpace(
@@ -943,8 +941,9 @@
const NGLayoutInputNode child,
const NGInflowChildData& child_data,
const WTF::Optional<NGLogicalOffset> floats_bfc_offset) {
- NGConstraintSpaceBuilder space_builder(MutableConstraintSpace());
- space_builder.SetAvailableSize(child_available_size_)
+ NGConstraintSpaceBuilder space_builder(ConstraintSpace());
+ space_builder.SetExclusionSpace(ConstraintSpace().ExclusionSpace())
+ .SetAvailableSize(child_available_size_)
.SetPercentageResolutionSize(child_percentage_size_);
if (NGBaseline::ShouldPropagateBaselines(child))
@@ -992,7 +991,8 @@
space_available -= child_data.bfc_offset_estimate.block_offset;
}
}
- space_builder.SetFragmentainerSpaceAvailable(space_available);
+ space_builder.SetFragmentainerSpaceAvailable(space_available)
+ .SetFragmentationType(constraint_space_->BlockFragmentationType());
return space_builder.ToConstraintSpace(
FromPlatformWritingMode(child_style.GetWritingMode()));
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
index 6634d19..4bae507 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
@@ -39,10 +39,11 @@
? NGFragmentationType::kFragmentColumn
: NGFragmentationType::kFragmentNone;
- return NGConstraintSpaceBuilder(writing_mode)
+ return NGConstraintSpaceBuilder(
+ writing_mode,
+ /* icb_size */ size.ConvertToPhysical(writing_mode))
.SetAvailableSize(size)
.SetPercentageResolutionSize(size)
- .SetInitialContainingBlockSize(size.ConvertToPhysical(writing_mode))
.SetTextDirection(direction)
.SetIsShrinkToFit(shrink_to_fit)
.SetIsNewFormattingContext(is_new_formatting_context)
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
index 55d14dd..336f279 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
@@ -123,7 +123,8 @@
RefPtr<NGConstraintSpace> constraint_space =
NGConstraintSpaceBuilder(
- FromPlatformWritingMode(Style().GetWritingMode()))
+ FromPlatformWritingMode(Style().GetWritingMode()),
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite})
.SetTextDirection(Style().Direction())
.ToConstraintSpace(FromPlatformWritingMode(Style().GetWritingMode()));
@@ -144,7 +145,8 @@
// Now, redo with infinite space for max_content
constraint_space =
NGConstraintSpaceBuilder(
- FromPlatformWritingMode(Style().GetWritingMode()))
+ FromPlatformWritingMode(Style().GetWritingMode()),
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite})
.SetTextDirection(Style().Direction())
.SetAvailableSize({LayoutUnit::Max(), LayoutUnit()})
.SetPercentageResolutionSize({LayoutUnit(), LayoutUnit()})
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 53dd312a..63fc8a7 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
@@ -133,10 +133,9 @@
DCHECK_GE(initial_containing_block_size.width, LayoutUnit());
DCHECK_GE(initial_containing_block_size.height, LayoutUnit());
- return NGConstraintSpaceBuilder(writing_mode)
+ return NGConstraintSpaceBuilder(writing_mode, initial_containing_block_size)
.SetAvailableSize(available_size)
.SetPercentageResolutionSize(percentage_size)
- .SetInitialContainingBlockSize(initial_containing_block_size)
.SetIsInlineDirectionTriggersScrollbar(
box.StyleRef().OverflowInlineDirection() == EOverflow::kAuto)
.SetIsBlockDirectionTriggersScrollbar(
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
index 7c2d2c15..c19fc84 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
@@ -74,6 +74,10 @@
// See: https://drafts.csswg.org/css-sizing/#available
NGLogicalSize AvailableSize() const { return available_size_; }
+ NGPhysicalSize InitialContainingBlockSize() const {
+ return initial_containing_block_size_;
+ }
+
// Return the block-direction space available in the current fragmentainer.
LayoutUnit FragmentainerSpaceAvailable() const {
DCHECK(HasBlockFragmentation());
@@ -202,10 +206,6 @@
const WTF::Optional<LayoutUnit>& clearance_offset,
Vector<NGBaselineRequest>& baseline_requests);
- NGPhysicalSize InitialContainingBlockSize() const {
- return initial_containing_block_size_;
- }
-
NGLogicalSize available_size_;
NGLogicalSize percentage_resolution_size_;
Optional<LayoutUnit> parent_percentage_resolution_inline_size_;
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
index e6f90fd3..8e4ffcb5 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
@@ -9,29 +9,13 @@
namespace blink {
NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(
- const NGConstraintSpace* parent_space)
- : available_size_(parent_space->AvailableSize()),
- percentage_resolution_size_(parent_space->PercentageResolutionSize()),
- parent_percentage_resolution_size_(
- parent_space->PercentageResolutionSize()),
- initial_containing_block_size_(
- parent_space->InitialContainingBlockSize()),
- fragmentainer_space_available_(NGSizeIndefinite),
- parent_writing_mode_(parent_space->WritingMode()),
- is_fixed_size_inline_(false),
- is_fixed_size_block_(false),
- is_shrink_to_fit_(false),
- is_inline_direction_triggers_scrollbar_(false),
- is_block_direction_triggers_scrollbar_(false),
- fragmentation_type_(parent_space->BlockFragmentationType()),
- is_new_fc_(parent_space->IsNewFormattingContext()),
- is_anonymous_(false),
- text_direction_(static_cast<unsigned>(parent_space->Direction())),
- bfc_offset_(parent_space->bfc_offset_),
- exclusion_space_(parent_space->ExclusionSpace()) {}
+ const NGConstraintSpace& parent_space)
+ : NGConstraintSpaceBuilder(parent_space.WritingMode(),
+ parent_space.InitialContainingBlockSize()) {}
-NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
- : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite},
+NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode,
+ NGPhysicalSize icb_size)
+ : initial_containing_block_size_(icb_size),
fragmentainer_space_available_(NGSizeIndefinite),
parent_writing_mode_(writing_mode),
is_fixed_size_inline_(false),
@@ -57,12 +41,6 @@
return *this;
}
-NGConstraintSpaceBuilder&
-NGConstraintSpaceBuilder::SetInitialContainingBlockSize(NGPhysicalSize size) {
- initial_containing_block_size_ = size;
- return *this;
-}
-
NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection(
TextDirection text_direction) {
text_direction_ = static_cast<unsigned>(text_direction);
@@ -93,6 +71,12 @@
return *this;
}
+NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetExclusionSpace(
+ std::shared_ptr<NGExclusionSpace> exclusion_space) {
+ exclusion_space_ = exclusion_space;
+ return *this;
+}
+
NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline(
bool is_fixed_size_inline) {
is_fixed_size_inline_ = is_fixed_size_inline;
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
index 7c5d3dc..c81bf1c 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
@@ -17,17 +17,18 @@
DISALLOW_NEW();
public:
- NGConstraintSpaceBuilder(const NGConstraintSpace* parent_space);
+ // NOTE: This constructor doesn't act like a copy-constructor, it uses the
+ // writing_mode and icb_size from the parent constraint space, and passes
+ // them to the constructor below.
+ NGConstraintSpaceBuilder(const NGConstraintSpace& parent_space);
- NGConstraintSpaceBuilder(NGWritingMode writing_mode);
+ NGConstraintSpaceBuilder(NGWritingMode writing_mode, NGPhysicalSize icb_size);
NGConstraintSpaceBuilder& SetAvailableSize(NGLogicalSize available_size);
NGConstraintSpaceBuilder& SetPercentageResolutionSize(
NGLogicalSize percentage_resolution_size);
- NGConstraintSpaceBuilder& SetInitialContainingBlockSize(NGPhysicalSize);
-
NGConstraintSpaceBuilder& SetFragmentainerSpaceAvailable(LayoutUnit space) {
fragmentainer_space_available_ = space;
return *this;
@@ -61,6 +62,9 @@
NGConstraintSpaceBuilder& SetClearanceOffset(
const WTF::Optional<LayoutUnit>& clearance_offset);
+ NGConstraintSpaceBuilder& SetExclusionSpace(
+ std::shared_ptr<NGExclusionSpace> exclusion_space);
+
void AddBaselineRequests(const Vector<NGBaselineRequest>&);
NGConstraintSpaceBuilder& AddBaselineRequest(const NGBaselineRequest&);
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
index f75866c..62f564f 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
@@ -22,17 +22,17 @@
// Asserts that indefinite inline length becomes initial containing
// block width for horizontal-tb inside vertical document.
TEST(NGConstraintSpaceBuilderTest, AvailableSizeFromHorizontalICB) {
- NGConstraintSpaceBuilder horizontal_builder(kHorizontalTopBottom);
- NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)};
- NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite};
NGPhysicalSize icb_size{NGSizeIndefinite, LayoutUnit(51)};
- horizontal_builder.SetInitialContainingBlockSize(icb_size);
+ NGConstraintSpaceBuilder horizontal_builder(kHorizontalTopBottom, icb_size);
+ NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)};
+ NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite};
+
horizontal_builder.SetAvailableSize(fixed_size);
horizontal_builder.SetPercentageResolutionSize(fixed_size);
NGConstraintSpaceBuilder vertical_builder(
- horizontal_builder.ToConstraintSpace(kHorizontalTopBottom).Get());
+ *horizontal_builder.ToConstraintSpace(kHorizontalTopBottom));
vertical_builder.SetAvailableSize(indefinite_size);
vertical_builder.SetPercentageResolutionSize(indefinite_size);
@@ -46,17 +46,17 @@
// Asserts that indefinite inline length becomes initial containing
// block height for vertical-lr inside horizontal document.
TEST(NGConstraintSpaceBuilderTest, AvailableSizeFromVerticalICB) {
- NGConstraintSpaceBuilder horizontal_builder(kVerticalLeftRight);
- NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)};
- NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite};
NGPhysicalSize icb_size{LayoutUnit(51), NGSizeIndefinite};
- horizontal_builder.SetInitialContainingBlockSize(icb_size);
+ NGConstraintSpaceBuilder horizontal_builder(kVerticalLeftRight, icb_size);
+ NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)};
+ NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite};
+
horizontal_builder.SetAvailableSize(fixed_size);
horizontal_builder.SetPercentageResolutionSize(fixed_size);
NGConstraintSpaceBuilder vertical_builder(
- horizontal_builder.ToConstraintSpace(kVerticalLeftRight).Get());
+ *horizontal_builder.ToConstraintSpace(kVerticalLeftRight));
vertical_builder.SetAvailableSize(indefinite_size);
vertical_builder.SetPercentageResolutionSize(indefinite_size);
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
index c685645..93cfaeaa 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
@@ -17,7 +17,9 @@
TextDirection direction,
NGLogicalSize size,
const NGLogicalOffset& bfc_offset = {}) {
- return NGConstraintSpaceBuilder(writing_mode)
+ return NGConstraintSpaceBuilder(
+ writing_mode,
+ /* icb_size */ size.ConvertToPhysical(writing_mode))
.SetTextDirection(direction)
.SetAvailableSize(size)
.SetPercentageResolutionSize(size)
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.cc b/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.cc
index 5f35a5e..84a35ec 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.cc
@@ -35,7 +35,7 @@
NGLayoutOpportunity NGExclusionSpace::FindLayoutOpportunity(
const NGLogicalOffset& offset,
const NGLogicalSize& available_size,
- const NGLogicalSize& minimum_size) {
+ const NGLogicalSize& minimum_size) const {
NGLayoutOpportunityIterator opportunity_iter(this, available_size, offset);
NGLayoutOpportunity opportunity;
@@ -51,7 +51,7 @@
return NGLayoutOpportunity();
}
-LayoutUnit NGExclusionSpace::ClearanceOffset(EClear clear_type) {
+LayoutUnit NGExclusionSpace::ClearanceOffset(EClear clear_type) const {
switch (clear_type) {
case EClear::kNone:
return LayoutUnit::Min(); // nothing to do here.
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.h b/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.h
index d773a50..424eb8f 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_exclusion_space.h
@@ -29,12 +29,13 @@
// Returns a layout opportunity, within the BFC, starting at the given offset,
// with a size greater than {@code minimum_size}.
- NGLayoutOpportunity FindLayoutOpportunity(const NGLogicalOffset& offset,
- const NGLogicalSize& available_size,
- const NGLogicalSize& minimum_size);
+ NGLayoutOpportunity FindLayoutOpportunity(
+ const NGLogicalOffset& offset,
+ const NGLogicalSize& available_size,
+ const NGLogicalSize& minimum_size) const;
// Returns the clearance offset based on the provided {@code clear_type}.
- LayoutUnit ClearanceOffset(EClear clear_type);
+ LayoutUnit ClearanceOffset(EClear clear_type) const;
// Returns the block start offset of the last float added.
LayoutUnit LastFloatBlockStart() const { return last_float_block_start_; }
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
index 6b17430..47180c0 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
@@ -20,25 +20,25 @@
// Top edge alignment rule: the outer top of a floating box may not be higher
// than the outer top of any block or floated box generated by an element
// earlier in the source document.
-NGLogicalOffset AdjustToTopEdgeAlignmentRule(const NGConstraintSpace& space,
- const NGLogicalOffset& offset) {
+NGLogicalOffset AdjustToTopEdgeAlignmentRule(
+ const NGExclusionSpace& exclusion_space,
+ const NGLogicalOffset& offset) {
NGLogicalOffset adjusted_offset = offset;
- adjusted_offset.block_offset =
- std::max(adjusted_offset.block_offset,
- space.ExclusionSpace()->LastFloatBlockStart());
+ adjusted_offset.block_offset = std::max(
+ adjusted_offset.block_offset, exclusion_space.LastFloatBlockStart());
return adjusted_offset;
}
NGLayoutOpportunity FindLayoutOpportunityForFloat(
const NGLogicalOffset& origin_offset,
- const NGConstraintSpace& space,
+ const NGExclusionSpace& exclusion_space,
const NGUnpositionedFloat& unpositioned_float,
LayoutUnit inline_size) {
NGLogicalOffset adjusted_origin_point =
- AdjustToTopEdgeAlignmentRule(space, origin_offset);
+ AdjustToTopEdgeAlignmentRule(exclusion_space, origin_offset);
WTF::Optional<LayoutUnit> clearance_offset =
- space.ExclusionSpace()->ClearanceOffset(unpositioned_float.ClearType());
+ exclusion_space.ClearanceOffset(unpositioned_float.ClearType());
AdjustToClearance(clearance_offset, &adjusted_origin_point);
@@ -46,7 +46,7 @@
LayoutUnit());
// TODO(ikilpatrick): Don't include the block-start margin of a float which
// has fragmented.
- return space.ExclusionSpace()->FindLayoutOpportunity(
+ return exclusion_space.FindLayoutOpportunity(
adjusted_origin_point, unpositioned_float.available_size, float_size);
}
@@ -111,7 +111,7 @@
// Creates a constraint space for an unpositioned float.
RefPtr<NGConstraintSpace> CreateConstraintSpaceForFloat(
const NGUnpositionedFloat& unpositioned_float,
- NGConstraintSpace* parent_space,
+ const NGConstraintSpace& parent_space,
WTF::Optional<LayoutUnit> fragmentation_offset = WTF::nullopt) {
const ComputedStyle& style = unpositioned_float.node.Style();
@@ -119,7 +119,7 @@
if (fragmentation_offset) {
builder.SetFragmentainerSpaceAvailable(fragmentation_offset.value())
- .SetFragmentationType(parent_space->BlockFragmentationType());
+ .SetFragmentationType(parent_space.BlockFragmentationType());
} else {
builder.SetFragmentationType(NGFragmentationType::kFragmentNone);
}
@@ -135,21 +135,21 @@
} // namespace
LayoutUnit ComputeInlineSizeForUnpositionedFloat(
- NGConstraintSpace* parent_space,
+ const NGConstraintSpace& parent_space,
NGUnpositionedFloat* unpositioned_float) {
DCHECK(unpositioned_float);
const ComputedStyle& style = unpositioned_float->node.Style();
bool is_same_writing_mode = FromPlatformWritingMode(style.GetWritingMode()) ==
- parent_space->WritingMode();
+ parent_space.WritingMode();
// If we've already performed layout on the unpositioned float, just return
// the cached value.
if (unpositioned_float->layout_result) {
DCHECK(!is_same_writing_mode);
return NGFragment(
- parent_space->WritingMode(),
+ parent_space.WritingMode(),
unpositioned_float->layout_result->PhysicalFragment().Get())
.InlineSize();
}
@@ -183,29 +183,30 @@
DCHECK(fragment->BreakToken()->IsFinished());
- return NGFragment(parent_space->WritingMode(), fragment).InlineSize();
+ return NGFragment(parent_space.WritingMode(), fragment).InlineSize();
}
NGPositionedFloat PositionFloat(LayoutUnit origin_block_offset,
LayoutUnit parent_bfc_block_offset,
NGUnpositionedFloat* unpositioned_float,
- NGConstraintSpace* new_parent_space) {
+ const NGConstraintSpace& parent_space,
+ NGExclusionSpace* exclusion_space) {
DCHECK(unpositioned_float);
- LayoutUnit inline_size = ComputeInlineSizeForUnpositionedFloat(
- new_parent_space, unpositioned_float);
+ LayoutUnit inline_size =
+ ComputeInlineSizeForUnpositionedFloat(parent_space, unpositioned_float);
NGLogicalOffset origin_offset = {unpositioned_float->origin_bfc_inline_offset,
origin_block_offset};
// Find a layout opportunity that will fit our float.
NGLayoutOpportunity opportunity = FindLayoutOpportunityForFloat(
- origin_offset, *new_parent_space, *unpositioned_float, inline_size);
+ origin_offset, *exclusion_space, *unpositioned_float, inline_size);
#if DCHECK_IS_ON()
bool is_same_writing_mode =
FromPlatformWritingMode(
unpositioned_float->node.Style().GetWritingMode()) ==
- new_parent_space->WritingMode();
+ parent_space.WritingMode();
#endif
RefPtr<NGLayoutResult> layout_result;
@@ -222,16 +223,16 @@
#endif
WTF::Optional<LayoutUnit> fragmentation_offset =
CalculateFragmentationOffset(origin_block_offset, *unpositioned_float,
- *new_parent_space);
+ parent_space);
RefPtr<NGConstraintSpace> space = CreateConstraintSpaceForFloat(
- *unpositioned_float, new_parent_space, fragmentation_offset);
+ *unpositioned_float, parent_space, fragmentation_offset);
layout_result = unpositioned_float->node.Layout(
space.Get(), unpositioned_float->token.Get());
}
NGBoxFragment float_fragment(
- new_parent_space->WritingMode(),
+ parent_space.WritingMode(),
ToNGPhysicalBoxFragment(layout_result.Get()->PhysicalFragment().Get()));
// TODO(glebl): This should check for infinite opportunity instead.
@@ -258,7 +259,7 @@
float_fragment, opportunity, float_offset, unpositioned_float->margins,
unpositioned_float->IsRight() ? NGExclusion::Type::kFloatRight
: NGExclusion::Type::kFloatLeft);
- new_parent_space->AddExclusion(exclusion);
+ exclusion_space->Add(exclusion);
NGLogicalOffset logical_offset = CalculateLogicalOffsetForOpportunity(
opportunity, float_offset, parent_bfc_block_offset, unpositioned_float);
@@ -270,14 +271,15 @@
LayoutUnit origin_block_offset,
LayoutUnit parent_bfc_block_offset,
const Vector<RefPtr<NGUnpositionedFloat>>& unpositioned_floats,
- NGConstraintSpace* space) {
+ const NGConstraintSpace& space,
+ NGExclusionSpace* exclusion_space) {
Vector<NGPositionedFloat> positioned_floats;
positioned_floats.ReserveCapacity(unpositioned_floats.size());
for (auto& unpositioned_float : unpositioned_floats) {
- positioned_floats.push_back(PositionFloat(origin_block_offset,
- parent_bfc_block_offset,
- unpositioned_float.Get(), space));
+ positioned_floats.push_back(
+ PositionFloat(origin_block_offset, parent_bfc_block_offset,
+ unpositioned_float.Get(), space, exclusion_space));
}
return positioned_floats;
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
index 1e5149b..78e0d88b 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
@@ -13,6 +13,7 @@
namespace blink {
class NGConstraintSpace;
+class NGExclusionSpace;
struct NGPositionedFloat;
struct NGUnpositionedFloat;
@@ -20,7 +21,7 @@
// unpositioned float. If the float is in a different writing mode, this will
// perform a layout.
CORE_EXPORT LayoutUnit
-ComputeInlineSizeForUnpositionedFloat(NGConstraintSpace* parent_space,
+ComputeInlineSizeForUnpositionedFloat(const NGConstraintSpace& parent_space,
NGUnpositionedFloat* unpositioned_float);
// Positions {@code unpositioned_float} into {@code new_parent_space}.
@@ -29,7 +30,8 @@
PositionFloat(LayoutUnit origin_block_offset,
LayoutUnit parent_bfc_block_offset,
NGUnpositionedFloat*,
- NGConstraintSpace* new_parent_space);
+ const NGConstraintSpace& parent_space,
+ NGExclusionSpace* exclusion_space);
// Positions the list of {@code unpositioned_floats}. Adds them as exclusions to
// {@code space}.
@@ -37,7 +39,8 @@
LayoutUnit origin_block_offset,
LayoutUnit container_block_offset,
const Vector<RefPtr<NGUnpositionedFloat>>& unpositioned_floats,
- NGConstraintSpace* space);
+ const NGConstraintSpace& space,
+ NGExclusionSpace* exclusion_space);
} // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
index 563dea3f..b4c9e46 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
@@ -194,9 +194,9 @@
// Synthesize a zero-sized constraint space for passing to
// ResolveInlineLength.
NGWritingMode writing_mode = FromPlatformWritingMode(style.GetWritingMode());
- NGConstraintSpaceBuilder builder(writing_mode);
- builder.SetInitialContainingBlockSize(
- NGPhysicalSize{LayoutUnit(), LayoutUnit()});
+ NGConstraintSpaceBuilder builder(
+ writing_mode,
+ /* icb_size */ {NGSizeIndefinite, NGSizeIndefinite});
RefPtr<NGConstraintSpace> space = builder.ToConstraintSpace(writing_mode);
MinMaxSize computed_sizes;
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
index eae247f..1ee3abb 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
@@ -26,11 +26,13 @@
bool fixed_inline = false,
bool fixed_block = false,
NGWritingMode writing_mode = NGWritingMode::kHorizontalTopBottom) {
- return NGConstraintSpaceBuilder(writing_mode)
- .SetAvailableSize(
- NGLogicalSize(LayoutUnit(inline_size), LayoutUnit(block_size)))
- .SetPercentageResolutionSize(
- NGLogicalSize(LayoutUnit(inline_size), LayoutUnit(block_size)))
+ NGLogicalSize size = {LayoutUnit(inline_size), LayoutUnit(block_size)};
+
+ return NGConstraintSpaceBuilder(
+ writing_mode,
+ /* icb_size */ size.ConvertToPhysical(writing_mode))
+ .SetAvailableSize(size)
+ .SetPercentageResolutionSize(size)
.SetIsFixedSizeInline(fixed_inline)
.SetIsFixedSizeBlock(fixed_block)
.ToConstraintSpace(writing_mode);
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
index ec0fc1e8..e0503cf 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -50,17 +50,11 @@
container_builder_->Size().ConvertToPhysical(writing_mode),
NGPhysicalSize());
- NGLogicalSize space_size = container_builder_->Size();
- space_size.block_size -= borders.BlockSum();
- space_size.inline_size -= borders.InlineSum();
+ container_size_ = container_builder_->Size();
+ container_size_.inline_size -= borders.InlineSum();
+ container_size_.block_size -= borders.BlockSum();
- // Initialize ConstraintSpace
- NGConstraintSpaceBuilder space_builder(writing_mode);
- space_builder.SetAvailableSize(space_size);
- space_builder.SetPercentageResolutionSize(space_size);
- space_builder.SetIsNewFormattingContext(true);
- space_builder.SetTextDirection(container_style_.Direction());
- container_space_ = space_builder.ToConstraintSpace(writing_mode);
+ icb_size_ = container_space.InitialContainingBlockSize();
}
void NGOutOfFlowLayoutPart::Run() {
@@ -95,6 +89,11 @@
NGLogicalOffset* offset) {
DCHECK(descendant);
+ NGWritingMode container_writing_mode(
+ FromPlatformWritingMode(container_style_.GetWritingMode()));
+ NGWritingMode descendant_writing_mode(
+ FromPlatformWritingMode(descendant.Style().GetWritingMode()));
+
// Adjust the static_position origin. The static_position coordinate origin is
// relative to the container's border box, ng_absolute_utils expects it to be
// relative to the container's padding box.
@@ -102,15 +101,15 @@
// The block estimate is in the descendant's writing mode.
RefPtr<NGConstraintSpace> descendant_constraint_space =
- NGConstraintSpaceBuilder(container_space_.Get())
- .ToConstraintSpace(
- FromPlatformWritingMode(descendant.Style().GetWritingMode()));
+ NGConstraintSpaceBuilder(container_writing_mode, icb_size_)
+ .SetTextDirection(container_style_.Direction())
+ .SetAvailableSize(container_size_)
+ .SetPercentageResolutionSize(container_size_)
+ .ToConstraintSpace(descendant_writing_mode);
Optional<MinMaxSize> min_max_size;
Optional<LayoutUnit> block_estimate;
RefPtr<NGLayoutResult> layout_result = nullptr;
- NGWritingMode descendant_writing_mode(
- FromPlatformWritingMode(descendant.Style().GetWritingMode()));
if (AbsoluteNeedsChildInlineSize(descendant.Style()) ||
NeedMinMaxSize(descendant.Style())) {
@@ -119,8 +118,8 @@
Optional<NGLogicalSize> replaced_size;
if (descendant.IsReplaced())
- replaced_size =
- ComputeReplacedSize(descendant, *container_space_, min_max_size);
+ replaced_size = ComputeReplacedSize(
+ descendant, *descendant_constraint_space, min_max_size);
NGAbsolutePhysicalPosition node_position =
ComputePartialAbsoluteWithChildInlineSize(
@@ -151,7 +150,7 @@
// Compute logical offset, NGAbsolutePhysicalPosition is calculated relative
// to the padding box so add back the container's borders.
NGBoxStrut inset = node_position.inset.ConvertToLogical(
- container_space_->WritingMode(), container_space_->Direction());
+ container_writing_mode, container_style_.Direction());
offset->inline_offset =
inset.inline_start + container_border_offset_.inline_offset;
offset->block_offset =
@@ -173,10 +172,10 @@
// the constraint space in the descendant's writing mode.
NGWritingMode writing_mode(
FromPlatformWritingMode(descendant.Style().GetWritingMode()));
- NGLogicalSize container_size(
- container_space_->AvailableSize()
- .ConvertToPhysical(container_space_->WritingMode())
- .ConvertToLogical(writing_mode));
+ NGLogicalSize container_size(container_size_
+ .ConvertToPhysical(FromPlatformWritingMode(
+ container_style_.GetWritingMode()))
+ .ConvertToLogical(writing_mode));
LayoutUnit inline_size =
node_position.size.ConvertToLogical(writing_mode).inline_size;
@@ -186,13 +185,14 @@
NGLogicalSize available_size{inline_size, block_size};
// TODO(atotic) will need to be adjusted for scrollbars.
- NGConstraintSpaceBuilder builder(writing_mode);
- builder.SetAvailableSize(available_size);
- builder.SetPercentageResolutionSize(container_size);
+ NGConstraintSpaceBuilder builder(writing_mode, icb_size_);
+ builder.SetAvailableSize(available_size)
+ .SetTextDirection(descendant.Style().Direction())
+ .SetPercentageResolutionSize(container_size)
+ .SetIsNewFormattingContext(true)
+ .SetIsFixedSizeInline(true);
if (block_estimate)
builder.SetIsFixedSizeBlock(true);
- builder.SetIsFixedSizeInline(true);
- builder.SetIsNewFormattingContext(true);
RefPtr<NGConstraintSpace> space = builder.ToConstraintSpace(writing_mode);
return descendant.Layout(space.Get());
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
index b186f9c..f3ceeec 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
@@ -47,7 +47,8 @@
NGLogicalOffset container_border_offset_;
NGPhysicalOffset container_border_physical_offset_;
- RefPtr<NGConstraintSpace> container_space_;
+ NGLogicalSize container_size_;
+ NGPhysicalSize icb_size_;
};
} // namespace blink