Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc |
| 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 6ede938ace0283329e6282f20e186ca7b8049be7..b185322891e3582d67ac602dfb3d7da8a50b214f 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 |
| @@ -41,6 +41,7 @@ NGConstraintSpace* ConstructConstraintSpace( |
| return NGConstraintSpaceBuilder(writing_mode) |
| .SetAvailableSize(size) |
| .SetPercentageResolutionSize(size) |
| + .SetInitialContainingBlockSize(size.ConvertToPhysical(writing_mode)) |
| .SetTextDirection(direction) |
| .SetIsShrinkToFit(shrink_to_fit) |
| .SetFragmentainerSpaceAvailable(fragmentainer_space_available) |
| @@ -71,12 +72,9 @@ class NGBlockLayoutAlgorithmTest |
| RefPtr<NGPhysicalBoxFragment> RunBlockLayoutAlgorithm( |
| NGConstraintSpace* space, |
| - NGBlockNode* first_child) { |
| - NGBlockNode* node = new NGBlockNode(style_.get()); |
| - node->SetFirstChild(first_child); |
| - |
| + NGBlockNode* block) { |
| RefPtr<NGLayoutResult> result = |
| - NGBlockLayoutAlgorithm(node, space).Layout(); |
| + NGBlockLayoutAlgorithm(block, space).Layout(); |
| return toNGPhysicalBoxFragment(result->PhysicalFragment().get()); |
| } |
| @@ -95,14 +93,12 @@ class NGBlockLayoutAlgorithmTest |
| toNGPhysicalBoxFragment(result->PhysicalFragment().get()), space); |
| } |
| - MinAndMaxContentSizes RunComputeMinAndMax(NGBlockNode* first_child) { |
| + MinAndMaxContentSizes RunComputeMinAndMax(NGBlockNode* node) { |
| // The constraint space is not used for min/max computation, but we need |
| // it to create the algorithm. |
| NGConstraintSpace* space = |
| ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(), LayoutUnit())); |
| - NGBlockNode* node = new NGBlockNode(style_.get()); |
| - node->SetFirstChild(first_child); |
|
ikilpatrick
2017/03/01 17:32:46
can we also remove/make private SetFirstChild now
atotic
2017/03/01 18:57:12
done. SetFirstChild/SetNextSibling are gone
|
| NGBlockLayoutAlgorithm algorithm(node, space); |
| EXPECT_TRUE(algorithm.ComputeMinAndMaxContentSizes().has_value()); |
| @@ -113,13 +109,17 @@ class NGBlockLayoutAlgorithmTest |
| }; |
| TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) { |
| - style_->setWidth(Length(30, Fixed)); |
| - style_->setHeight(Length(40, Fixed)); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="box" style="width:30px;height:40px"></div> |
| + )HTML"); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); |
| - RefPtr<NGPhysicalFragment> frag = RunBlockLayoutAlgorithm(space, nullptr); |
| + |
| + auto box = new NGBlockNode(getLayoutObjectByElementId("box")); |
|
ikilpatrick
2017/03/01 17:32:46
auto* box = ....
atotic
2017/03/01 18:57:13
done
|
| + |
| + RefPtr<NGPhysicalFragment> frag = RunBlockLayoutAlgorithm(space, box); |
| EXPECT_EQ(LayoutUnit(30), frag->Width()); |
| EXPECT_EQ(LayoutUnit(40), frag->Height()); |
| @@ -127,30 +127,27 @@ TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) { |
| // Verifies that two children are laid out with the correct size and position. |
| TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) { |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container" style="width:30px"> |
| + <div id="first_child" style="height:20px"> |
| + </div> |
| + <div id="second_child" |
| + style="height:30px;margin-top:5px;margin-bottom:20px"> |
| + </div> |
| + </div> |
| + )HTML"); |
| const int kWidth = 30; |
| const int kHeight1 = 20; |
| const int kHeight2 = 30; |
| const int kMarginTop = 5; |
| - const int kMarginBottom = 20; |
| - style_->setWidth(Length(kWidth, Fixed)); |
| - |
| - RefPtr<ComputedStyle> first_style = ComputedStyle::create(); |
| - first_style->setHeight(Length(kHeight1, Fixed)); |
| - NGBlockNode* first_child = new NGBlockNode(first_style.get()); |
| - |
| - RefPtr<ComputedStyle> second_style = ComputedStyle::create(); |
| - second_style->setHeight(Length(kHeight2, Fixed)); |
| - second_style->setMarginTop(Length(kMarginTop, Fixed)); |
| - second_style->setMarginBottom(Length(kMarginBottom, Fixed)); |
| - NGBlockNode* second_child = new NGBlockNode(second_style.get()); |
| - |
| - first_child->SetNextSibling(second_child); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
|
ikilpatrick
2017/03/01 17:32:46
auto* (and elsewhere).
atotic
2017/03/01 18:57:13
done
|
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); |
| + |
| RefPtr<NGPhysicalBoxFragment> frag = |
| - RunBlockLayoutAlgorithm(space, first_child); |
| + RunBlockLayoutAlgorithm(space, container); |
| EXPECT_EQ(LayoutUnit(kWidth), frag->Width()); |
| EXPECT_EQ(LayoutUnit(kHeight1 + kHeight2 + kMarginTop), frag->Height()); |
| @@ -176,27 +173,25 @@ TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) { |
| // writing-mode: horizontal-tb;"></div> |
| // </div> |
| TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildrenWithWritingMode) { |
| - const int kWidth = 50; |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="div1" style="writing-mode: vertical-lr;"> |
| + <div id="div2" style="width: 50px; |
| + height: 50px; margin-left: 100px; |
| + writing-mode: horizontal-tb;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| const int kHeight = 50; |
| const int kMarginLeft = 100; |
| - RefPtr<ComputedStyle> div1_style = ComputedStyle::create(); |
| - div1_style->setWritingMode(WritingMode::kVerticalLr); |
| - NGBlockNode* div1 = new NGBlockNode(div1_style.get()); |
| - |
| - RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); |
| - div2_style->setHeight(Length(kHeight, Fixed)); |
| - div2_style->setWidth(Length(kWidth, Fixed)); |
| - div1_style->setWritingMode(WritingMode::kHorizontalTb); |
| - div2_style->setMarginLeft(Length(kMarginLeft, Fixed)); |
| - NGBlockNode* div2 = new NGBlockNode(div2_style.get()); |
| - |
| - div1->SetFirstChild(div2); |
| - |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = |
| ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(500), LayoutUnit(500))); |
| - RefPtr<NGPhysicalBoxFragment> frag = RunBlockLayoutAlgorithm(space, div1); |
| + RefPtr<NGPhysicalBoxFragment> frag = |
| + RunBlockLayoutAlgorithm(space, container); |
| const NGPhysicalFragment* child = frag->Children()[0].get(); |
| // DIV2 |
| @@ -666,54 +661,41 @@ TEST_F(NGBlockLayoutAlgorithmTest, CollapsingMarginsWithText) { |
| // not get used in the collapsing margins calculation. |
| // |
| // Test case's HTML representation: |
| -// <style> |
| -// #div1 { margin-bottom: 10px; height: 60px; writing-mode: vertical-rl; } |
| -// #div2 { margin-left: -20px; width: 10px; } |
| -// #div3 { margin-top: 40px; height: 60px; } |
| -// </style> |
| -// <div id="div1"> |
| -// <div id="div2">vertical</div> |
| -// </div> |
| -// <div id="div3"></div> |
| +// <style> |
| +// #div1 { margin-bottom: 10px; height: 60px; writing-mode: vertical-rl; } |
| +// #div2 { margin-left: -20px; width: 10px; } |
| +// #div3 { margin-top: 40px; height: 60px; } |
| +// </style> |
| +// <div id="div1"> |
| +// <div id="div2">vertical</div> |
| +// </div> |
| +// <div id="div3"></div> |
| // TODO(glebl): Disabled for now. Follow-up with kojii@ on |
| // https://software.hixie.ch/utilities/js/live-dom-viewer/?saved=4844 |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_CollapsingMarginsCase6) { |
| + setBodyInnerHTML(R"HTML( |
| + <style> |
| + #div1 { margin-bottom: 10px; width: 10px; height: 60px; writing-mode: vertical-rl; } |
|
Gleb Lanbin
2017/03/01 17:25:22
this shouldn't be longer than 80 symbols.
atotic
2017/03/01 18:57:12
done
|
| + #div2 { margin-left: -20px; width: 10px; } |
| + #div3 { margin-top: 40px; height: 60px; } |
| + </style> |
| + <div id="container" style="width:500px;height:500px"> |
| + <div id="div1"> |
| + <div id="div2">vertical</div> |
| + </div> |
| + <div id="div3"></div> |
| + </div> |
| + )HTML"); |
| const int kHeight = 60; |
| - const int kWidth = 10; |
| const int kMarginBottom = 10; |
| - const int kMarginLeft = -20; |
| const int kMarginTop = 40; |
| - style_->setWidth(Length(500, Fixed)); |
| - style_->setHeight(Length(500, Fixed)); |
| - |
| - // DIV1 |
| - RefPtr<ComputedStyle> div1_style = ComputedStyle::create(); |
| - div1_style->setWidth(Length(kWidth, Fixed)); |
| - div1_style->setHeight(Length(kHeight, Fixed)); |
| - div1_style->setWritingMode(WritingMode::kVerticalRl); |
| - div1_style->setMarginBottom(Length(kMarginBottom, Fixed)); |
| - NGBlockNode* div1 = new NGBlockNode(div1_style.get()); |
| - |
| - // DIV2 |
| - RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); |
| - div2_style->setWidth(Length(kWidth, Fixed)); |
| - div2_style->setMarginLeft(Length(kMarginLeft, Fixed)); |
| - NGBlockNode* div2 = new NGBlockNode(div2_style.get()); |
| - |
| - // DIV3 |
| - RefPtr<ComputedStyle> div3_style = ComputedStyle::create(); |
| - div3_style->setHeight(Length(kHeight, Fixed)); |
| - div3_style->setMarginTop(Length(kMarginTop, Fixed)); |
| - NGBlockNode* div3 = new NGBlockNode(div3_style.get()); |
| - |
| - div1->SetFirstChild(div2); |
| - div1->SetNextSibling(div3); |
| - |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = |
| ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(500), LayoutUnit(500))); |
| - RefPtr<NGPhysicalBoxFragment> frag = RunBlockLayoutAlgorithm(space, div1); |
| + RefPtr<NGPhysicalBoxFragment> frag = |
| + RunBlockLayoutAlgorithm(space, container); |
| ASSERT_EQ(frag->Children().size(), 2UL); |
| @@ -738,6 +720,18 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_CollapsingMarginsCase6) { |
| // <div id="div2"></div> |
| // </div> |
| TEST_F(NGBlockLayoutAlgorithmTest, BorderAndPadding) { |
| + setBodyInnerHTML(R"HTML( |
| + <style> |
| + #div1 { width:100px; height:100px; } |
| + #div1 { border-style:solid; border-width:1px 2px 3px 4px; } |
| + #div1 { padding:5px 6px 7px 8px; } |
| + </style> |
| + <div id="container"> |
| + <div id="div1"> |
| + <div id="div2"></div> |
| + </div> |
| + </div> |
| + )HTML"); |
| const int kWidth = 100; |
| const int kHeight = 100; |
| const int kBorderTop = 1; |
| @@ -748,35 +742,15 @@ TEST_F(NGBlockLayoutAlgorithmTest, BorderAndPadding) { |
| const int kPaddingRight = 6; |
| const int kPaddingBottom = 7; |
| const int kPaddingLeft = 8; |
| - RefPtr<ComputedStyle> div1_style = ComputedStyle::create(); |
| - div1_style->setWidth(Length(kWidth, Fixed)); |
| - div1_style->setHeight(Length(kHeight, Fixed)); |
| - |
| - div1_style->setBorderTopWidth(kBorderTop); |
| - div1_style->setBorderTopStyle(BorderStyleSolid); |
| - div1_style->setBorderRightWidth(kBorderRight); |
| - div1_style->setBorderRightStyle(BorderStyleSolid); |
| - div1_style->setBorderBottomWidth(kBorderBottom); |
| - div1_style->setBorderBottomStyle(BorderStyleSolid); |
| - div1_style->setBorderLeftWidth(kBorderLeft); |
| - div1_style->setBorderLeftStyle(BorderStyleSolid); |
| - |
| - div1_style->setPaddingTop(Length(kPaddingTop, Fixed)); |
| - div1_style->setPaddingRight(Length(kPaddingRight, Fixed)); |
| - div1_style->setPaddingBottom(Length(kPaddingBottom, Fixed)); |
| - div1_style->setPaddingLeft(Length(kPaddingLeft, Fixed)); |
| - NGBlockNode* div1 = new NGBlockNode(div1_style.get()); |
| - |
| - RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); |
| - NGBlockNode* div2 = new NGBlockNode(div2_style.get()); |
| - |
| - div1->SetFirstChild(div2); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| - RefPtr<NGPhysicalBoxFragment> frag = RunBlockLayoutAlgorithm(space, div1); |
| + |
| + RefPtr<NGPhysicalBoxFragment> frag = |
| + RunBlockLayoutAlgorithm(space, container); |
| ASSERT_EQ(frag->Children().size(), 1UL); |
| @@ -798,20 +772,21 @@ TEST_F(NGBlockLayoutAlgorithmTest, BorderAndPadding) { |
| } |
| TEST_F(NGBlockLayoutAlgorithmTest, PercentageResolutionSize) { |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container" style="width:30px;padding-left:10px"> |
| + <div id="div1" style="width:40%"></div> |
| + </div> |
| + )HTML"); |
| const int kPaddingLeft = 10; |
| const int kWidth = 30; |
| - style_->setWidth(Length(kWidth, Fixed)); |
| - style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); |
| - RefPtr<ComputedStyle> first_style = ComputedStyle::create(); |
| - first_style->setWidth(Length(40, Percent)); |
| - NGBlockNode* first_child = new NGBlockNode(first_style.get()); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); |
| RefPtr<NGPhysicalBoxFragment> frag = |
| - RunBlockLayoutAlgorithm(space, first_child); |
| + RunBlockLayoutAlgorithm(space, container); |
| EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width()); |
| EXPECT_EQ(NGPhysicalFragment::kFragmentBox, frag->Type()); |
| @@ -824,23 +799,22 @@ TEST_F(NGBlockLayoutAlgorithmTest, PercentageResolutionSize) { |
| // A very simple auto margin case. We rely on the tests in ng_length_utils_test |
| // for the more complex cases; just make sure we handle auto at all here. |
| TEST_F(NGBlockLayoutAlgorithmTest, AutoMargin) { |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container" style="width:30px;padding-left:10px"> |
| + <div id="first" style="width:10px;margin-left:auto;margin-right:auto"></div> |
|
Gleb Lanbin
2017/03/01 17:25:22
same here.
atotic
2017/03/01 18:57:13
done
|
| + </div> |
| + )HTML"); |
| const int kPaddingLeft = 10; |
| const int kWidth = 30; |
| - style_->setWidth(Length(kWidth, Fixed)); |
| - style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); |
| - |
| - RefPtr<ComputedStyle> first_style = ComputedStyle::create(); |
| const int kChildWidth = 10; |
| - first_style->setWidth(Length(kChildWidth, Fixed)); |
| - first_style->setMarginLeft(Length(Auto)); |
| - first_style->setMarginRight(Length(Auto)); |
| - NGBlockNode* first_child = new NGBlockNode(first_style.get()); |
| + |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); |
| RefPtr<NGPhysicalBoxFragment> frag = |
| - RunBlockLayoutAlgorithm(space, first_child); |
| + RunBlockLayoutAlgorithm(space, container); |
| EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width()); |
| EXPECT_EQ(NGPhysicalFragment::kFragmentBox, frag->Type()); |
| @@ -1284,49 +1258,40 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFragmentsWithClear) { |
| // Verifies that we compute the right min and max-content size. |
| TEST_F(NGBlockLayoutAlgorithmTest, ComputeMinMaxContent) { |
| - const int kWidth = 50; |
| - const int kWidthChild1 = 20; |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container" style="width:50px"> |
| + <div id="first_child" style="width:20px"></div> |
| + <div id="second_child" style="width:30px"></div> |
| + </div> |
| + )HTML"); |
| + |
| const int kWidthChild2 = 30; |
| - // This should have no impact on the min/max content size. |
| - style_->setWidth(Length(kWidth, Fixed)); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| - RefPtr<ComputedStyle> first_style = ComputedStyle::create(); |
| - first_style->setWidth(Length(kWidthChild1, Fixed)); |
| - NGBlockNode* first_child = new NGBlockNode(first_style.get()); |
| - |
| - RefPtr<ComputedStyle> second_style = ComputedStyle::create(); |
| - second_style->setWidth(Length(kWidthChild2, Fixed)); |
| - NGBlockNode* second_child = new NGBlockNode(second_style.get()); |
| - |
| - first_child->SetNextSibling(second_child); |
| - |
| - MinAndMaxContentSizes sizes = RunComputeMinAndMax(first_child); |
| + MinAndMaxContentSizes sizes = RunComputeMinAndMax(container); |
| EXPECT_EQ(kWidthChild2, sizes.min_content); |
| EXPECT_EQ(kWidthChild2, sizes.max_content); |
| } |
| // Tests that we correctly handle shrink-to-fit |
| TEST_F(NGBlockLayoutAlgorithmTest, ShrinkToFit) { |
| - const int kWidthChild1 = 20; |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="first_child" style="width:20px"></div> |
| + <div id="second_child" style="width:30px"></div> |
| + </div> |
| + )HTML"); |
| const int kWidthChild2 = 30; |
| - RefPtr<ComputedStyle> first_style = ComputedStyle::create(); |
| - first_style->setWidth(Length(kWidthChild1, Fixed)); |
| - NGBlockNode* first_child = new NGBlockNode(first_style.get()); |
| - |
| - RefPtr<ComputedStyle> second_style = ComputedStyle::create(); |
| - second_style->setWidth(Length(kWidthChild2, Fixed)); |
| - NGBlockNode* second_child = new NGBlockNode(second_style.get()); |
| - |
| - first_child->SetNextSibling(second_child); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(100), NGSizeIndefinite), true); |
| - RefPtr<NGPhysicalFragment> frag = RunBlockLayoutAlgorithm(space, first_child); |
| + RefPtr<NGPhysicalFragment> frag = RunBlockLayoutAlgorithm(space, container); |
| - EXPECT_EQ(LayoutUnit(30), frag->Width()); |
| + EXPECT_EQ(LayoutUnit(kWidthChild2), frag->Width()); |
| } |
| class FragmentChildIterator { |
| @@ -1367,20 +1332,20 @@ class FragmentChildIterator { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_EmptyMulticol) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(2); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(210, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 210px;"> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
|
Gleb Lanbin
2017/03/01 17:25:22
auto* ? here and below.
atotic
2017/03/01 18:57:13
done
|
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| ASSERT_TRUE(fragment); |
| @@ -1400,26 +1365,21 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_EmptyMulticol) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_EmptyBlock) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(2); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(210, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 210px;"> |
| + <div id="child"></div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| EXPECT_EQ(LayoutUnit(210), fragment->Width()); |
| @@ -1447,28 +1407,22 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_EmptyBlock) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInOneColumn) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(2); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(310, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - child_style->setWidth(Length(60, Percent)); |
| - child_style->setHeight(Length(100, Fixed)); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 310px;"> |
| + <div id="child" style="width: 60%; height: 100%"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1497,28 +1451,21 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInOneColumn) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInTwoColumns) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(2); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(210, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - child_style->setWidth(Length(75, Percent)); |
| - child_style->setHeight(Length(150, Fixed)); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
|
Gleb Lanbin
2017/03/01 17:25:22
can you move the style definition to <style> ? and
atotic
2017/03/01 18:57:12
done for long style defs.
|
| + column-gap: 10px; height: 100px; width: 210px;"> |
| + <div id="child" style="width: 75%; height: 150px"></div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1556,28 +1503,22 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInTwoColumns) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInThreeColumns) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - child_style->setWidth(Length(75, Percent)); |
| - child_style->setHeight(Length(250, Fixed)); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 3; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 320px;"> |
| + <div id="child" style="width: 75%; height: 250px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1625,28 +1566,22 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_BlockInThreeColumns) { |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, |
| DISABLED_ActualColumnCountGreaterThanSpecified) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(2); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(210, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - child_style->setWidth(Length(1, Fixed)); |
| - child_style->setHeight(Length(250, Fixed)); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 210px;"> |
| + <div id="child" style="width: 1px; height: 250px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1694,35 +1629,24 @@ TEST_F(NGBlockLayoutAlgorithmTest, |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_TwoBlocksInTwoColumns) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child1 |
| - RefPtr<ComputedStyle> child1_style = ComputedStyle::create(); |
| - child1_style->setWidth(Length(75, Percent)); |
| - child1_style->setHeight(Length(60, Fixed)); |
| - NGBlockNode* child1 = new NGBlockNode(child1_style.get()); |
| - |
| - // child2 |
| - RefPtr<ComputedStyle> child2_style = ComputedStyle::create(); |
| - child2_style->setWidth(Length(85, Percent)); |
| - child2_style->setHeight(Length(60, Fixed)); |
| - NGBlockNode* child2 = new NGBlockNode(child2_style.get()); |
| - |
| - parent->SetFirstChild(child1); |
| - child1->SetNextSibling(child2); |
| - |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 3; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 320px;"> |
| + <div id="child1" style="width: 75%; height: 60px;"> |
| + </div> |
| + <div id="child2" style="width: 85%; height: 60px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1763,58 +1687,37 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_TwoBlocksInTwoColumns) { |
| // Test case's HTML representation: |
| // <div id="parent" style="columns:3; column-fill:auto; column-gap:10px; |
| // width:320px; height:100px;"> |
| -// <div id="child1" style="width:75%; height:60px;"> |
| -// <div id="grandchild1" style="width:50px; height:120px;"></div> |
| -// <div id="grandchild2" style="width:40px; height:20px;"></div> |
| -// </div> |
| -// <div id="child2" style="width:85%; height:10px;"></div> |
| +// <div id="child1" style="width:75%; height:60px;"> |
| +// <div id="grandchild1" style="width:50px; height:120px;"></div> |
| +// <div id="grandchild2" style="width:40px; height:20px;"></div> |
| +// </div> |
| +// <div id="child2" style="width:85%; height:10px;"></div> |
| // </div> |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_OverflowedBlock) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child1 |
| - RefPtr<ComputedStyle> child1_style = ComputedStyle::create(); |
| - child1_style->setWidth(Length(75, Percent)); |
| - child1_style->setHeight(Length(60, Fixed)); |
| - NGBlockNode* child1 = new NGBlockNode(child1_style.get()); |
| - |
| - // grandchild1 |
| - RefPtr<ComputedStyle> grandchild1_style = ComputedStyle::create(); |
| - grandchild1_style->setWidth(Length(50, Fixed)); |
| - grandchild1_style->setHeight(Length(120, Fixed)); |
| - NGBlockNode* grandchild1 = new NGBlockNode(grandchild1_style.get()); |
| - |
| - // grandchild2 |
| - RefPtr<ComputedStyle> grandchild2_style = ComputedStyle::create(); |
| - grandchild2_style->setWidth(Length(40, Fixed)); |
| - grandchild2_style->setHeight(Length(20, Fixed)); |
| - NGBlockNode* grandchild2 = new NGBlockNode(grandchild2_style.get()); |
| - |
| - // child2 |
| - RefPtr<ComputedStyle> child2_style = ComputedStyle::create(); |
| - child2_style->setWidth(Length(85, Percent)); |
| - child2_style->setHeight(Length(10, Fixed)); |
| - NGBlockNode* child2 = new NGBlockNode(child2_style.get()); |
| - |
| - parent->SetFirstChild(child1); |
| - child1->SetNextSibling(child2); |
| - child1->SetFirstChild(grandchild1); |
| - grandchild1->SetNextSibling(grandchild2); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="column-count: 2; column-fill: auto; |
| + column-gap: 10px; height: 100px; width: 320px;"> |
| + <div id="child1" style="width:75%; height:60px;"> |
| + <div id="grandchild1" style="width:50px; height:120px;"> |
| + </div> |
| + <div id="grandchild2" style="width:40px; height:20px;"> |
| + </div> |
| + </div> |
| + <div id="child2" style="width:85%; height:10px;"></div> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1883,29 +1786,22 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_OverflowedBlock) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_FloatInOneColumn) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child |
| - RefPtr<ComputedStyle> child_style = ComputedStyle::create(); |
| - child_style->setFloating(EFloat::kLeft); |
| - child_style->setWidth(Length(75, Percent)); |
| - child_style->setHeight(Length(100, Fixed)); |
| - NGBlockNode* child = new NGBlockNode(child_style.get()); |
| - |
| - parent->SetFirstChild(child); |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="columns:3; column-fill:auto; column-gap:10px; |
| + width:320px; height:100px;"> |
|
Gleb Lanbin
2017/03/01 17:25:22
wrong indentation and please move it to <style>
atotic
2017/03/01 18:57:12
done
|
| + <div id="child" style="float:left; width:75%; height:100px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -1935,37 +1831,24 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_FloatInOneColumn) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_TwoFloatsInOneColumn) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child1 |
| - RefPtr<ComputedStyle> child1_style = ComputedStyle::create(); |
| - child1_style->setFloating(EFloat::kLeft); |
| - child1_style->setWidth(Length(15, Percent)); |
| - child1_style->setHeight(Length(100, Fixed)); |
| - NGBlockNode* child1 = new NGBlockNode(child1_style.get()); |
| - |
| - // child2 |
| - RefPtr<ComputedStyle> child2_style = ComputedStyle::create(); |
| - child2_style->setFloating(EFloat::kRight); |
| - child2_style->setWidth(Length(16, Percent)); |
| - child2_style->setHeight(Length(100, Fixed)); |
| - NGBlockNode* child2 = new NGBlockNode(child2_style.get()); |
| - |
| - parent->SetFirstChild(child1); |
| - child1->SetNextSibling(child2); |
| - |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="columns:3; column-fill:auto; column-gap:10px; |
| + width:320px; height:100px;"> |
| + <div id="child1" style="float:left; width:15%; height:100px;"> |
| + </div> |
| + <div id="child2" style="float:right; width:16%; height:100px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |
| @@ -2003,37 +1886,24 @@ TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_TwoFloatsInOneColumn) { |
| // TODO(glebl): reenable multicol after new margin collapsing/floats algorithm |
| // is checked in. |
| TEST_F(NGBlockLayoutAlgorithmTest, DISABLED_TwoFloatsInTwoColumns) { |
| - // parent |
| - RefPtr<ComputedStyle> parent_style = ComputedStyle::create(); |
| - parent_style->setColumnCount(3); |
| - parent_style->setColumnFill(ColumnFillAuto); |
| - parent_style->setColumnGap(10); |
| - parent_style->setHeight(Length(100, Fixed)); |
| - parent_style->setWidth(Length(320, Fixed)); |
| - NGBlockNode* parent = new NGBlockNode(parent_style.get()); |
| - |
| - // child1 |
| - RefPtr<ComputedStyle> child1_style = ComputedStyle::create(); |
| - child1_style->setFloating(EFloat::kLeft); |
| - child1_style->setWidth(Length(15, Percent)); |
| - child1_style->setHeight(Length(150, Fixed)); |
| - NGBlockNode* child1 = new NGBlockNode(child1_style.get()); |
| - |
| - // child2 |
| - RefPtr<ComputedStyle> child2_style = ComputedStyle::create(); |
| - child2_style->setFloating(EFloat::kRight); |
| - child2_style->setWidth(Length(16, Percent)); |
| - child2_style->setHeight(Length(150, Fixed)); |
| - NGBlockNode* child2 = new NGBlockNode(child2_style.get()); |
| - |
| - parent->SetFirstChild(child1); |
| - child1->SetNextSibling(child2); |
| - |
| + setBodyInnerHTML(R"HTML( |
| + <div id="container"> |
| + <div id="parent" style="columns:3; column-fill:auto; column-gap:10px; |
| + width:320px; height:100px;"> |
| + <div id="child1" style="float:left; width:15%; height:150px;"> |
| + </div> |
| + <div id="child2" style="float:right; width:16%; height:150px;"> |
| + </div> |
| + </div> |
| + </div> |
| + )HTML"); |
| + |
| + auto container = new NGBlockNode(getLayoutObjectByElementId("container")); |
| auto* space = ConstructConstraintSpace( |
| kHorizontalTopBottom, TextDirection::kLtr, |
| NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); |
| RefPtr<const NGPhysicalBoxFragment> parent_fragment = |
| - RunBlockLayoutAlgorithm(space, parent); |
| + RunBlockLayoutAlgorithm(space, container); |
| FragmentChildIterator iterator(parent_fragment.get()); |
| const auto* fragment = iterator.NextChild(); |