summaryrefslogtreecommitdiff
path: root/chromium/ui/views/controls/label_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/views/controls/label_unittest.cc')
-rw-r--r--chromium/ui/views/controls/label_unittest.cc73
1 files changed, 60 insertions, 13 deletions
diff --git a/chromium/ui/views/controls/label_unittest.cc b/chromium/ui/views/controls/label_unittest.cc
index b2cf18f40af..820567cc99e 100644
--- a/chromium/ui/views/controls/label_unittest.cc
+++ b/chromium/ui/views/controls/label_unittest.cc
@@ -56,7 +56,10 @@ class TestLabel : public Label {
void SimulatePaint() {
SkBitmap bitmap;
SkColor color = SK_ColorTRANSPARENT;
- Paint(ui::CanvasPainter(&bitmap, bounds().size(), 1.f, color).context());
+ Paint(PaintInfo::CreateRootPaintInfo(
+ ui::CanvasPainter(&bitmap, bounds().size(), 1.f, color, false)
+ .context(),
+ bounds().size()));
}
// View:
@@ -569,8 +572,7 @@ TEST_F(LabelTest, SingleLineSizing) {
EXPECT_EQ(size, label()->GetPreferredSize());
const gfx::Insets border(10, 20, 30, 40);
- label()->SetBorder(CreateEmptyBorder(border.top(), border.left(),
- border.bottom(), border.right()));
+ label()->SetBorder(CreateEmptyBorder(border));
const gfx::Size size_with_border = label()->GetPreferredSize();
EXPECT_EQ(size_with_border.height(), size.height() + border.height());
EXPECT_EQ(size_with_border.width(), size.width() + border.width());
@@ -649,8 +651,7 @@ TEST_F(LabelTest, MultiLineSizing) {
// Test everything with borders.
gfx::Insets border(10, 20, 30, 40);
- label()->SetBorder(CreateEmptyBorder(border.top(), border.left(),
- border.bottom(), border.right()));
+ label()->SetBorder(CreateEmptyBorder(border));
// SizeToFit and borders.
label()->SizeToFit(0);
@@ -682,6 +683,52 @@ TEST_F(LabelTest, MultiLineSizing) {
required_size.width() + border.width());
}
+#if !defined(OS_MACOSX)
+// TODO(warx): Remove !defined(OS_MACOSX) once SetMaxLines() is applied to MAC
+// (crbug.com/758720).
+TEST_F(LabelTest, MultiLineSetMaxLines) {
+ // Ensure SetMaxLines clamps the line count of a string with returns.
+ label()->SetText(ASCIIToUTF16("first line\nsecond line\nthird line"));
+ label()->SetMultiLine(true);
+ gfx::Size string_size = label()->GetPreferredSize();
+ label()->SetMaxLines(2);
+ gfx::Size two_line_size = label()->GetPreferredSize();
+ EXPECT_EQ(string_size.width(), two_line_size.width());
+ EXPECT_GT(string_size.height(), two_line_size.height());
+
+ // Ensure GetHeightForWidth also respects SetMaxLines.
+ int height = label()->GetHeightForWidth(string_size.width() / 2);
+ EXPECT_EQ(height, two_line_size.height());
+
+ // Ensure SetMaxLines also works with line wrapping for SizeToFit.
+ label()->SetText(ASCIIToUTF16("A long string that will be wrapped"));
+ label()->SetMaxLines(0); // Used to get the uncapped height.
+ label()->SizeToFit(0); // Used to get the uncapped width.
+ label()->SizeToFit(label()->GetPreferredSize().width() / 4);
+ string_size = label()->GetPreferredSize();
+ label()->SetMaxLines(2);
+ two_line_size = label()->GetPreferredSize();
+ EXPECT_EQ(string_size.width(), two_line_size.width());
+ EXPECT_GT(string_size.height(), two_line_size.height());
+
+ // Ensure SetMaxLines also works with line wrapping for SetMaximumWidth.
+ label()->SetMaxLines(0); // Used to get the uncapped height.
+ label()->SizeToFit(0); // Used to get the uncapped width.
+ label()->SetMaximumWidth(label()->GetPreferredSize().width() / 4);
+ string_size = label()->GetPreferredSize();
+ label()->SetMaxLines(2);
+ two_line_size = label()->GetPreferredSize();
+ EXPECT_EQ(string_size.width(), two_line_size.width());
+ EXPECT_GT(string_size.height(), two_line_size.height());
+
+ // Ensure SetMaxLines respects the requested inset height.
+ const gfx::Insets border(1, 2, 3, 4);
+ label()->SetBorder(CreateEmptyBorder(border));
+ EXPECT_EQ(two_line_size.height() + border.height(),
+ label()->GetPreferredSize().height());
+}
+#endif
+
// Verifies if the combination of text eliding and multiline doesn't cause
// any side effects of size / layout calculation.
TEST_F(LabelTest, MultiLineSizingWithElide) {
@@ -696,7 +743,7 @@ TEST_F(LabelTest, MultiLineSizingWithElide) {
label()->SetBoundsRect(gfx::Rect(required_size));
label()->SetElideBehavior(gfx::ELIDE_TAIL);
- EXPECT_EQ(required_size.ToString(), label()->GetPreferredSize().ToString());
+ EXPECT_EQ(required_size, label()->GetPreferredSize());
EXPECT_EQ(text, label()->GetDisplayTextForTesting());
label()->SizeToFit(required_size.width() - 1);
@@ -706,12 +753,12 @@ TEST_F(LabelTest, MultiLineSizingWithElide) {
// SetBounds() doesn't change the preferred size.
label()->SetBounds(0, 0, narrow_size.width() - 1, narrow_size.height());
- EXPECT_EQ(narrow_size.ToString(), label()->GetPreferredSize().ToString());
+ EXPECT_EQ(narrow_size, label()->GetPreferredSize());
// Paint() doesn't change the preferred size.
gfx::Canvas canvas;
label()->OnPaint(&canvas);
- EXPECT_EQ(narrow_size.ToString(), label()->GetPreferredSize().ToString());
+ EXPECT_EQ(narrow_size, label()->GetPreferredSize());
}
// Check that labels support GetTooltipHandlerForPoint.
@@ -766,7 +813,7 @@ TEST_F(LabelTest, ResetRenderTextData) {
label()->SizeToPreferredSize();
gfx::Size preferred_size = label()->GetPreferredSize();
- EXPECT_NE(gfx::Size().ToString(), preferred_size.ToString());
+ EXPECT_NE(gfx::Size(), preferred_size);
EXPECT_EQ(0u, label()->lines_.size());
gfx::Canvas canvas(preferred_size, 1.0f, true);
@@ -783,7 +830,7 @@ TEST_F(LabelTest, ResetRenderTextData) {
EXPECT_EQ(ASCIIToUTF16("Example"), label()->text());
EXPECT_EQ(0u, label()->lines_.size());
- EXPECT_EQ(preferred_size.ToString(), label()->GetPreferredSize().ToString());
+ EXPECT_EQ(preferred_size, label()->GetPreferredSize());
EXPECT_EQ(0u, label()->lines_.size());
// RenderText data should be back when it's necessary.
@@ -893,7 +940,7 @@ TEST_P(MDLabelTest, FocusBounds) {
label()->SizeToPreferredSize();
gfx::Rect focus_bounds = label()->GetFocusRingBounds();
- EXPECT_EQ(label()->GetLocalBounds().ToString(), focus_bounds.ToString());
+ EXPECT_EQ(label()->GetLocalBounds(), focus_bounds);
gfx::Size focusable_size = normal_label_size;
label()->SetBounds(
@@ -903,7 +950,7 @@ TEST_P(MDLabelTest, FocusBounds) {
EXPECT_EQ(0, focus_bounds.x());
EXPECT_LT(0, focus_bounds.y());
EXPECT_GT(label()->bounds().bottom(), focus_bounds.bottom());
- EXPECT_EQ(focusable_size.ToString(), focus_bounds.size().ToString());
+ EXPECT_EQ(focusable_size, focus_bounds.size());
label()->SetHorizontalAlignment(gfx::ALIGN_RIGHT);
focus_bounds = label()->GetFocusRingBounds();
@@ -911,7 +958,7 @@ TEST_P(MDLabelTest, FocusBounds) {
EXPECT_EQ(label()->bounds().right(), focus_bounds.right());
EXPECT_LT(0, focus_bounds.y());
EXPECT_GT(label()->bounds().bottom(), focus_bounds.bottom());
- EXPECT_EQ(focusable_size.ToString(), focus_bounds.size().ToString());
+ EXPECT_EQ(focusable_size, focus_bounds.size());
label()->SetHorizontalAlignment(gfx::ALIGN_LEFT);
label()->SetElideBehavior(gfx::FADE_TAIL);