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

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

Issue 2643043003: Constrain width/height to minmax values (Closed)
Patch Set: Clamp width/height to minmax values Created 3 years, 11 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_absolute_utils_test.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
index 7d1a3369249547b30bd968f78c56ba9ad65ec1e2..334757feb76613089f430ef7e9cc74297451593a 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
@@ -423,5 +423,63 @@ TEST_F(NGAbsoluteUtilsTest, Vertical) {
EXPECT_EQ(height, p.size.height);
}
+TEST_F(NGAbsoluteUtilsTest, MinMax) {
+ LayoutUnit min{50};
+ LayoutUnit max{150};
+
+ style_->setMinWidth(Length(min.toInt(), LengthType::Fixed));
+ style_->setMaxWidth(Length(max.toInt(), LengthType::Fixed));
+ style_->setMinHeight(Length(min.toInt(), LengthType::Fixed));
+ style_->setMaxHeight(Length(max.toInt(), LengthType::Fixed));
+
+ NGStaticPosition static_position{NGStaticPosition::kTopLeft,
+ {LayoutUnit(), LayoutUnit()}};
+ MinAndMaxContentSizes estimated_inline{LayoutUnit(20), LayoutUnit(20)};
+ NGAbsolutePhysicalPosition p;
+
+ // WIDTH TESTS
+
+ // width < min gets set to min.
+ SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto);
+ p = ComputePartialAbsoluteWithChildInlineSize(
+ *ltr_space_, *style_, static_position, estimated_inline);
+ EXPECT_EQ(min, p.size.width);
+
+ // width > max gets set to max.
+ SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto);
+ p = ComputePartialAbsoluteWithChildInlineSize(
+ *ltr_space_, *style_, static_position, estimated_inline);
+ EXPECT_EQ(max, p.size.width);
+
+ // Unspecified width becomes minmax, gets clamped to min.
+ SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto);
+ p = ComputePartialAbsoluteWithChildInlineSize(
+ *ltr_space_, *style_, static_position, estimated_inline);
+ EXPECT_EQ(min, p.size.width);
+
+ // HEIGHT TESTS
+
+ Optional<LayoutUnit> auto_height;
+
+ // height < min gets set to min.
+ SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto);
+ ComputeFullAbsoluteWithChildBlockSize(*ltr_space_, *style_, static_position,
+ auto_height, &p);
+ EXPECT_EQ(min, p.size.height);
+
+ // height > max gets set to max.
+ SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto);
+ ComputeFullAbsoluteWithChildBlockSize(*ltr_space_, *style_, static_position,
+ auto_height, &p);
+ EXPECT_EQ(max, p.size.height);
+
+ // // Unspecified height becomes estimated, gets clamped to min.
+ SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto);
+ auto_height = LayoutUnit(20);
+ ComputeFullAbsoluteWithChildBlockSize(*ltr_space_, *style_, static_position,
+ auto_height, &p);
+ EXPECT_EQ(min, p.size.width);
+}
+
} // namespace
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698