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

Side by Side Diff: ui/views/controls/label_unittest.cc

Issue 1161933007: ui: Introduce CanvasPainter, remove PaintContext(gfx::Canvas*). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: canvaspainter: . Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | ui/views/controls/textfield/textfield.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/accessibility/ax_view_state.h" 10 #include "ui/accessibility/ax_view_state.h"
11 #include "ui/base/l10n/l10n_util.h" 11 #include "ui/base/l10n/l10n_util.h"
12 #include "ui/compositor/paint_context.h" 12 #include "ui/compositor/canvas_painter.h"
13 #include "ui/gfx/canvas.h" 13 #include "ui/gfx/canvas.h"
14 #include "ui/views/border.h" 14 #include "ui/views/border.h"
15 #include "ui/views/test/focus_manager_test.h" 15 #include "ui/views/test/focus_manager_test.h"
16 #include "ui/views/test/views_test_base.h" 16 #include "ui/views/test/views_test_base.h"
17 #include "ui/views/widget/widget.h" 17 #include "ui/views/widget/widget.h"
18 18
19 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
20 20
21 namespace views { 21 namespace views {
22 22
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 EXPECT_EQ(label.text(), state.name); 298 EXPECT_EQ(label.text(), state.name);
299 EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY)); 299 EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY));
300 } 300 }
301 301
302 TEST_F(LabelTest, TextChangeWithoutLayout) { 302 TEST_F(LabelTest, TextChangeWithoutLayout) {
303 Label label; 303 Label label;
304 label.SetText(ASCIIToUTF16("Example")); 304 label.SetText(ASCIIToUTF16("Example"));
305 label.SetBounds(0, 0, 200, 200); 305 label.SetBounds(0, 0, 200, 200);
306 306
307 gfx::Canvas canvas(gfx::Size(200, 200), 1.0f, true); 307 gfx::Canvas canvas(gfx::Size(200, 200), 1.0f, true);
308 label.Paint(ui::PaintContext(&canvas)); 308 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
309 EXPECT_EQ(1u, label.lines_.size()); 309 EXPECT_EQ(1u, label.lines_.size());
310 EXPECT_EQ(ASCIIToUTF16("Example"), label.lines_[0]->GetDisplayText()); 310 EXPECT_EQ(ASCIIToUTF16("Example"), label.lines_[0]->GetDisplayText());
311 311
312 label.SetText(ASCIIToUTF16("Altered")); 312 label.SetText(ASCIIToUTF16("Altered"));
313 // The altered text should be painted even though Layout() or SetBounds() are 313 // The altered text should be painted even though Layout() or SetBounds() are
314 // not called. 314 // not called.
315 label.Paint(ui::PaintContext(&canvas)); 315 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
316 EXPECT_EQ(1u, label.lines_.size()); 316 EXPECT_EQ(1u, label.lines_.size());
317 EXPECT_EQ(ASCIIToUTF16("Altered"), label.lines_[0]->GetDisplayText()); 317 EXPECT_EQ(ASCIIToUTF16("Altered"), label.lines_[0]->GetDisplayText());
318 } 318 }
319 319
320 TEST_F(LabelTest, EmptyLabelSizing) { 320 TEST_F(LabelTest, EmptyLabelSizing) {
321 Label label; 321 Label label;
322 const gfx::Size expected_size(0, gfx::FontList().GetHeight()); 322 const gfx::Size expected_size(0, gfx::FontList().GetHeight());
323 EXPECT_EQ(expected_size, label.GetPreferredSize()); 323 EXPECT_EQ(expected_size, label.GetPreferredSize());
324 label.SetMultiLine(!label.multi_line()); 324 label.SetMultiLine(!label.multi_line());
325 EXPECT_EQ(expected_size, label.GetPreferredSize()); 325 EXPECT_EQ(expected_size, label.GetPreferredSize());
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 gfx::Size narrow_size = label.GetPreferredSize(); 475 gfx::Size narrow_size = label.GetPreferredSize();
476 EXPECT_GT(required_size.width(), narrow_size.width()); 476 EXPECT_GT(required_size.width(), narrow_size.width());
477 EXPECT_LT(required_size.height(), narrow_size.height()); 477 EXPECT_LT(required_size.height(), narrow_size.height());
478 478
479 // SetBounds() doesn't change the preferred size. 479 // SetBounds() doesn't change the preferred size.
480 label.SetBounds(0, 0, narrow_size.width() - 1, narrow_size.height()); 480 label.SetBounds(0, 0, narrow_size.width() - 1, narrow_size.height());
481 EXPECT_EQ(narrow_size.ToString(), label.GetPreferredSize().ToString()); 481 EXPECT_EQ(narrow_size.ToString(), label.GetPreferredSize().ToString());
482 482
483 // Paint() doesn't change the preferred size. 483 // Paint() doesn't change the preferred size.
484 gfx::Canvas canvas; 484 gfx::Canvas canvas;
485 label.Paint(ui::PaintContext(&canvas)); 485 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
486 EXPECT_EQ(narrow_size.ToString(), label.GetPreferredSize().ToString()); 486 EXPECT_EQ(narrow_size.ToString(), label.GetPreferredSize().ToString());
487 } 487 }
488 488
489 // Check that labels support GetTooltipHandlerForPoint. 489 // Check that labels support GetTooltipHandlerForPoint.
490 TEST_F(LabelTest, GetTooltipHandlerForPoint) { 490 TEST_F(LabelTest, GetTooltipHandlerForPoint) {
491 // A root view must be defined for this test because the hit-testing 491 // A root view must be defined for this test because the hit-testing
492 // behaviour used by GetTooltipHandlerForPoint() is defined by 492 // behaviour used by GetTooltipHandlerForPoint() is defined by
493 // the ViewTargeter installed on the root view. 493 // the ViewTargeter installed on the root view.
494 Widget widget; 494 Widget widget;
495 Widget::InitParams init_params = 495 Widget::InitParams init_params =
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 TEST_F(LabelTest, ResetRenderTextData) { 548 TEST_F(LabelTest, ResetRenderTextData) {
549 Label label; 549 Label label;
550 label.SetText(ASCIIToUTF16("Example")); 550 label.SetText(ASCIIToUTF16("Example"));
551 label.SizeToPreferredSize(); 551 label.SizeToPreferredSize();
552 gfx::Size preferred_size = label.GetPreferredSize(); 552 gfx::Size preferred_size = label.GetPreferredSize();
553 553
554 EXPECT_NE(gfx::Size().ToString(), preferred_size.ToString()); 554 EXPECT_NE(gfx::Size().ToString(), preferred_size.ToString());
555 EXPECT_EQ(0u, label.lines_.size()); 555 EXPECT_EQ(0u, label.lines_.size());
556 556
557 gfx::Canvas canvas(preferred_size, 1.0f, true); 557 gfx::Canvas canvas(preferred_size, 1.0f, true);
558 label.Paint(ui::PaintContext(&canvas)); 558 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
559 EXPECT_EQ(1u, label.lines_.size()); 559 EXPECT_EQ(1u, label.lines_.size());
560 560
561 // Label should recreate its RenderText object when it's invisible, to release 561 // Label should recreate its RenderText object when it's invisible, to release
562 // the layout structures and data. 562 // the layout structures and data.
563 label.SetVisible(false); 563 label.SetVisible(false);
564 EXPECT_EQ(0u, label.lines_.size()); 564 EXPECT_EQ(0u, label.lines_.size());
565 565
566 // Querying fields or size information should not recompute the layout 566 // Querying fields or size information should not recompute the layout
567 // unnecessarily. 567 // unnecessarily.
568 EXPECT_EQ(ASCIIToUTF16("Example"), label.text()); 568 EXPECT_EQ(ASCIIToUTF16("Example"), label.text());
569 EXPECT_EQ(0u, label.lines_.size()); 569 EXPECT_EQ(0u, label.lines_.size());
570 570
571 EXPECT_EQ(preferred_size.ToString(), label.GetPreferredSize().ToString()); 571 EXPECT_EQ(preferred_size.ToString(), label.GetPreferredSize().ToString());
572 EXPECT_EQ(0u, label.lines_.size()); 572 EXPECT_EQ(0u, label.lines_.size());
573 573
574 // RenderText data should be back when it's necessary. 574 // RenderText data should be back when it's necessary.
575 label.SetVisible(true); 575 label.SetVisible(true);
576 EXPECT_EQ(0u, label.lines_.size()); 576 EXPECT_EQ(0u, label.lines_.size());
577 577
578 label.Paint(ui::PaintContext(&canvas)); 578 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
579 EXPECT_EQ(1u, label.lines_.size()); 579 EXPECT_EQ(1u, label.lines_.size());
580 580
581 // Changing layout just resets |lines_|. It'll recover next time it's drawn. 581 // Changing layout just resets |lines_|. It'll recover next time it's drawn.
582 label.SetBounds(0, 0, 10, 10); 582 label.SetBounds(0, 0, 10, 10);
583 EXPECT_EQ(0u, label.lines_.size()); 583 EXPECT_EQ(0u, label.lines_.size());
584 584
585 label.Paint(ui::PaintContext(&canvas)); 585 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
586 EXPECT_EQ(1u, label.lines_.size()); 586 EXPECT_EQ(1u, label.lines_.size());
587 } 587 }
588 588
589 #if !defined(OS_MACOSX) 589 #if !defined(OS_MACOSX)
590 TEST_F(LabelTest, MultilineSupportedRenderText) { 590 TEST_F(LabelTest, MultilineSupportedRenderText) {
591 scoped_ptr<gfx::RenderText> render_text(gfx::RenderText::CreateInstance()); 591 scoped_ptr<gfx::RenderText> render_text(gfx::RenderText::CreateInstance());
592 ASSERT_TRUE(render_text->MultilineSupported()); 592 ASSERT_TRUE(render_text->MultilineSupported());
593 593
594 Label label; 594 Label label;
595 label.SetText(ASCIIToUTF16("Example of\nmultilined label")); 595 label.SetText(ASCIIToUTF16("Example of\nmultilined label"));
596 label.SetMultiLine(true); 596 label.SetMultiLine(true);
597 label.SizeToPreferredSize(); 597 label.SizeToPreferredSize();
598 598
599 gfx::Canvas canvas(label.GetPreferredSize(), 1.0f, true); 599 gfx::Canvas canvas(label.GetPreferredSize(), 1.0f, true);
600 label.Paint(ui::PaintContext(&canvas)); 600 label.Paint(ui::CanvasPainter(&canvas, 1.f).context());
601 601
602 // There's only one 'line', RenderText itself supports multiple lines. 602 // There's only one 'line', RenderText itself supports multiple lines.
603 EXPECT_EQ(1u, label.lines_.size()); 603 EXPECT_EQ(1u, label.lines_.size());
604 } 604 }
605 #endif 605 #endif
606 606
607 TEST_F(LabelFocusTest, FocusBounds) { 607 TEST_F(LabelFocusTest, FocusBounds) {
608 label()->SetText(ASCIIToUTF16("Example")); 608 label()->SetText(ASCIIToUTF16("Example"));
609 gfx::Size normal_size = label()->GetPreferredSize(); 609 gfx::Size normal_size = label()->GetPreferredSize();
610 610
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 label()->SetFocusable(true); 648 label()->SetFocusable(true);
649 label()->RequestFocus(); 649 label()->RequestFocus();
650 label()->SizeToPreferredSize(); 650 label()->SizeToPreferredSize();
651 651
652 gfx::Rect focus_bounds = label()->GetFocusBounds(); 652 gfx::Rect focus_bounds = label()->GetFocusBounds();
653 EXPECT_FALSE(focus_bounds.IsEmpty()); 653 EXPECT_FALSE(focus_bounds.IsEmpty());
654 EXPECT_LT(label()->font_list().GetHeight(), focus_bounds.height()); 654 EXPECT_LT(label()->font_list().GetHeight(), focus_bounds.height());
655 } 655 }
656 656
657 } // namespace views 657 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | ui/views/controls/textfield/textfield.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698