OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/views/controls/label.h" | 5 #include "ui/views/controls/label.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 Label label(base::ASCIIToUTF16("Example")); | 369 Label label(base::ASCIIToUTF16("Example")); |
370 gfx::Size preferred_size = label.GetPreferredSize(); | 370 gfx::Size preferred_size = label.GetPreferredSize(); |
371 | 371 |
372 label.SetMultiLine(true); | 372 label.SetMultiLine(true); |
373 label.SetAllowCharacterBreak(true); | 373 label.SetAllowCharacterBreak(true); |
374 EXPECT_EQ(preferred_size, label.GetPreferredSize()); | 374 EXPECT_EQ(preferred_size, label.GetPreferredSize()); |
375 } | 375 } |
376 | 376 |
377 TEST_F(LabelTest, MultiLineSizing) { | 377 TEST_F(LabelTest, MultiLineSizing) { |
378 Label label; | 378 Label label; |
379 label.SetFocusable(false); | |
380 label.SetText( | 379 label.SetText( |
381 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!")); | 380 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!")); |
382 label.SetMultiLine(true); | 381 label.SetMultiLine(true); |
383 | 382 |
384 // GetPreferredSize | 383 // GetPreferredSize |
385 gfx::Size required_size = label.GetPreferredSize(); | 384 gfx::Size required_size = label.GetPreferredSize(); |
386 EXPECT_GT(required_size.height(), kMinTextDimension); | 385 EXPECT_GT(required_size.height(), kMinTextDimension); |
387 EXPECT_GT(required_size.width(), kMinTextDimension); | 386 EXPECT_GT(required_size.width(), kMinTextDimension); |
388 | 387 |
389 // SizeToFit with unlimited width. | 388 // SizeToFit with unlimited width. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 EXPECT_EQ(required_size_with_border.width(), | 453 EXPECT_EQ(required_size_with_border.width(), |
455 required_size.width() + border.width()); | 454 required_size.width() + border.width()); |
456 } | 455 } |
457 | 456 |
458 // Verifies if the combination of text eliding and multiline doesn't cause | 457 // Verifies if the combination of text eliding and multiline doesn't cause |
459 // any side effects of size / layout calculation. | 458 // any side effects of size / layout calculation. |
460 TEST_F(LabelTest, MultiLineSizingWithElide) { | 459 TEST_F(LabelTest, MultiLineSizingWithElide) { |
461 const base::string16 text = | 460 const base::string16 text = |
462 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!"); | 461 ASCIIToUTF16("A random string\nwith multiple lines\nand returns!"); |
463 Label label; | 462 Label label; |
464 label.SetFocusable(false); | |
465 label.SetText(text); | 463 label.SetText(text); |
466 label.SetMultiLine(true); | 464 label.SetMultiLine(true); |
467 | 465 |
468 gfx::Size required_size = label.GetPreferredSize(); | 466 gfx::Size required_size = label.GetPreferredSize(); |
469 EXPECT_GT(required_size.height(), kMinTextDimension); | 467 EXPECT_GT(required_size.height(), kMinTextDimension); |
470 EXPECT_GT(required_size.width(), kMinTextDimension); | 468 EXPECT_GT(required_size.width(), kMinTextDimension); |
471 label.SetBoundsRect(gfx::Rect(required_size)); | 469 label.SetBoundsRect(gfx::Rect(required_size)); |
472 | 470 |
473 label.SetElideBehavior(gfx::ELIDE_TAIL); | 471 label.SetElideBehavior(gfx::ELIDE_TAIL); |
474 EXPECT_EQ(required_size.ToString(), label.GetPreferredSize().ToString()); | 472 EXPECT_EQ(required_size.ToString(), label.GetPreferredSize().ToString()); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 | 603 |
606 // There's only one 'line', RenderText itself supports multiple lines. | 604 // There's only one 'line', RenderText itself supports multiple lines. |
607 EXPECT_EQ(1u, label.lines_.size()); | 605 EXPECT_EQ(1u, label.lines_.size()); |
608 } | 606 } |
609 #endif | 607 #endif |
610 | 608 |
611 TEST_F(LabelFocusTest, FocusBounds) { | 609 TEST_F(LabelFocusTest, FocusBounds) { |
612 label()->SetText(ASCIIToUTF16("Example")); | 610 label()->SetText(ASCIIToUTF16("Example")); |
613 gfx::Size normal_size = label()->GetPreferredSize(); | 611 gfx::Size normal_size = label()->GetPreferredSize(); |
614 | 612 |
615 label()->SetFocusable(true); | 613 label()->SetFocusBehavior(View::FocusBehavior::ALWAYS); |
616 label()->RequestFocus(); | 614 label()->RequestFocus(); |
617 gfx::Size focusable_size = label()->GetPreferredSize(); | 615 gfx::Size focusable_size = label()->GetPreferredSize(); |
618 // Focusable label requires larger size to paint the focus rectangle. | 616 // Focusable label requires larger size to paint the focus rectangle. |
619 EXPECT_GT(focusable_size.width(), normal_size.width()); | 617 EXPECT_GT(focusable_size.width(), normal_size.width()); |
620 EXPECT_GT(focusable_size.height(), normal_size.height()); | 618 EXPECT_GT(focusable_size.height(), normal_size.height()); |
621 | 619 |
622 label()->SizeToPreferredSize(); | 620 label()->SizeToPreferredSize(); |
623 gfx::Rect focus_bounds = label()->GetFocusBounds(); | 621 gfx::Rect focus_bounds = label()->GetFocusBounds(); |
624 EXPECT_EQ(label()->GetLocalBounds().ToString(), focus_bounds.ToString()); | 622 EXPECT_EQ(label()->GetLocalBounds().ToString(), focus_bounds.ToString()); |
625 | 623 |
(...skipping 16 matching lines...) Expand all Loading... |
642 | 640 |
643 label()->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 641 label()->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
644 label()->SetElideBehavior(gfx::FADE_TAIL); | 642 label()->SetElideBehavior(gfx::FADE_TAIL); |
645 label()->SetBounds(0, 0, focusable_size.width() / 2, focusable_size.height()); | 643 label()->SetBounds(0, 0, focusable_size.width() / 2, focusable_size.height()); |
646 focus_bounds = label()->GetFocusBounds(); | 644 focus_bounds = label()->GetFocusBounds(); |
647 EXPECT_EQ(0, focus_bounds.x()); | 645 EXPECT_EQ(0, focus_bounds.x()); |
648 EXPECT_EQ(focusable_size.width() / 2, focus_bounds.width()); | 646 EXPECT_EQ(focusable_size.width() / 2, focus_bounds.width()); |
649 } | 647 } |
650 | 648 |
651 TEST_F(LabelFocusTest, EmptyLabel) { | 649 TEST_F(LabelFocusTest, EmptyLabel) { |
652 label()->SetFocusable(true); | 650 label()->SetFocusBehavior(View::FocusBehavior::ALWAYS); |
653 label()->RequestFocus(); | 651 label()->RequestFocus(); |
654 label()->SizeToPreferredSize(); | 652 label()->SizeToPreferredSize(); |
655 | 653 |
656 gfx::Rect focus_bounds = label()->GetFocusBounds(); | 654 gfx::Rect focus_bounds = label()->GetFocusBounds(); |
657 EXPECT_FALSE(focus_bounds.IsEmpty()); | 655 EXPECT_FALSE(focus_bounds.IsEmpty()); |
658 EXPECT_LT(label()->font_list().GetHeight(), focus_bounds.height()); | 656 EXPECT_LT(label()->font_list().GetHeight(), focus_bounds.height()); |
659 } | 657 } |
660 | 658 |
661 } // namespace views | 659 } // namespace views |
OLD | NEW |