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

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

Issue 2298273002: Initial exclusion aware layout opportunities implementation (Closed)
Patch Set: Address reviewer comments Created 4 years, 3 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 4a392c382aefbd2ceb5df0f944d2df36e494e8c2..75479d2c2bd9796a3c0b90fe3b457ef073da7cc3 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
@@ -42,8 +42,49 @@ TEST(NGConstraintSpaceTest, WritingMode) {
EXPECT_EQ(FragmentNone, vert_space->BlockFragmentationType());
}
-TEST(NGConstraintSpaceTest, LayoutOpportunities) {
- // TODO(eae): Implement in followup change.
+TEST(NGConstraintSpaceTest, LayoutOpportunitiesNoExclusions) {
+ NGPhysicalSize physical_size;
+ physical_size.width = LayoutUnit(600);
+ physical_size.height = LayoutUnit(400);
+ auto* physical_space = new NGPhysicalConstraintSpace(physical_size);
+ auto* space = new NGConstraintSpace(HorizontalTopBottom, physical_space);
+
+ bool for_inline_or_bfc = true;
+ auto* iterator = space->LayoutOpportunities(NGClearNone, for_inline_or_bfc);
+
+ const NGConstraintSpace* firstOpportunity = iterator->Next();
+ EXPECT_NE(nullptr, firstOpportunity);
+ EXPECT_EQ(LayoutUnit(600), firstOpportunity->Size().inline_size);
+ EXPECT_EQ(LayoutUnit(400), firstOpportunity->Size().block_size);
+
+ const NGConstraintSpace* secondOpportunity = iterator->Next();
+ EXPECT_EQ(nullptr, secondOpportunity);
+}
+
+TEST(NGConstraintSpaceTest, LayoutOpportunitiesOneExclusion) {
+ NGPhysicalSize physical_size;
+ physical_size.width = LayoutUnit(600);
+ physical_size.height = LayoutUnit(400);
+ auto* physical_space = new NGPhysicalConstraintSpace(physical_size);
+
+ // Add a 100x100 exclusion in the top right corner.
+ physical_space->AddExclusion(NGExclusion(LayoutUnit(0), LayoutUnit(600),
+ LayoutUnit(100), LayoutUnit(500)));
+
+ auto* space = new NGConstraintSpace(HorizontalTopBottom, physical_space);
+ bool for_inline_or_bfc = true;
+ auto* iterator = space->LayoutOpportunities(NGClearNone, for_inline_or_bfc);
+
+ // First opportunity should be to the left of the exclusion.
+ const NGConstraintSpace* firstOpportunity = iterator->Next();
+ EXPECT_NE(nullptr, firstOpportunity);
+ EXPECT_EQ(LayoutUnit(0), firstOpportunity->Offset().inline_offset);
+ EXPECT_EQ(LayoutUnit(0), firstOpportunity->Offset().block_offset);
+ EXPECT_EQ(LayoutUnit(500), firstOpportunity->Size().inline_size);
+ EXPECT_EQ(LayoutUnit(400), firstOpportunity->Size().block_size);
+
+ const NGConstraintSpace* secondOpportunity = iterator->Next();
+ EXPECT_EQ(nullptr, secondOpportunity);
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698