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 518eaefec7417fdc315ed4c59a705bdc95503940..b9dce45a45c97a8a0a8c4ea60b1af6ccf277fa9e 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 |
@@ -815,8 +815,9 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFloatInsideEmptyBlocks) { |
setBodyInnerHTML(R"HTML( |
<style> |
#container { |
- height: 200px; |
- width: 200px; |
+ height: 300px; |
+ width: 300px; |
+ outline: blue solid; |
} |
#empty1 { |
margin: 20px; |
@@ -826,7 +827,7 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFloatInsideEmptyBlocks) { |
margin: 15px; |
padding: 0 15px; |
} |
- #float { |
+ #left-float { |
float: left; |
height: 5px; |
width: 5px; |
@@ -834,11 +835,19 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFloatInsideEmptyBlocks) { |
margin: 10px; |
background-color: green; |
} |
+ #right-float { |
+ float: right; |
+ height: 15px; |
+ width: 15px; |
+ margin: 15px 10px; |
+ background-color: red; |
+ } |
</style> |
<div id='container'> |
<div id='empty1'> |
<div id='empty2'> |
- <div id='float'></div> |
+ <div id='left-float'></div> |
+ <div id='right-float'></div> |
</div> |
</div> |
</div> |
@@ -876,16 +885,26 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFloatInsideEmptyBlocks) { |
int empty2_inline_offset = 35; |
EXPECT_THAT(LayoutUnit(empty2_inline_offset), empty2_fragment->LeftOffset()); |
- ASSERT_EQ(1UL, container_fragment->PositionedFloats().size()); |
- auto float_fragment = container_fragment->PositionedFloats().at(0)->fragment; |
- // 10 = float's padding |
- EXPECT_THAT(LayoutUnit(10), float_fragment->TopOffset()); |
- // 25 = empty2's padding(15) + float's padding(10) |
- int float_inline_offset = 25; |
- EXPECT_THAT(float_fragment->LeftOffset(), LayoutUnit(float_inline_offset)); |
+ ASSERT_EQ(2UL, container_fragment->PositionedFloats().size()); |
+ RefPtr<NGPhysicalFragment> left_float_fragment = |
+ container_fragment->PositionedFloats().at(0)->fragment; |
+ // inline 25 = empty2's padding(15) + left float's margin(10) |
+ // block 10 = left float's margin |
+ EXPECT_THAT(NGPhysicalOffset(LayoutUnit(25), LayoutUnit(10)), |
+ left_float_fragment->Offset()); |
+ |
+ auto right_float_fragment = |
+ container_fragment->PositionedFloats().at(1)->fragment; |
+ LayoutUnit right_float_offset = LayoutUnit(125); |
+ // inline offset 150 = empty2's padding(15) + right float's margin(10) + right |
+ // float offset(125) |
+ // block offset 15 = right float's margin |
+ EXPECT_THAT( |
+ NGPhysicalOffset(LayoutUnit(25) + right_float_offset, LayoutUnit(15)), |
+ right_float_fragment->Offset()); |
// ** Verify layout tree ** |
- Element* left_float = document().getElementById("float"); |
+ Element* left_float = document().getElementById("left-float"); |
// 88 = body's margin(8) + |
// empty1's padding and margin + empty2's padding and margins + float's |
// padding |
@@ -894,18 +913,28 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionFloatInsideEmptyBlocks) { |
EXPECT_THAT(body_top_offset + 10, left_float->offsetTop()); |
// ** Legacy Floating objects ** |
- Element* body = document().getElementsByTagName("body")->item(0); |
+ // #container is the 1st non-empty block so floats are attached to it. |
+ Element* container = document().getElementById("container"); |
auto& floating_objects = |
const_cast<FloatingObjects*>( |
- toLayoutBlockFlow(body->layoutObject())->floatingObjects()) |
+ toLayoutBlockFlow(container->layoutObject())->floatingObjects()) |
->mutableSet(); |
- ASSERT_EQ(1UL, floating_objects.size()); |
- auto floating_object = floating_objects.takeFirst(); |
- ASSERT_TRUE(floating_object->isPlaced()); |
+ ASSERT_EQ(2UL, floating_objects.size()); |
+ auto left_floating_object = floating_objects.takeFirst(); |
+ ASSERT_TRUE(left_floating_object->isPlaced()); |
// 80 = float_inline_offset(25) + accumulative offset of empty blocks(35 + 20) |
- EXPECT_THAT(LayoutUnit(80), floating_object->x()); |
- // 10 = float's padding |
- EXPECT_THAT(LayoutUnit(10), floating_object->y()); |
+ EXPECT_THAT(LayoutUnit(80), left_floating_object->x()); |
+ // 10 = left float's margin |
+ EXPECT_THAT(LayoutUnit(10), left_floating_object->y()); |
+ |
+ auto right_floating_object = floating_objects.takeFirst(); |
+ ASSERT_TRUE(right_floating_object->isPlaced()); |
+ // 205 = float_inline_offset(25) + |
+ // accumulative offset of empty blocks(35 + 20) |
+ // + right float offset(125) |
+ EXPECT_THAT(LayoutUnit(80) + right_float_offset, right_floating_object->x()); |
+ // 15 = right float's margin |
+ EXPECT_THAT(LayoutUnit(15), right_floating_object->y()); |
} |
// Verifies that left/right floating and regular blocks can be positioned |
@@ -2034,10 +2063,11 @@ TEST_F(NGBlockLayoutAlgorithmTest, PositionEmptyBlocksInNewBfc) { |
<div id="empty-block2"></div> |
</div> |
)HTML"); |
- Element* body = document().getElementsByTagName("body")->item(0); |
+ // #container is the new parent for our float because it's height != 0. |
+ Element* container = document().getElementById("container"); |
auto& floating_objects = |
const_cast<FloatingObjects*>( |
- toLayoutBlockFlow(body->layoutObject())->floatingObjects()) |
+ toLayoutBlockFlow(container->layoutObject())->floatingObjects()) |
->mutableSet(); |
ASSERT_EQ(1UL, floating_objects.size()); |
auto floating_object = floating_objects.takeFirst(); |