Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Issue 2872593003: [LayoutNG] Introduce NGPositionedFloat. (Closed)
Patch Set: address comments. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/ng/ng_block_layout_algorithm.h" 5 #include "core/layout/ng/ng_block_layout_algorithm.h"
6 6
7 #include "core/dom/NodeComputedStyle.h" 7 #include "core/dom/NodeComputedStyle.h"
8 #include "core/dom/TagCollection.h" 8 #include "core/dom/TagCollection.h"
9 #include "core/layout/LayoutTestHelper.h" 9 #include "core/layout/LayoutTestHelper.h"
10 #include "core/layout/ng/layout_ng_block_flow.h" 10 #include "core/layout/ng/layout_ng_block_flow.h"
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 ToNGPhysicalBoxFragment(body_fragment->Children()[2].Get()); 345 ToNGPhysicalBoxFragment(body_fragment->Children()[2].Get());
346 // 90 = first_child's height(50) + collapsed margins(-10) + 346 // 90 = first_child's height(50) + collapsed margins(-10) +
347 // second child's height(50) 347 // second child's height(50)
348 int empty5_fragment_block_offset = 90; 348 int empty5_fragment_block_offset = 90;
349 EXPECT_THAT(LayoutUnit(empty5_fragment_block_offset), 349 EXPECT_THAT(LayoutUnit(empty5_fragment_block_offset),
350 empty5_fragment->TopOffset()); 350 empty5_fragment->TopOffset());
351 351
352 ASSERT_EQ(1UL, body_fragment->PositionedFloats().size()); 352 ASSERT_EQ(1UL, body_fragment->PositionedFloats().size());
353 ASSERT_EQ(1UL, body_fragment->PositionedFloats().size()); 353 ASSERT_EQ(1UL, body_fragment->PositionedFloats().size());
354 auto float_nonempties_fragment = 354 auto float_nonempties_fragment =
355 body_fragment->PositionedFloats().at(0)->fragment; 355 body_fragment->PositionedFloats().at(0).fragment;
356 // 70 = first_child's height(50) + first child's margin-bottom(20) 356 // 70 = first_child's height(50) + first child's margin-bottom(20)
357 EXPECT_THAT(float_nonempties_fragment->TopOffset(), LayoutUnit(70)); 357 EXPECT_THAT(float_nonempties_fragment->TopOffset(), LayoutUnit(70));
358 EXPECT_THAT(float_nonempties_fragment->LeftOffset(), LayoutUnit(0)); 358 EXPECT_THAT(float_nonempties_fragment->LeftOffset(), LayoutUnit(0));
359 359
360 // ** Verify layout tree ** 360 // ** Verify layout tree **
361 Element* first_child = GetDocument().getElementById("first-child"); 361 Element* first_child = GetDocument().getElementById("first-child");
362 // -7 = body_top_offset 362 // -7 = body_top_offset
363 EXPECT_EQ(body_top_offset, first_child->OffsetTop()); 363 EXPECT_EQ(body_top_offset, first_child->OffsetTop());
364 } 364 }
365 365
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 auto* empty2_fragment = 867 auto* empty2_fragment =
868 ToNGPhysicalBoxFragment(empty1_fragment->Children()[0].Get()); 868 ToNGPhysicalBoxFragment(empty1_fragment->Children()[0].Get());
869 // 0, vertical margins got collapsed 869 // 0, vertical margins got collapsed
870 EXPECT_THAT(LayoutUnit(), empty2_fragment->TopOffset()); 870 EXPECT_THAT(LayoutUnit(), empty2_fragment->TopOffset());
871 // 35 = empty1's padding(20) + empty2's padding(15) 871 // 35 = empty1's padding(20) + empty2's padding(15)
872 int empty2_inline_offset = 35; 872 int empty2_inline_offset = 35;
873 EXPECT_THAT(empty2_fragment->LeftOffset(), LayoutUnit(empty2_inline_offset)); 873 EXPECT_THAT(empty2_fragment->LeftOffset(), LayoutUnit(empty2_inline_offset));
874 874
875 ASSERT_EQ(2UL, container_fragment->PositionedFloats().size()); 875 ASSERT_EQ(2UL, container_fragment->PositionedFloats().size());
876 RefPtr<NGPhysicalFragment> left_float_fragment = 876 RefPtr<NGPhysicalFragment> left_float_fragment =
877 container_fragment->PositionedFloats().at(0)->fragment; 877 container_fragment->PositionedFloats().at(0).fragment;
878 // inline 25 = empty2's padding(15) + left float's margin(10) 878 // inline 25 = empty2's padding(15) + left float's margin(10)
879 // block 10 = left float's margin 879 // block 10 = left float's margin
880 EXPECT_THAT(left_float_fragment->Offset(), 880 EXPECT_THAT(left_float_fragment->Offset(),
881 NGPhysicalOffset(LayoutUnit(25), LayoutUnit(10))); 881 NGPhysicalOffset(LayoutUnit(25), LayoutUnit(10)));
882 882
883 auto right_float_fragment = 883 auto right_float_fragment =
884 container_fragment->PositionedFloats().at(1)->fragment; 884 container_fragment->PositionedFloats().at(1).fragment;
885 LayoutUnit right_float_offset = LayoutUnit(125); 885 LayoutUnit right_float_offset = LayoutUnit(125);
886 // inline offset 150 = empty2's padding(15) + right float's margin(10) + right 886 // inline offset 150 = empty2's padding(15) + right float's margin(10) + right
887 // float offset(125) 887 // float offset(125)
888 // block offset 15 = right float's margin 888 // block offset 15 = right float's margin
889 EXPECT_THAT( 889 EXPECT_THAT(
890 right_float_fragment->Offset(), 890 right_float_fragment->Offset(),
891 NGPhysicalOffset(LayoutUnit(25) + right_float_offset, LayoutUnit(15))); 891 NGPhysicalOffset(LayoutUnit(25) + right_float_offset, LayoutUnit(15)));
892 892
893 // ** Verify layout tree ** 893 // ** Verify layout tree **
894 Element* left_float = GetDocument().getElementById("left-float"); 894 Element* left_float = GetDocument().getElementById("left-float");
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get()); 990 ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get());
991 ASSERT_EQ(2UL, container_fragment->PositionedFloats().size()); 991 ASSERT_EQ(2UL, container_fragment->PositionedFloats().size());
992 ASSERT_EQ(2UL, regular_fragment->PositionedFloats().size()); 992 ASSERT_EQ(2UL, regular_fragment->PositionedFloats().size());
993 993
994 // ** Verify layout tree ** 994 // ** Verify layout tree **
995 Element* left_float = GetDocument().getElementById("left-float"); 995 Element* left_float = GetDocument().getElementById("left-float");
996 // 8 = body's margin-top 996 // 8 = body's margin-top
997 int left_float_block_offset = 8; 997 int left_float_block_offset = 8;
998 EXPECT_EQ(left_float_block_offset, left_float->OffsetTop()); 998 EXPECT_EQ(left_float_block_offset, left_float->OffsetTop());
999 auto left_float_fragment = 999 auto left_float_fragment =
1000 regular_fragment->PositionedFloats().at(0)->fragment; 1000 regular_fragment->PositionedFloats().at(0).fragment;
1001 EXPECT_THAT(LayoutUnit(), left_float_fragment->TopOffset()); 1001 EXPECT_THAT(LayoutUnit(), left_float_fragment->TopOffset());
1002 1002
1003 Element* left_wide_float = GetDocument().getElementById("left-wide-float"); 1003 Element* left_wide_float = GetDocument().getElementById("left-wide-float");
1004 // left-wide-float is positioned right below left-float as it's too wide. 1004 // left-wide-float is positioned right below left-float as it's too wide.
1005 // 38 = left_float_block_offset + 1005 // 38 = left_float_block_offset +
1006 // left-float's height 30 1006 // left-float's height 30
1007 int left_wide_float_block_offset = 38; 1007 int left_wide_float_block_offset = 38;
1008 EXPECT_EQ(left_wide_float_block_offset, left_wide_float->OffsetTop()); 1008 EXPECT_EQ(left_wide_float_block_offset, left_wide_float->OffsetTop());
1009 auto left_wide_float_fragment = 1009 auto left_wide_float_fragment =
1010 regular_fragment->PositionedFloats().at(1)->fragment; 1010 regular_fragment->PositionedFloats().at(1).fragment;
1011 // 30 = left-float's height. 1011 // 30 = left-float's height.
1012 EXPECT_THAT(LayoutUnit(30), left_wide_float_fragment->TopOffset()); 1012 EXPECT_THAT(LayoutUnit(30), left_wide_float_fragment->TopOffset());
1013 1013
1014 Element* regular = GetDocument().getElementById("regular"); 1014 Element* regular = GetDocument().getElementById("regular");
1015 // regular_block_offset = body's margin-top 8 1015 // regular_block_offset = body's margin-top 8
1016 int regular_block_offset = 8; 1016 int regular_block_offset = 8;
1017 EXPECT_EQ(regular_block_offset, regular->OffsetTop()); 1017 EXPECT_EQ(regular_block_offset, regular->OffsetTop());
1018 auto* regular_block_fragment = 1018 auto* regular_block_fragment =
1019 ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get()); 1019 ToNGPhysicalBoxFragment(container_fragment->Children()[0].Get());
1020 EXPECT_THAT(LayoutUnit(), regular_block_fragment->TopOffset()); 1020 EXPECT_THAT(LayoutUnit(), regular_block_fragment->TopOffset());
1021 1021
1022 Element* right_float = GetDocument().getElementById("right-float"); 1022 Element* right_float = GetDocument().getElementById("right-float");
1023 // 158 = body's margin-left 8 + container's width 200 - right_float's width 50 1023 // 158 = body's margin-left 8 + container's width 200 - right_float's width 50
1024 int right_float_inline_offset = 158; 1024 int right_float_inline_offset = 158;
1025 // it's positioned right after our left_wide_float 1025 // it's positioned right after our left_wide_float
1026 // 68 = left_wide_float_block_offset 38 + left-wide-float's height 30 1026 // 68 = left_wide_float_block_offset 38 + left-wide-float's height 30
1027 int right_float_block_offset = left_wide_float_block_offset + 30; 1027 int right_float_block_offset = left_wide_float_block_offset + 30;
1028 EXPECT_EQ(right_float_inline_offset, right_float->OffsetLeft()); 1028 EXPECT_EQ(right_float_inline_offset, right_float->OffsetLeft());
1029 EXPECT_EQ(right_float_block_offset, right_float->OffsetTop()); 1029 EXPECT_EQ(right_float_block_offset, right_float->OffsetTop());
1030 auto right_float_fragment = 1030 auto right_float_fragment =
1031 container_fragment->PositionedFloats().at(0)->fragment; 1031 container_fragment->PositionedFloats().at(0).fragment;
1032 // 60 = right_float_block_offset(68) - body's margin(8) 1032 // 60 = right_float_block_offset(68) - body's margin(8)
1033 EXPECT_THAT(LayoutUnit(right_float_block_offset - 8), 1033 EXPECT_THAT(LayoutUnit(right_float_block_offset - 8),
1034 right_float_fragment->TopOffset()); 1034 right_float_fragment->TopOffset());
1035 // 150 = right_float_inline_offset(158) - body's margin(8) 1035 // 150 = right_float_inline_offset(158) - body's margin(8)
1036 EXPECT_THAT(LayoutUnit(right_float_inline_offset - 8), 1036 EXPECT_THAT(LayoutUnit(right_float_inline_offset - 8),
1037 right_float_fragment->LeftOffset()); 1037 right_float_fragment->LeftOffset());
1038 1038
1039 Element* left_float_with_margin = 1039 Element* left_float_with_margin =
1040 GetDocument().getElementById("left-float-with-margin"); 1040 GetDocument().getElementById("left-float-with-margin");
1041 // 18 = body's margin(8) + left-float-with-margin's margin(10) 1041 // 18 = body's margin(8) + left-float-with-margin's margin(10)
1042 int left_float_with_margin_inline_offset = 18; 1042 int left_float_with_margin_inline_offset = 18;
1043 EXPECT_EQ(left_float_with_margin_inline_offset, 1043 EXPECT_EQ(left_float_with_margin_inline_offset,
1044 left_float_with_margin->OffsetLeft()); 1044 left_float_with_margin->OffsetLeft());
1045 // 78 = left_wide_float_block_offset 38 + left-wide-float's height 30 + 1045 // 78 = left_wide_float_block_offset 38 + left-wide-float's height 30 +
1046 // left-float-with-margin's margin(10) 1046 // left-float-with-margin's margin(10)
1047 int left_float_with_margin_block_offset = 78; 1047 int left_float_with_margin_block_offset = 78;
1048 EXPECT_EQ(left_float_with_margin_block_offset, 1048 EXPECT_EQ(left_float_with_margin_block_offset,
1049 left_float_with_margin->OffsetTop()); 1049 left_float_with_margin->OffsetTop());
1050 auto left_float_with_margin_fragment = 1050 auto left_float_with_margin_fragment =
1051 container_fragment->PositionedFloats().at(1)->fragment; 1051 container_fragment->PositionedFloats().at(1).fragment;
1052 // 70 = left_float_with_margin_block_offset(78) - body's margin(8) 1052 // 70 = left_float_with_margin_block_offset(78) - body's margin(8)
1053 EXPECT_THAT(LayoutUnit(left_float_with_margin_block_offset - 8), 1053 EXPECT_THAT(LayoutUnit(left_float_with_margin_block_offset - 8),
1054 left_float_with_margin_fragment->TopOffset()); 1054 left_float_with_margin_fragment->TopOffset());
1055 // 10 = left_float_with_margin_inline_offset(18) - body's margin(8) 1055 // 10 = left_float_with_margin_inline_offset(18) - body's margin(8)
1056 EXPECT_THAT(LayoutUnit(left_float_with_margin_inline_offset - 8), 1056 EXPECT_THAT(LayoutUnit(left_float_with_margin_inline_offset - 8),
1057 left_float_with_margin_fragment->LeftOffset()); 1057 left_float_with_margin_fragment->LeftOffset());
1058 } 1058 }
1059 1059
1060 // Verifies that NG block layout algorithm respects "clear" CSS property. 1060 // Verifies that NG block layout algorithm respects "clear" CSS property.
1061 TEST_F(NGBlockLayoutAlgorithmTest, PositionFragmentsWithClear) { 1061 TEST_F(NGBlockLayoutAlgorithmTest, PositionFragmentsWithClear) {
(...skipping 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after
2329 run_test(Length(120, kFixed)); 2329 run_test(Length(120, kFixed));
2330 // 30 = #float's height 2330 // 30 = #float's height
2331 EXPECT_THAT(new_fc_fragment->Offset(), 2331 EXPECT_THAT(new_fc_fragment->Offset(),
2332 NGPhysicalOffset(LayoutUnit(0), LayoutUnit(30))); 2332 NGPhysicalOffset(LayoutUnit(0), LayoutUnit(30)));
2333 // 8 = body's margins, no margin collapsing 2333 // 8 = body's margins, no margin collapsing
2334 EXPECT_THAT(body_fragment->Offset(), 2334 EXPECT_THAT(body_fragment->Offset(),
2335 NGPhysicalOffset(LayoutUnit(8), LayoutUnit(8))); 2335 NGPhysicalOffset(LayoutUnit(8), LayoutUnit(8)));
2336 } 2336 }
2337 } // namespace 2337 } // namespace
2338 } // namespace blink 2338 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698