| 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 6f72f770761f110479321be98d42a303ba28c64b..73f8eabff837c870d3324643ea144975bbfc9b4b 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
|
| @@ -1906,8 +1906,8 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionEmptyBlocksInNewBfc) {
|
| ASSERT_EQ(1UL, floating_objects.size());
|
| auto floating_object = floating_objects.TakeFirst();
|
| // left-float's margin = 15.
|
| - EXPECT_THAT(LayoutUnit(15), floating_object->X());
|
| - EXPECT_THAT(LayoutUnit(15), floating_object->Y());
|
| + EXPECT_THAT(floating_object->X(), LayoutUnit(15));
|
| + EXPECT_THAT(floating_object->Y(), LayoutUnit(15));
|
|
|
| RefPtr<const NGPhysicalBoxFragment> html_fragment;
|
| std::tie(html_fragment, std::ignore) = RunBlockLayoutAlgorithmForElement(
|
| @@ -1919,14 +1919,14 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionEmptyBlocksInNewBfc) {
|
| auto* empty_block1 =
|
| ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get());
|
| // empty-block1's margin == 8
|
| - EXPECT_THAT(NGPhysicalOffset(LayoutUnit(8), LayoutUnit(8)),
|
| - empty_block1->Offset());
|
| + EXPECT_THAT(empty_block1->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(8), LayoutUnit(8)));
|
|
|
| auto* empty_block2 =
|
| ToNGPhysicalBoxFragment(container_fragment->Children()[1].Get());
|
| // empty-block2's margin == 50
|
| - EXPECT_THAT(NGPhysicalOffset(LayoutUnit(0), LayoutUnit(50)),
|
| - empty_block2->Offset());
|
| + EXPECT_THAT(empty_block2->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(0), LayoutUnit(50)));
|
| }
|
|
|
| // Verifies that we can correctly position blocks with clearance and
|
| @@ -2270,7 +2270,66 @@ TEST_F(NGBlockLayoutAlgorithmTest, InnerChildrenFragmentationSmallHeight) {
|
| EXPECT_FALSE(iterator.NextChild());
|
| }
|
|
|
| -TEST_F(NGBlockLayoutAlgorithmTest, NewFormattingContextBlock) {}
|
| +// Verifies that we correctly position a new FC block with the Layout
|
| +// Opportunity iterator.
|
| +TEST_F(NGBlockLayoutAlgorithmTest,
|
| + NewFcBlockWithAdjoiningFloatCollapsesMargins) {
|
| + SetBodyInnerHTML(R"HTML(
|
| + <!DOCTYPE html>
|
| + <style>
|
| + #container {
|
| + width: 200px; outline: solid purple 1px;
|
| + }
|
| + #float {
|
| + float: left; width: 100px; height: 30px; background: red;
|
| + }
|
| + #new-fc {
|
| + contain: paint; margin-top: 20px; background: purple;
|
| + height: 50px;
|
| + }
|
| + </style>
|
| + <div id="container">
|
| + <div id="float"></div>
|
| + <div id="new-fc"></div>
|
| + </div>
|
| + )HTML");
|
| +
|
| + const NGPhysicalBoxFragment* body_fragment;
|
| + const NGPhysicalBoxFragment* container_fragment;
|
| + const NGPhysicalBoxFragment* new_fc_fragment;
|
| + RefPtr<const NGPhysicalBoxFragment> fragment;
|
| + auto run_test = [&](const Length& block_width) {
|
| + Element* new_fc_block = GetDocument().GetElementById("new-fc");
|
| + new_fc_block->MutableComputedStyle()->SetWidth(block_width);
|
| + std::tie(fragment, std::ignore) = RunBlockLayoutAlgorithmForElement(
|
| + GetDocument().getElementsByTagName("html")->item(0));
|
| + ASSERT_EQ(1UL, fragment->Children().size());
|
| + body_fragment = ToNGPhysicalBoxFragment(fragment->Children()[0].Get());
|
| + container_fragment =
|
| + ToNGPhysicalBoxFragment(body_fragment->Children()[0].Get());
|
| + ASSERT_EQ(1UL, container_fragment->Children().size());
|
| + new_fc_fragment =
|
| + ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get());
|
| + };
|
|
|
| + // #new-fc is small enough to fit on the same line with #float.
|
| + run_test(Length(80, kFixed));
|
| + // 100 = float's width, 0 = no margin collapsing
|
| + EXPECT_THAT(new_fc_fragment->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(100), LayoutUnit(0)));
|
| + // 8 = body's margins, 20 = new-fc's margin top(20) collapses with
|
| + // body's margin(8)
|
| + EXPECT_THAT(body_fragment->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(8), LayoutUnit(20)));
|
| +
|
| + // #new-fc is too wide to be positioned on the same line with #float
|
| + run_test(Length(120, kFixed));
|
| + // 30 = #float's height
|
| + EXPECT_THAT(new_fc_fragment->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(0), LayoutUnit(30)));
|
| + // 8 = body's margins, no margin collapsing
|
| + EXPECT_THAT(body_fragment->Offset(),
|
| + NGPhysicalOffset(LayoutUnit(8), LayoutUnit(8)));
|
| +}
|
| } // namespace
|
| } // namespace blink
|
|
|