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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc

Issue 2732223007: Revert of Combine 2 exclusions in Layout Opportunity Tree if they shadow each other (Closed)
Patch Set: Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
index 315138841e58873002c043cf7ce592248d33af2e..70975911cdd00cf8b0b4427a073f87c8ab4277b6 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
@@ -13,11 +13,9 @@
namespace {
-RefPtr<NGConstraintSpace> ConstructConstraintSpace(
- NGWritingMode writing_mode,
- TextDirection direction,
- NGLogicalSize size,
- const NGLogicalOffset& bfc_offset = {}) {
+RefPtr<NGConstraintSpace> ConstructConstraintSpace(NGWritingMode writing_mode,
+ TextDirection direction,
+ NGLogicalSize size) {
return NGConstraintSpaceBuilder(writing_mode)
.SetTextDirection(direction)
.SetAvailableSize(size)
@@ -25,10 +23,13 @@
.SetIsFixedSizeInline(true)
.SetIsInlineDirectionTriggersScrollbar(true)
.SetFragmentationType(NGFragmentationType::kFragmentColumn)
- .SetBfcOffset(bfc_offset)
.ToConstraintSpace(writing_mode);
}
+static String OpportunityToString(const NGLayoutOpportunity& opportunity) {
+ return opportunity.IsEmpty() ? String("(empty)") : opportunity.ToString();
+}
+
TEST(NGConstraintSpaceTest, LayoutOpportunitiesNoExclusions) {
NGLogicalSize size;
size.inline_size = LayoutUnit(600);
@@ -37,11 +38,8 @@
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
NGLayoutOpportunityIterator iterator(space.get());
- // 600x400 at (0,0)
- NGLayoutOpportunity opp1 = {{}, {LayoutUnit(600), LayoutUnit(400)}};
- EXPECT_EQ(opp1, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
+ EXPECT_EQ("0,0 600x400", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
}
TEST(NGConstraintSpaceTest, LayoutOpportunitiesTopRightExclusion) {
@@ -52,22 +50,19 @@
RefPtr<NGConstraintSpace> space =
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
NGExclusion exclusion;
- exclusion.rect.size = {LayoutUnit(100), LayoutUnit(100)};
- exclusion.rect.offset = {LayoutUnit(500), LayoutUnit()};
+ exclusion.rect.size = {/* inline_size */ LayoutUnit(100),
+ /* block_size */ LayoutUnit(100)};
+ exclusion.rect.offset = {/* inline_offset */ LayoutUnit(500),
+ /* block_offset */ LayoutUnit(0)};
space->AddExclusion(exclusion);
NGLayoutOpportunityIterator iterator(space.get());
-
- // First opportunity should be to the left of the exclusion: 500x400 at (0,0)
- NGLayoutOpportunity opp1 = {{}, {LayoutUnit(500), LayoutUnit(400)}};
- EXPECT_EQ(opp1, iterator.Next());
-
- // Second opportunity should be below the exclusion: 600x300 at (0,100)
- NGLayoutOpportunity opp2 = {{LayoutUnit(), LayoutUnit(100)},
- {LayoutUnit(600), LayoutUnit(300)}};
- EXPECT_EQ(opp2, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
+ // First opportunity should be to the left of the exclusion.
+ EXPECT_EQ("0,0 500x400", OpportunityToString(iterator.Next()));
+ // Second opportunity should be below the exclusion.
+ EXPECT_EQ("0,100 600x300", OpportunityToString(iterator.Next()));
+ // There should be no third opportunity.
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
}
TEST(NGConstraintSpaceTest, LayoutOpportunitiesTopLeftExclusion) {
@@ -78,22 +73,19 @@
RefPtr<NGConstraintSpace> space =
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
NGExclusion exclusion;
- exclusion.rect.size = {LayoutUnit(100), LayoutUnit(100)};
+ exclusion.rect.size = {/* inline_size */ LayoutUnit(100),
+ /* block_size */ LayoutUnit(100)};
+ exclusion.rect.offset = {/* inline_offset */ LayoutUnit(0),
+ /* block_offset */ LayoutUnit(0)};
space->AddExclusion(exclusion);
NGLayoutOpportunityIterator iterator(space.get());
- // First opportunity should be to the right of the exclusion:
- // 500x400 at (100, 0)
- NGLayoutOpportunity opp1 = {{LayoutUnit(100), LayoutUnit()},
- {LayoutUnit(500), LayoutUnit(400)}};
- EXPECT_EQ(opp1, iterator.Next());
-
- // Second opportunity should be below the exclusion: 600x300 at (0,100)
- NGLayoutOpportunity opp2 = {{LayoutUnit(), LayoutUnit(100)},
- {LayoutUnit(600), LayoutUnit(300)}};
- EXPECT_EQ(opp2, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
+ // First opportunity should be to the right of the exclusion.
+ EXPECT_EQ("100,0 500x400", OpportunityToString(iterator.Next()));
+ // Second opportunity should be below the exclusion.
+ EXPECT_EQ("0,100 600x300", OpportunityToString(iterator.Next()));
+ // There should be no third opportunity.
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
}
// Verifies that Layout Opportunity iterator produces 7 layout opportunities
@@ -127,45 +119,32 @@
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
// Add exclusions
NGExclusion exclusion1;
- exclusion1.rect.size = {LayoutUnit(100), LayoutUnit(100)};
- exclusion1.rect.offset = {LayoutUnit(150), LayoutUnit(200)};
+ exclusion1.rect.size = {/* inline_size */ LayoutUnit(100),
+ /* block_size */ LayoutUnit(100)};
+ exclusion1.rect.offset = {/* inline_offset */ LayoutUnit(150),
+ /* block_offset */ LayoutUnit(200)};
space->AddExclusion(exclusion1);
NGExclusion exclusion2;
- exclusion2.rect.size = {LayoutUnit(50), LayoutUnit(50)};
- exclusion2.rect.offset = {LayoutUnit(500), LayoutUnit(350)};
+ exclusion2.rect.size = {/* inline_size */ LayoutUnit(50),
+ /* block_size */ LayoutUnit(50)};
+ exclusion2.rect.offset = {/* inline_offset */ LayoutUnit(500),
+ /* block_offset */ LayoutUnit(350)};
space->AddExclusion(exclusion2);
NGLayoutOpportunityIterator iterator(space.get());
- NGLogicalOffset start_point1;
- // 600x200 at (0,0)
- NGLayoutOpportunity opp1 = {start_point1, {LayoutUnit(600), LayoutUnit(200)}};
- EXPECT_EQ(opp1, (iterator.Next()));
- // 150x400 at (0,0)
- NGLayoutOpportunity opp2 = {start_point1, {LayoutUnit(150), LayoutUnit(400)}};
- EXPECT_EQ(opp2, (iterator.Next()));
-
- NGLogicalOffset start_point2 = {LayoutUnit(250), LayoutUnit()};
- // 350x350 at (250,0)
- NGLayoutOpportunity opp3 = {start_point2, {LayoutUnit(350), LayoutUnit(350)}};
- EXPECT_EQ(opp3, (iterator.Next()));
- // 250x400 at (250,0)
- NGLayoutOpportunity opp4 = {start_point2, {LayoutUnit(250), LayoutUnit(400)}};
- EXPECT_EQ(opp4, (iterator.Next()));
-
- NGLogicalOffset start_point3 = {LayoutUnit(550), LayoutUnit()};
- // 50x400 at (550,0)
- NGLayoutOpportunity opp5 = {start_point3, {LayoutUnit(50), LayoutUnit(400)}};
- EXPECT_EQ(opp5, (iterator.Next()));
-
- NGLogicalOffset start_point4 = {LayoutUnit(), LayoutUnit(300)};
- // 600x50 at (0,300)
- NGLayoutOpportunity opp6 = {start_point4, {LayoutUnit(600), LayoutUnit(50)}};
- EXPECT_EQ(opp6, (iterator.Next()));
- // 500x100 at (0,300)
- NGLayoutOpportunity opp7 = {start_point4, {LayoutUnit(500), LayoutUnit(100)}};
- EXPECT_EQ(opp7, (iterator.Next()));
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
+ // 1st Start point
+ EXPECT_EQ("0,0 600x200", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("0,0 150x400", OpportunityToString(iterator.Next()));
+ // 2nd Start point
+ EXPECT_EQ("250,0 350x350", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("250,0 250x400", OpportunityToString(iterator.Next()));
+ // 3rd Start point
+ EXPECT_EQ("550,0 50x400", OpportunityToString(iterator.Next()));
+ // 4th Start point
+ EXPECT_EQ("0,300 600x50", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("0,300 500x100", OpportunityToString(iterator.Next()));
+ // Iterator is exhausted.
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
}
// This test is the same as LayoutOpportunitiesTwoInMiddle with the only
@@ -190,51 +169,36 @@
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
// Add exclusions
NGExclusion exclusion1;
- exclusion1.rect.size = {LayoutUnit(100), LayoutUnit(100)};
- exclusion1.rect.offset = {LayoutUnit(150), LayoutUnit(200)};
+ exclusion1.rect.size = {/* inline_size */ LayoutUnit(100),
+ /* block_size */ LayoutUnit(100)};
+ exclusion1.rect.offset = {/* inline_offset */ LayoutUnit(150),
+ /* block_offset */ LayoutUnit(200)};
space->AddExclusion(exclusion1);
NGExclusion exclusion2;
- exclusion2.rect.size = {LayoutUnit(50), LayoutUnit(50)};
- exclusion2.rect.offset = {LayoutUnit(500), LayoutUnit(350)};
+ exclusion2.rect.size = {/* inline_size */ LayoutUnit(50),
+ /* block_size */ LayoutUnit(50)};
+ exclusion2.rect.offset = {/* inline_offset */ LayoutUnit(500),
+ /* block_offset */ LayoutUnit(350)};
space->AddExclusion(exclusion2);
- const NGLogicalOffset origin_point = {LayoutUnit(), LayoutUnit(200)};
+ const NGLogicalOffset origin_point = {LayoutUnit(0), LayoutUnit(200)};
const NGLogicalOffset leader_point = {LayoutUnit(250), LayoutUnit(300)};
NGLayoutOpportunityIterator iterator(space.get(), origin_point, leader_point);
-
- NGLogicalOffset start_point1 = {LayoutUnit(250), LayoutUnit(200)};
- // 350x150 at (250,200)
- NGLayoutOpportunity opp1 = {start_point1, {LayoutUnit(350), LayoutUnit(150)}};
- EXPECT_EQ(opp1, iterator.Next());
- // 250x400 at (250,200)
- NGLayoutOpportunity opp2 = {start_point1, {LayoutUnit(250), LayoutUnit(400)}};
- EXPECT_EQ(opp2, iterator.Next());
-
- NGLogicalOffset start_point2 = {LayoutUnit(550), LayoutUnit(200)};
- // 50x400 at (550,200)
- NGLayoutOpportunity opp3 = {start_point2, {LayoutUnit(50), LayoutUnit(400)}};
- EXPECT_EQ(opp3, iterator.Next());
-
- NGLogicalOffset start_point3 = {LayoutUnit(), LayoutUnit(300)};
- // 600x50 at (0,300)
- NGLayoutOpportunity opp4 = {start_point3, {LayoutUnit(600), LayoutUnit(50)}};
- EXPECT_EQ(opp4, iterator.Next());
- // 500x300 at (0,300)
- NGLayoutOpportunity opp5 = {start_point3, {LayoutUnit(500), LayoutUnit(300)}};
- EXPECT_EQ(opp5, iterator.Next());
-
+ // 1st Start Point
+ EXPECT_EQ("250,200 350x150", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("250,200 250x400", OpportunityToString(iterator.Next()));
+ // 2nd Start Point
+ EXPECT_EQ("550,200 50x400", OpportunityToString(iterator.Next()));
+ // 3rd Start Point
+ EXPECT_EQ("0,300 600x50", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("0,300 500x300", OpportunityToString(iterator.Next()));
// 4th Start Point
- NGLogicalOffset start_point4 = {LayoutUnit(), LayoutUnit(400)};
- // 600x200 at (0,400)
- NGLayoutOpportunity opp6 = {start_point4, {LayoutUnit(600), LayoutUnit(200)}};
- EXPECT_EQ(opp6, iterator.Next());
-
+ EXPECT_EQ("0,400 600x200", OpportunityToString(iterator.Next()));
// TODO(glebl): The opportunity below should not be generated.
- EXPECT_EQ("350x200 at (250,400)", iterator.Next().ToString());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
-}
-
+ EXPECT_EQ("250,400 350x200", OpportunityToString(iterator.Next()));
+ // Iterator is exhausted.
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
+}
// Verifies that Layout Opportunity iterator ignores the exclusion that is not
// within constraint space.
//
@@ -251,103 +215,21 @@
// Layout opportunity iterator generates only one opportunity that equals to
// available constraint space, i.e. 0,0 600x200
TEST(NGConstraintSpaceTest, LayoutOpportunitiesWithOutOfBoundsExclusions) {
- NGLogicalSize size = {LayoutUnit(600), LayoutUnit(100)};
+ NGLogicalSize size;
+ size.inline_size = LayoutUnit(600);
+ size.block_size = LayoutUnit(100);
RefPtr<NGConstraintSpace> space =
ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr, size);
NGExclusion exclusion;
- exclusion.rect.size = {LayoutUnit(100), LayoutUnit(100)};
- exclusion.rect.offset = {LayoutUnit(), LayoutUnit(150)};
+ exclusion.rect.size = {/* inline_size */ LayoutUnit(100),
+ /* block_size */ LayoutUnit(100)};
+ exclusion.rect.offset = {/* inline_offset */ LayoutUnit(0),
+ /* block_offset */ LayoutUnit(150)};
space->AddExclusion(exclusion);
NGLayoutOpportunityIterator iterator(space.get());
- // 600x100 at (0,0)
- NGLayoutOpportunity opp = {{}, size};
- EXPECT_EQ(opp, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
-}
-
-// Verifies that we combine 2 adjoining left exclusions into one left exclusion.
-TEST(NGConstraintSpaceTest, TwoLeftExclusionsShadowEachOther) {
- NGLogicalOffset bfc_offset = {LayoutUnit(8), LayoutUnit(8)};
- RefPtr<NGConstraintSpace> space =
- ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr,
- {LayoutUnit(200), LayoutUnit(200)}, bfc_offset);
-
- NGExclusion small_left;
- small_left.rect.size = {LayoutUnit(10), LayoutUnit(10)};
- small_left.rect.offset = bfc_offset;
- small_left.type = NGExclusion::kFloatLeft;
- space->AddExclusion(small_left);
-
- NGExclusion big_left;
- big_left.rect.size = {LayoutUnit(20), LayoutUnit(20)};
- big_left.rect.offset = bfc_offset;
- big_left.rect.offset.inline_offset += small_left.rect.InlineSize();
- big_left.type = NGExclusion::kFloatLeft;
- space->AddExclusion(big_left);
-
- NGLayoutOpportunityIterator iterator(space.get(), bfc_offset);
-
- NGLogicalOffset start_point1 = bfc_offset;
- start_point1.inline_offset +=
- small_left.rect.InlineSize() + big_left.rect.InlineSize();
- // 170x200 at (38, 8)
- NGLayoutOpportunity opportunity1 = {start_point1,
- {LayoutUnit(170), LayoutUnit(200)}};
- EXPECT_EQ(opportunity1, iterator.Next());
-
- NGLogicalOffset start_point2 = bfc_offset;
- start_point2.block_offset += big_left.rect.BlockSize();
- // 200x180 at (8, 28)
- NGLayoutOpportunity opportunity2 = {start_point2,
- {LayoutUnit(200), LayoutUnit(180)}};
- EXPECT_EQ(opportunity2, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
-}
-
-// Verifies that we combine 2 adjoining right exclusions into one right
-// exclusion.
-TEST(NGConstraintSpaceTest, TwoRightExclusionsShadowEachOther) {
- NGLogicalOffset bfc_offset = {LayoutUnit(8), LayoutUnit(8)};
- RefPtr<NGConstraintSpace> space =
- ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::kLtr,
- {LayoutUnit(200), LayoutUnit(200)}, bfc_offset);
-
- NGExclusion small_right;
- small_right.rect.size = {LayoutUnit(10), LayoutUnit(10)};
- small_right.rect.offset = bfc_offset;
- small_right.rect.offset.inline_offset +=
- space->AvailableSize().inline_size - small_right.rect.InlineSize();
- small_right.type = NGExclusion::kFloatRight;
- space->AddExclusion(small_right);
-
- NGExclusion big_right;
- big_right.rect.size = {LayoutUnit(20), LayoutUnit(20)};
- big_right.rect.offset = bfc_offset;
- big_right.rect.offset.inline_offset += space->AvailableSize().inline_size -
- small_right.rect.InlineSize() -
- big_right.rect.InlineSize();
- big_right.type = NGExclusion::kFloatRight;
- space->AddExclusion(big_right);
-
- NGLayoutOpportunityIterator iterator(space.get(), bfc_offset);
-
- NGLogicalOffset start_point1 = bfc_offset;
- // 170x200 at (8, 8)
- NGLayoutOpportunity opportunity1 = {start_point1,
- {LayoutUnit(170), LayoutUnit(200)}};
- EXPECT_EQ(opportunity1, iterator.Next());
-
- NGLogicalOffset start_point2 = bfc_offset;
- start_point2.block_offset += big_right.rect.BlockSize();
- // 200x180 at (8, 28)
- NGLayoutOpportunity opportunity2 = {start_point2,
- {LayoutUnit(200), LayoutUnit(180)}};
- EXPECT_EQ(opportunity2, iterator.Next());
-
- EXPECT_EQ(NGLayoutOpportunity(), iterator.Next());
+ EXPECT_EQ("0,0 600x100", OpportunityToString(iterator.Next()));
+ EXPECT_EQ("(empty)", OpportunityToString(iterator.Next()));
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698