diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc | 443 |
1 files changed, 232 insertions, 211 deletions
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc b/chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc index 86af90137d8..dac7b8f79c4 100644 --- a/chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc +++ b/chromium/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc @@ -118,10 +118,10 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { LayoutUnit width = container_size_.inline_size - left - margin_left - right - margin_right; - base::Optional<MinMaxSize> estimated_inline; + base::Optional<MinMaxSizes> estimated_inline; base::Optional<LayoutUnit> estimated_block; - MinMaxSize minmax_60{LayoutUnit(60) + horizontal_border_padding, - LayoutUnit(60) + horizontal_border_padding}; + MinMaxSizes min_max_60{LayoutUnit(60) + horizontal_border_padding, + LayoutUnit(60) + horizontal_border_padding}; style_->SetBorderLeftWidth(border_left.ToInt()); style_->SetBorderRightWidth(border_right.ToInt()); @@ -154,151 +154,154 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { // Tests. // - NGLogicalOutOfFlowPosition p; + NGLogicalOutOfFlowDimensions dimensions; // All auto => width is estimated_inline, left is 0. SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = minmax_60; - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(minmax_60.min_size, p.size.inline_size); - EXPECT_EQ(LayoutUnit(0), p.inset.inline_start); + estimated_inline = min_max_60; + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); + EXPECT_EQ(LayoutUnit(0), dimensions.inset.inline_start); // All auto => width is estimated_inline, static_position is right SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = minmax_60; - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position_inline_end, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(minmax_60.min_size, p.size.inline_size); - EXPECT_EQ(container_size_.inline_size, p.inset.inline_end); + estimated_inline = min_max_60; + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position_inline_end, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); + EXPECT_EQ(container_size_.inline_size, dimensions.inset.inline_end); // All auto + RTL. - p = ComputePartialAbsoluteWithChildInlineSize( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(minmax_60.min_size, p.size.inline_size); - EXPECT_EQ(container_size_.inline_size - minmax_60.min_size, - p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(rtl_space_, *style_, rtl_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); + EXPECT_EQ(container_size_.inline_size - min_max_60.min_size, + dimensions.inset.inline_end); // left, right, and left are known, compute margins. SetHorizontalStyle(left, NGAuto, width, NGAuto, right); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - LayoutUnit margin_space = - (container_size_.inline_size - left - right - p.size.inline_size) / 2; - EXPECT_EQ(left + margin_space, p.inset.inline_start); - EXPECT_EQ(right + margin_space, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + LayoutUnit margin_space = (container_size_.inline_size - left - right - + dimensions.size.inline_size) / + 2; + EXPECT_EQ(left + margin_space, dimensions.inset.inline_start); + EXPECT_EQ(right + margin_space, dimensions.inset.inline_end); // left, right, and left are known, compute margins, writing mode vertical_lr. SetHorizontalStyle(left, NGAuto, width, NGAuto, right, WritingMode::kVerticalLr); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); estimated_inline.reset(); - ComputeFullAbsoluteWithChildBlockSize( - vlr_space_, *style_, vlr_border_padding, static_position, estimated_block, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(left + margin_space, p.inset.block_start); - EXPECT_EQ(right + margin_space, p.inset.block_end); + ComputeOutOfFlowBlockDimensions(vlr_space_, *style_, vlr_border_padding, + static_position, estimated_block, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(left + margin_space, dimensions.inset.block_start); + EXPECT_EQ(right + margin_space, dimensions.inset.block_end); // left, right, and left are known, compute margins, writing mode vertical_rl. SetHorizontalStyle(left, NGAuto, width, NGAuto, right, WritingMode::kVerticalRl); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); estimated_inline.reset(); - ComputeFullAbsoluteWithChildBlockSize( - vrl_space_, *style_, vrl_border_padding, static_position, estimated_block, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(left + margin_space, p.inset.block_end); - EXPECT_EQ(right + margin_space, p.inset.block_start); + ComputeOutOfFlowBlockDimensions(vrl_space_, *style_, vrl_border_padding, + static_position, estimated_block, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(left + margin_space, dimensions.inset.block_end); + EXPECT_EQ(right + margin_space, dimensions.inset.block_start); // left, right, and width are known, not enough space for margins LTR. SetHorizontalStyle(left, NGAuto, LayoutUnit(200), NGAuto, right); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(left, p.inset.inline_start); - EXPECT_EQ(-left, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(left, dimensions.inset.inline_start); + EXPECT_EQ(-left, dimensions.inset.inline_end); // left, right, and left are known, not enough space for margins RTL. SetHorizontalStyle(left, NGAuto, LayoutUnit(200), NGAuto, right, WritingMode::kHorizontalTb); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kRtl); - EXPECT_EQ(-right, p.inset.inline_start); - EXPECT_EQ(right, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(rtl_space_, *style_, rtl_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kRtl, &dimensions); + EXPECT_EQ(-right, dimensions.inset.inline_start); + EXPECT_EQ(right, dimensions.inset.inline_end); // Rule 1 left and width are auto. SetHorizontalStyle(NGAuto, margin_left, NGAuto, margin_right, right); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = minmax_60; - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(minmax_60.min_size, p.size.inline_size); + estimated_inline = min_max_60; + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); // Rule 2 left and right are auto LTR. SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(margin_left, p.inset.inline_start); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(margin_left, dimensions.inset.inline_start); EXPECT_EQ(container_size_.inline_size - margin_left - width, - p.inset.inline_end); + dimensions.inset.inline_end); // Rule 2 left and right are auto RTL. SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(margin_left, p.inset.inline_start); + ComputeOutOfFlowInlineDimensions(rtl_space_, *style_, rtl_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(margin_left, dimensions.inset.inline_start); EXPECT_EQ(container_size_.inline_size - margin_left - width, - p.inset.inline_end); + dimensions.inset.inline_end); // Rule 3 width and right are auto. SetHorizontalStyle(left, margin_left, NGAuto, margin_right, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = minmax_60; - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); + estimated_inline = min_max_60; + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); EXPECT_EQ( - container_size_.inline_size - minmax_60.min_size - left - margin_left, - p.inset.inline_end); - EXPECT_EQ(minmax_60.min_size, p.size.inline_size); + container_size_.inline_size - min_max_60.min_size - left - margin_left, + dimensions.inset.inline_end); + EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); // Rule 4: left is auto. SetHorizontalStyle(NGAuto, margin_left, width, margin_right, right); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(left + margin_left, p.inset.inline_start); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(left + margin_left, dimensions.inset.inline_start); // Rule 4: left is auto, EBoxSizing::kContentBox style_->SetBoxSizing(EBoxSizing::kContentBox); @@ -307,32 +310,32 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { margin_right, right); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(left + margin_left, p.inset.inline_start); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(left + margin_left, dimensions.inset.inline_start); style_->SetBoxSizing(EBoxSizing::kBorderBox); // Rule 5: right is auto. SetHorizontalStyle(left, margin_left, width, margin_right, NGAuto); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(right + margin_right, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(right + margin_right, dimensions.inset.inline_end); // Rule 6: width is auto. SetHorizontalStyle(left, margin_left, NGAuto, margin_right, right); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); estimated_inline.reset(); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(width, p.size.inline_size); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(width, dimensions.size.inline_size); } TEST_F(NGAbsoluteUtilsTest, Vertical) { @@ -365,7 +368,7 @@ TEST_F(NGAbsoluteUtilsTest, Vertical) { style_->SetBorderRightWidth(0); base::Optional<LayoutUnit> auto_height; - MinMaxSize minmax_60{LayoutUnit(60), LayoutUnit(60)}; + MinMaxSizes min_max_60{LayoutUnit(60), LayoutUnit(60)}; NGBoxStrut ltr_border_padding = ComputeBordersForTest(*style_) + ComputePadding(ltr_space_, *style_); @@ -387,133 +390,145 @@ TEST_F(NGAbsoluteUtilsTest, Vertical) { // Tests // - NGLogicalOutOfFlowPosition p; + NGLogicalOutOfFlowDimensions dimensions; // All auto, compute margins. SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); auto_height = LayoutUnit(60); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(*auto_height, p.size.block_size); - EXPECT_EQ(LayoutUnit(0), p.inset.block_start); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(*auto_height, dimensions.size.block_size); + EXPECT_EQ(LayoutUnit(0), dimensions.inset.block_start); // All auto, static position bottom - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position_block_end, - auto_height, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr, &p); - EXPECT_EQ(container_size_.block_size, p.inset.block_end); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position_block_end, auto_height, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(container_size_.block_size, dimensions.inset.block_end); // If top, bottom, and height are known, compute margins. SetVerticalStyle(top, NGAuto, height, NGAuto, bottom); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); auto_height.reset(); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); LayoutUnit margin_space = (container_size_.block_size - top - height - bottom) / 2; - EXPECT_EQ(top + margin_space, p.inset.block_start); - EXPECT_EQ(bottom + margin_space, p.inset.block_end); + EXPECT_EQ(top + margin_space, dimensions.inset.block_start); + EXPECT_EQ(bottom + margin_space, dimensions.inset.block_end); // If top, bottom, and height are known, writing mode vertical_lr. SetVerticalStyle(top, NGAuto, height, NGAuto, bottom, WritingMode::kVerticalLr); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - p = ComputePartialAbsoluteWithChildInlineSize( - vlr_space_, *style_, vlr_border_padding, static_position, minmax_60, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr); - EXPECT_EQ(top + margin_space, p.inset.inline_start); - EXPECT_EQ(bottom + margin_space, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(vlr_space_, *style_, vlr_border_padding, + static_position, min_max_60, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(top + margin_space, dimensions.inset.inline_start); + EXPECT_EQ(bottom + margin_space, dimensions.inset.inline_end); // If top, bottom, and height are known, writing mode vertical_rl. SetVerticalStyle(top, NGAuto, height, NGAuto, bottom, WritingMode::kVerticalRl); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - p = ComputePartialAbsoluteWithChildInlineSize( - vrl_space_, *style_, vrl_border_padding, static_position, minmax_60, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr); - EXPECT_EQ(top + margin_space, p.inset.inline_start); - EXPECT_EQ(bottom + margin_space, p.inset.inline_end); + ComputeOutOfFlowInlineDimensions(vrl_space_, *style_, vrl_border_padding, + static_position, min_max_60, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(top + margin_space, dimensions.inset.inline_start); + EXPECT_EQ(bottom + margin_space, dimensions.inset.inline_end); // If top, bottom, and height are known, negative auto margins. LayoutUnit negative_margin_space = (container_size_.block_size - top - LayoutUnit(300) - bottom) / 2; SetVerticalStyle(top, NGAuto, LayoutUnit(300), NGAuto, bottom); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(top + negative_margin_space, p.inset.block_start); - EXPECT_EQ(bottom + negative_margin_space, p.inset.block_end); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(top + negative_margin_space, dimensions.inset.block_start); + EXPECT_EQ(bottom + negative_margin_space, dimensions.inset.block_end); // Rule 1: top and height are unknown. SetVerticalStyle(NGAuto, margin_top, NGAuto, margin_bottom, bottom); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); auto_height = LayoutUnit(60); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(*auto_height, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(*auto_height, dimensions.size.block_size); // Rule 2: top and bottom are unknown. SetVerticalStyle(NGAuto, margin_top, height, margin_bottom, NGAuto); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); auto_height.reset(); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(margin_top, p.inset.block_start); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(margin_top, dimensions.inset.block_start); EXPECT_EQ(container_size_.block_size - margin_top - height, - p.inset.block_end); + dimensions.inset.block_end); // Rule 3: height and bottom are unknown, auto_height < // horizontal_border_padding. SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, NGAuto); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); auto_height = LayoutUnit(20); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(horizontal_border_padding, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(horizontal_border_padding, dimensions.size.block_size); // Rule 3: height and bottom are unknown. SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, NGAuto); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); auto_height = LayoutUnit(70); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(*auto_height, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(*auto_height, dimensions.size.block_size); // Rule 4: top is unknown. SetVerticalStyle(NGAuto, margin_top, height, margin_bottom, bottom); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); auto_height.reset(); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(top + margin_top, p.inset.block_start); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(top + margin_top, dimensions.inset.block_start); // Rule 5: bottom is unknown. SetVerticalStyle(top, margin_top, height, margin_bottom, NGAuto); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); auto_height.reset(); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(bottom + margin_bottom, p.inset.block_end); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(bottom + margin_bottom, dimensions.inset.block_end); // Rule 6: height is unknown. SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, bottom); EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); auto_height.reset(); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(height, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(height, dimensions.size.block_size); } TEST_F(NGAbsoluteUtilsTest, CenterStaticPosition) { @@ -529,28 +544,31 @@ TEST_F(NGAbsoluteUtilsTest, CenterStaticPosition) { EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); NGBoxStrut border_padding; - NGLogicalOutOfFlowPosition p = ComputePartialAbsoluteWithChildInlineSize( + NGLogicalOutOfFlowDimensions dimensions; + + ComputeOutOfFlowInlineDimensions( ltr_space_, *style_, border_padding, static_position, - MinMaxSize{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, - WritingMode::kHorizontalTb, TextDirection::kLtr); - EXPECT_EQ(LayoutUnit(100), p.size.inline_size); - EXPECT_EQ(LayoutUnit(100), p.inset.inline_start); - EXPECT_EQ(LayoutUnit(), p.inset.inline_end); + MinMaxSizes{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, + WritingMode::kHorizontalTb, TextDirection::kLtr, &dimensions); + EXPECT_EQ(LayoutUnit(100), dimensions.size.inline_size); + EXPECT_EQ(LayoutUnit(100), dimensions.inset.inline_start); + EXPECT_EQ(LayoutUnit(), dimensions.inset.inline_end); - p = ComputePartialAbsoluteWithChildInlineSize( + ComputeOutOfFlowInlineDimensions( ltr_space_, *style_, border_padding, static_position, - MinMaxSize{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, - WritingMode::kHorizontalTb, TextDirection::kRtl); - EXPECT_EQ(LayoutUnit(100), p.size.inline_size); - EXPECT_EQ(LayoutUnit(100), p.inset.inline_start); - EXPECT_EQ(LayoutUnit(), p.inset.inline_end); - - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, border_padding, static_position, LayoutUnit(150), - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(LayoutUnit(150), p.size.block_size); - EXPECT_EQ(LayoutUnit(125), p.inset.block_start); - EXPECT_EQ(LayoutUnit(25), p.inset.block_end); + MinMaxSizes{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, + WritingMode::kHorizontalTb, TextDirection::kRtl, &dimensions); + EXPECT_EQ(LayoutUnit(100), dimensions.size.inline_size); + EXPECT_EQ(LayoutUnit(100), dimensions.inset.inline_start); + EXPECT_EQ(LayoutUnit(), dimensions.inset.inline_end); + + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, border_padding, + static_position, LayoutUnit(150), + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(LayoutUnit(150), dimensions.size.block_size); + EXPECT_EQ(LayoutUnit(125), dimensions.inset.block_start); + EXPECT_EQ(LayoutUnit(25), dimensions.inset.block_end); } TEST_F(NGAbsoluteUtilsTest, MinMax) { @@ -569,34 +587,34 @@ TEST_F(NGAbsoluteUtilsTest, MinMax) { {LayoutUnit(), LayoutUnit()}, NGLogicalStaticPosition::kInlineStart, NGLogicalStaticPosition::kBlockStart}; - MinMaxSize estimated_inline{LayoutUnit(20), LayoutUnit(20)}; - NGLogicalOutOfFlowPosition p; + MinMaxSizes estimated_inline{LayoutUnit(20), LayoutUnit(20)}; + NGLogicalOutOfFlowDimensions dimensions; // WIDTH TESTS // width < min gets set to min. SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(min, p.size.inline_size); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min, dimensions.size.inline_size); // width > max gets set to max. SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(max, p.size.inline_size); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(max, dimensions.size.inline_size); - // Unspecified width becomes minmax, gets clamped to min. + // Unspecified width becomes min_max, gets clamped to min. SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - p = ComputePartialAbsoluteWithChildInlineSize( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, WritingMode::kHorizontalTb, - TextDirection::kLtr); - EXPECT_EQ(min, p.size.inline_size); + ComputeOutOfFlowInlineDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, estimated_inline, + base::nullopt, WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min, dimensions.size.inline_size); // HEIGHT TESTS @@ -604,25 +622,28 @@ TEST_F(NGAbsoluteUtilsTest, MinMax) { // height < min gets set to min. SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(min, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min, dimensions.size.block_size); // height > max gets set to max. SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(max, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(max, dimensions.size.block_size); // // Unspecified height becomes estimated, gets clamped to min. SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); auto_height = LayoutUnit(20); - ComputeFullAbsoluteWithChildBlockSize( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, - base::nullopt, WritingMode::kHorizontalTb, TextDirection::kLtr, &p); - EXPECT_EQ(min, p.size.block_size); + ComputeOutOfFlowBlockDimensions(ltr_space_, *style_, ltr_border_padding, + static_position, auto_height, base::nullopt, + WritingMode::kHorizontalTb, + TextDirection::kLtr, &dimensions); + EXPECT_EQ(min, dimensions.size.block_size); } } // namespace |