Commit 49b2b8a8 authored by atotic's avatar atotic Committed by Commit bot

Fixes calculation of abspos style properties:

left/padding/width/height...
Replaced NGSizeIndefinite with Optional<LayoutUnit>

Fixed a couple of minor bugs where AvailableSize was incorrect.

Passing ~30 more tests.

BUG=635619

Review-Url: https://codereview.chromium.org/2616613003
Cr-Commit-Position: refs/heads/master@{#441881}
parent 777a4089
...@@ -182,22 +182,17 @@ crbug.com/674468 [ Trusty ] compositing/reflections/nested-reflection-transition ...@@ -182,22 +182,17 @@ crbug.com/674468 [ Trusty ] compositing/reflections/nested-reflection-transition
# LayoutNG - is a new layout system for Blink. # LayoutNG - is a new layout system for Blink.
#### css2.1/20110323 #### css2.1/20110323
#### Passed: 175 #### Passed: 202
#### Skipped: 234 #### Skipped: 207
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-001.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-001.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-002.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-003.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-004.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-004.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-005.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-005.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-006.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-006.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-007.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-008.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-009.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-009.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-010.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-010.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-011.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-011.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-012.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-height-012.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-001.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-001.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-002.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-003.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-003.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-004.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-004.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-005.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-005.htm [ Skip ]
...@@ -207,22 +202,10 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-hei ...@@ -207,22 +202,10 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-hei
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-010.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-010.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-011.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-011.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-012.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-max-height-012.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-001.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-002.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-003.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-004.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-005.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-006.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-006.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-007.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-007.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-008.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-008.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-009.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-009.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-010.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-011.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-012.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-013.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-014.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-015.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-016.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-017.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-017.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-018.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-018.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-019.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-non-replaced-width-019.htm [ Skip ]
...@@ -237,9 +220,6 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-003. ...@@ -237,9 +220,6 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-003.
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-004.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-004.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-005.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-005.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-007.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-007.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-008.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-009.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-010.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-011.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-011.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-012.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-012.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-014.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-014.htm [ Skip ]
...@@ -248,13 +228,11 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-017. ...@@ -248,13 +228,11 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-017.
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-018.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-018.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-019.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-019.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-021.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-021.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-022.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-023.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-023.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-024.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-024.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-025.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-025.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-026.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-026.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-028.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-028.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-029.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-030.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-030.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-031.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-031.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-032.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-height-032.htm [ Skip ]
...@@ -284,19 +262,11 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-069.h ...@@ -284,19 +262,11 @@ crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-069.h
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-071.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-071.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-076.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/absolute-replaced-width-076.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-001.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-001.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004a.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004b.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004c.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004c.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004d.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004d.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004e.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-004f.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-005b.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-005b.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-005d.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-005d.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-007.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-009a.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-009a.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-009b.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-009e.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-containing-block-initial-009f.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-non-replaced-width-margin-000.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-non-replaced-width-margin-000.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-replaced-width-margin-000.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/abspos-replaced-width-margin-000.htm [ Skip ]
crbug.com/635619 virtual/layout_ng/css2.1/20110323/background-intrinsic-001.htm [ Skip ] crbug.com/635619 virtual/layout_ng/css2.1/20110323/background-intrinsic-001.htm [ Skip ]
......
...@@ -50,7 +50,7 @@ ComputePartialAbsoluteWithChildInlineSize( ...@@ -50,7 +50,7 @@ ComputePartialAbsoluteWithChildInlineSize(
const NGConstraintSpace& space, const NGConstraintSpace& space,
const ComputedStyle& style, const ComputedStyle& style,
const NGStaticPosition&, const NGStaticPosition&,
const Optional<LayoutUnit>& child_inline_size); const Optional<MinAndMaxContentSizes>& child_minmax);
// Compute rest of NGPhysicalRect that depends on child's block_size. // Compute rest of NGPhysicalRect that depends on child's block_size.
CORE_EXPORT void ComputeFullAbsoluteWithChildBlockSize( CORE_EXPORT void ComputeFullAbsoluteWithChildBlockSize(
......
...@@ -111,7 +111,8 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { ...@@ -111,7 +111,8 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) {
LayoutUnit width = LayoutUnit width =
container_size_.inline_size - left - margin_left - right - margin_right; container_size_.inline_size - left - margin_left - right - margin_right;
Optional<LayoutUnit> estimated_inline; Optional<MinAndMaxContentSizes> estimated_inline;
MinAndMaxContentSizes minmax_60{LayoutUnit(60), LayoutUnit(60)};
style_->setBorderLeftWidth(border_left.toInt()); style_->setBorderLeftWidth(border_left.toInt());
style_->setBorderRightWidth(border_right.toInt()); style_->setBorderRightWidth(border_right.toInt());
...@@ -135,26 +136,26 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { ...@@ -135,26 +136,26 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) {
// All auto => width is estimated_inline, left is 0. // All auto => width is estimated_inline, left is 0.
SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto);
EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true);
estimated_inline = LayoutUnit(60); estimated_inline = minmax_60;
p = ComputePartialAbsoluteWithChildInlineSize( p = ComputePartialAbsoluteWithChildInlineSize(
*ltr_space_, *style_, static_position, estimated_inline); *ltr_space_, *style_, static_position, estimated_inline);
EXPECT_EQ(*estimated_inline, p.size.width); EXPECT_EQ(minmax_60.min_content, p.size.width);
EXPECT_EQ(LayoutUnit(0), p.inset.left); EXPECT_EQ(LayoutUnit(0), p.inset.left);
// All auto => width is estimated_inline, static_position is right // All auto => width is estimated_inline, static_position is right
SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto);
EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true);
estimated_inline = LayoutUnit(60); estimated_inline = minmax_60;
p = ComputePartialAbsoluteWithChildInlineSize( p = ComputePartialAbsoluteWithChildInlineSize(
*ltr_space_, *style_, static_right_position, estimated_inline); *ltr_space_, *style_, static_right_position, estimated_inline);
EXPECT_EQ(*estimated_inline, p.size.width); EXPECT_EQ(minmax_60.min_content, p.size.width);
EXPECT_EQ(LayoutUnit(0), p.inset.right); EXPECT_EQ(LayoutUnit(0), p.inset.right);
// All auto + RTL. // All auto + RTL.
p = ComputePartialAbsoluteWithChildInlineSize( p = ComputePartialAbsoluteWithChildInlineSize(
*rtl_space_, *style_, static_position, estimated_inline); *rtl_space_, *style_, static_position, estimated_inline);
EXPECT_EQ(*estimated_inline, p.size.width); EXPECT_EQ(minmax_60.min_content, p.size.width);
EXPECT_EQ(container_size_.inline_size - *estimated_inline, p.inset.right); EXPECT_EQ(container_size_.inline_size - minmax_60.min_content, p.inset.right);
// left, right, and left are known, compute margins. // left, right, and left are known, compute margins.
SetHorizontalStyle(left, NGAuto, width, NGAuto, right); SetHorizontalStyle(left, NGAuto, width, NGAuto, right);
...@@ -204,10 +205,10 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { ...@@ -204,10 +205,10 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) {
// Rule 1 left and width are auto. // Rule 1 left and width are auto.
SetHorizontalStyle(NGAuto, margin_left, NGAuto, margin_right, right); SetHorizontalStyle(NGAuto, margin_left, NGAuto, margin_right, right);
EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true);
estimated_inline = LayoutUnit(60); estimated_inline = minmax_60;
p = ComputePartialAbsoluteWithChildInlineSize( p = ComputePartialAbsoluteWithChildInlineSize(
*ltr_space_, *style_, static_position, estimated_inline); *ltr_space_, *style_, static_position, estimated_inline);
EXPECT_EQ(*estimated_inline, p.size.width); EXPECT_EQ(minmax_60.min_content, p.size.width);
// Rule 2 left and right are auto LTR. // Rule 2 left and right are auto LTR.
SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto); SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto);
...@@ -230,13 +231,13 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { ...@@ -230,13 +231,13 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) {
// Rule 3 width and right are auto. // Rule 3 width and right are auto.
SetHorizontalStyle(left, margin_left, NGAuto, margin_right, NGAuto); SetHorizontalStyle(left, margin_left, NGAuto, margin_right, NGAuto);
EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true);
estimated_inline = LayoutUnit(60); estimated_inline = minmax_60;
p = ComputePartialAbsoluteWithChildInlineSize( p = ComputePartialAbsoluteWithChildInlineSize(
*ltr_space_, *style_, static_position, estimated_inline); *ltr_space_, *style_, static_position, estimated_inline);
EXPECT_EQ( EXPECT_EQ(
container_size_.inline_size - *estimated_inline - left - margin_left, container_size_.inline_size - minmax_60.min_content - left - margin_left,
p.inset.right); p.inset.right);
EXPECT_EQ(*estimated_inline, p.size.width); EXPECT_EQ(minmax_60.min_content, p.size.width);
// Rule 4: left is auto. // Rule 4: left is auto.
SetHorizontalStyle(NGAuto, margin_left, width, margin_right, right); SetHorizontalStyle(NGAuto, margin_left, width, margin_right, right);
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "core/layout/ng/ng_block_node.h" #include "core/layout/ng/ng_block_node.h"
#include "core/layout/ng/ng_constraint_space_builder.h" #include "core/layout/ng/ng_constraint_space_builder.h"
#include "core/layout/ng/ng_length_utils.h" #include "core/layout/ng/ng_length_utils.h"
#include "core/layout/ng/ng_physical_fragment.h"
#include "core/style/ComputedStyle.h" #include "core/style/ComputedStyle.h"
#include "core/layout/ng/ng_fragment.h" #include "core/layout/ng/ng_fragment.h"
...@@ -34,6 +35,7 @@ NGOutOfFlowLayoutPart::NGOutOfFlowLayoutPart( ...@@ -34,6 +35,7 @@ NGOutOfFlowLayoutPart::NGOutOfFlowLayoutPart(
NGConstraintSpaceBuilder space_builder( NGConstraintSpaceBuilder space_builder(
FromPlatformWritingMode(container_style->getWritingMode())); FromPlatformWritingMode(container_style->getWritingMode()));
space_builder.SetAvailableSize(space_size); space_builder.SetAvailableSize(space_size);
space_builder.SetPercentageResolutionSize(space_size);
space_builder.SetIsNewFormattingContext(true); space_builder.SetIsNewFormattingContext(true);
space_builder.SetTextDirection(container_style->direction()); space_builder.SetTextDirection(container_style->direction());
parent_space_ = space_builder.ToConstraintSpace(); parent_space_ = space_builder.ToConstraintSpace();
...@@ -107,8 +109,7 @@ bool NGOutOfFlowLayoutPart::ComputeInlineSizeEstimate() { ...@@ -107,8 +109,7 @@ bool NGOutOfFlowLayoutPart::ComputeInlineSizeEstimate() {
if (AbsoluteNeedsChildInlineSize(*node_->Style())) { if (AbsoluteNeedsChildInlineSize(*node_->Style())) {
MinAndMaxContentSizes size; MinAndMaxContentSizes size;
if (node_->ComputeMinAndMaxContentSizes(&size)) { if (node_->ComputeMinAndMaxContentSizes(&size)) {
inline_estimate_ = inline_estimate_ = size;
size.ShrinkToFit(parent_space_->AvailableSize().inline_size);
return true; return true;
} }
return false; return false;
...@@ -145,7 +146,7 @@ bool NGOutOfFlowLayoutPart::ComputeNodeFragment() { ...@@ -145,7 +146,7 @@ bool NGOutOfFlowLayoutPart::ComputeNodeFragment() {
if (block_estimate_) if (block_estimate_)
available_size.block_size = *block_estimate_; available_size.block_size = *block_estimate_;
builder.SetAvailableSize(available_size); builder.SetAvailableSize(available_size);
builder.SetPercentageResolutionSize(available_size); builder.SetPercentageResolutionSize(parent_space_->AvailableSize());
if (block_estimate_) if (block_estimate_)
builder.SetIsFixedSizeBlock(true); builder.SetIsFixedSizeBlock(true);
builder.SetIsFixedSizeInline(true); builder.SetIsFixedSizeInline(true);
......
...@@ -63,7 +63,7 @@ class CORE_EXPORT NGOutOfFlowLayoutPart ...@@ -63,7 +63,7 @@ class CORE_EXPORT NGOutOfFlowLayoutPart
Member<NGConstraintSpace> node_space_; Member<NGConstraintSpace> node_space_;
Member<NGFragment> node_fragment_; Member<NGFragment> node_fragment_;
NGAbsolutePhysicalPosition node_position_; NGAbsolutePhysicalPosition node_position_;
Optional<LayoutUnit> inline_estimate_; Optional<MinAndMaxContentSizes> inline_estimate_;
Optional<LayoutUnit> block_estimate_; Optional<LayoutUnit> block_estimate_;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment