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

Side by Side Diff: ui/views/corewm/tooltip_controller_unittest.cc

Issue 2379073003: mus: Use TooltipManagerAura in NativeWidgetMus. (Closed)
Patch Set: Of course there's a second, different test suite in the same file. Why would I ever have thought ot… Created 4 years, 2 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/corewm/DEPS ('k') | ui/views/mus/native_widget_mus.h » ('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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/corewm/tooltip_controller.h" 5 #include "ui/views/corewm/tooltip_controller.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "ui/aura/client/cursor_client.h" 10 #include "ui/aura/client/cursor_client.h"
11 #include "ui/aura/client/screen_position_client.h" 11 #include "ui/aura/client/screen_position_client.h"
12 #include "ui/aura/env.h" 12 #include "ui/aura/env.h"
13 #include "ui/aura/test/aura_test_base.h" 13 #include "ui/aura/test/aura_test_base.h"
14 #include "ui/aura/test/test_screen.h" 14 #include "ui/aura/test/test_screen.h"
15 #include "ui/aura/test/test_window_delegate.h" 15 #include "ui/aura/test/test_window_delegate.h"
16 #include "ui/aura/window.h" 16 #include "ui/aura/window.h"
17 #include "ui/aura/window_event_dispatcher.h" 17 #include "ui/aura/window_event_dispatcher.h"
18 #include "ui/display/screen.h" 18 #include "ui/display/screen.h"
19 #include "ui/events/test/event_generator.h" 19 #include "ui/events/test/event_generator.h"
20 #include "ui/gfx/font.h" 20 #include "ui/gfx/font.h"
21 #include "ui/gfx/geometry/point.h" 21 #include "ui/gfx/geometry/point.h"
22 #include "ui/gfx/text_elider.h" 22 #include "ui/gfx/text_elider.h"
23 #include "ui/views/corewm/tooltip_aura.h" 23 #include "ui/views/corewm/tooltip_aura.h"
24 #include "ui/views/corewm/tooltip_controller_test_helper.h" 24 #include "ui/views/corewm/tooltip_controller_test_helper.h"
25 #include "ui/views/test/desktop_test_views_delegate.h" 25 #include "ui/views/test/desktop_test_views_delegate.h"
26 #include "ui/views/test/native_widget_factory.h"
26 #include "ui/views/test/test_views_delegate.h" 27 #include "ui/views/test/test_views_delegate.h"
28 #include "ui/views/test/views_test_base.h"
27 #include "ui/views/view.h" 29 #include "ui/views/view.h"
28 #include "ui/views/widget/tooltip_manager.h" 30 #include "ui/views/widget/tooltip_manager.h"
29 #include "ui/views/widget/widget.h" 31 #include "ui/views/widget/widget.h"
30 #include "ui/wm/core/default_activation_client.h" 32 #include "ui/wm/core/default_activation_client.h"
31 #include "ui/wm/core/default_screen_position_client.h" 33 #include "ui/wm/core/default_screen_position_client.h"
32 #include "ui/wm/core/wm_state.h" 34 #include "ui/wm/core/wm_state.h"
33 #include "ui/wm/public/tooltip_client.h" 35 #include "ui/wm/public/tooltip_client.h"
34 #include "ui/wm/public/window_types.h" 36 #include "ui/wm/public/window_types.h"
35 37
36 #if defined(OS_WIN) 38 #if defined(OS_WIN)
(...skipping 14 matching lines...) Expand all
51 53
52 views::Widget* CreateWidget(aura::Window* root) { 54 views::Widget* CreateWidget(aura::Window* root) {
53 views::Widget* widget = new views::Widget; 55 views::Widget* widget = new views::Widget;
54 views::Widget::InitParams params; 56 views::Widget::InitParams params;
55 params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS; 57 params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
56 params.accept_events = true; 58 params.accept_events = true;
57 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 59 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
58 #if defined(OS_CHROMEOS) 60 #if defined(OS_CHROMEOS)
59 params.parent = root; 61 params.parent = root;
60 #else 62 #else
61 params.native_widget = new DesktopNativeWidgetAura(widget); 63 params.native_widget = ::views::test::CreatePlatformDesktopNativeWidgetImpl(
64 params, widget, nullptr);
62 #endif 65 #endif
63 params.bounds = gfx::Rect(0, 0, 200, 100); 66 params.bounds = gfx::Rect(0, 0, 200, 100);
64 widget->Init(params); 67 widget->Init(params);
65 widget->Show(); 68 widget->Show();
66 return widget; 69 return widget;
67 } 70 }
68 71
69 TooltipController* GetController(Widget* widget) { 72 TooltipController* GetController(Widget* widget) {
70 return static_cast<TooltipController*>( 73 return static_cast<TooltipController*>(
71 aura::client::GetTooltipClient( 74 aura::client::GetTooltipClient(
72 widget->GetNativeWindow()->GetRootWindow())); 75 widget->GetNativeWindow()->GetRootWindow()));
73 } 76 }
74 77
75 } // namespace 78 } // namespace
76 79
77 class TooltipControllerTest : public aura::test::AuraTestBase { 80 class TooltipControllerTest : public ViewsTestBase {
78 public: 81 public:
79 TooltipControllerTest() : view_(NULL) {} 82 TooltipControllerTest() : view_(NULL) {}
80 ~TooltipControllerTest() override {} 83 ~TooltipControllerTest() override {}
81 84
82 void SetUp() override { 85 void SetUp() override {
83 #if defined(OS_CHROMEOS) 86 ViewsTestBase::SetUp();
84 views_delegate_.reset(new TestViewsDelegate);
85 #else
86 views_delegate_.reset(new DesktopTestViewsDelegate);
87 #endif
88 87
89 aura::test::AuraTestBase::SetUp(); 88 aura::Window* root_window = GetContext();
90 new wm::DefaultActivationClient(root_window()); 89
90 new wm::DefaultActivationClient(root_window);
91 #if defined(OS_CHROMEOS) 91 #if defined(OS_CHROMEOS)
92 controller_.reset( 92 controller_.reset(
93 new TooltipController(std::unique_ptr<views::corewm::Tooltip>( 93 new TooltipController(std::unique_ptr<views::corewm::Tooltip>(
94 new views::corewm::TooltipAura))); 94 new views::corewm::TooltipAura)));
95 root_window()->AddPreTargetHandler(controller_.get()); 95 root_window->AddPreTargetHandler(controller_.get());
96 SetTooltipClient(root_window(), controller_.get()); 96 SetTooltipClient(root_window, controller_.get());
97 #endif 97 #endif
98 widget_.reset(CreateWidget(root_window())); 98 widget_.reset(CreateWidget(root_window));
99 widget_->SetContentsView(new View); 99 widget_->SetContentsView(new View);
100 view_ = new TooltipTestView; 100 view_ = new TooltipTestView;
101 widget_->GetContentsView()->AddChildView(view_); 101 widget_->GetContentsView()->AddChildView(view_);
102 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); 102 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds());
103 helper_.reset(new TooltipControllerTestHelper( 103 helper_.reset(new TooltipControllerTestHelper(
104 GetController(widget_.get()))); 104 GetController(widget_.get())));
105 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); 105 generator_.reset(new ui::test::EventGenerator(GetRootWindow()));
106 } 106 }
107 107
108 void TearDown() override { 108 void TearDown() override {
109 #if defined(OS_CHROMEOS) 109 #if defined(OS_CHROMEOS)
110 root_window()->RemovePreTargetHandler(controller_.get()); 110 aura::Window* root_window = GetContext();
111 aura::client::SetTooltipClient(root_window(), NULL); 111 root_window->RemovePreTargetHandler(controller_.get());
112 aura::client::SetTooltipClient(root_window, NULL);
112 controller_.reset(); 113 controller_.reset();
113 #endif 114 #endif
114 generator_.reset(); 115 generator_.reset();
115 helper_.reset(); 116 helper_.reset();
116 widget_.reset(); 117 widget_.reset();
117 aura::test::AuraTestBase::TearDown(); 118 ViewsTestBase::TearDown();
118 views_delegate_.reset();
119 } 119 }
120 120
121 protected: 121 protected:
122 aura::Window* GetWindow() { 122 aura::Window* GetWindow() {
123 return widget_->GetNativeWindow(); 123 return widget_->GetNativeWindow();
124 } 124 }
125 125
126 aura::Window* GetRootWindow() { 126 aura::Window* GetRootWindow() {
127 return GetWindow()->GetRootWindow(); 127 return GetWindow()->GetRootWindow();
128 } 128 }
129 129
130 aura::Window* CreateNormalWindow(int id,
131 aura::Window* parent,
132 aura::WindowDelegate* delegate) {
133 aura::Window* window = new aura::Window(
134 delegate
135 ? delegate
136 : aura::test::TestWindowDelegate::CreateSelfDestroyingDelegate());
137 window->set_id(id);
138 window->Init(ui::LAYER_TEXTURED);
139 parent->AddChild(window);
140 window->SetBounds(gfx::Rect(0, 0, 100, 100));
141 window->Show();
142 return window;
143 }
144
130 TooltipTestView* PrepareSecondView() { 145 TooltipTestView* PrepareSecondView() {
131 TooltipTestView* view2 = new TooltipTestView; 146 TooltipTestView* view2 = new TooltipTestView;
132 widget_->GetContentsView()->AddChildView(view2); 147 widget_->GetContentsView()->AddChildView(view2);
133 view_->SetBounds(0, 0, 100, 100); 148 view_->SetBounds(0, 0, 100, 100);
134 view2->SetBounds(100, 0, 100, 100); 149 view2->SetBounds(100, 0, 100, 100);
135 return view2; 150 return view2;
136 } 151 }
137 152
138 std::unique_ptr<views::Widget> widget_; 153 std::unique_ptr<views::Widget> widget_;
139 TooltipTestView* view_; 154 TooltipTestView* view_;
140 std::unique_ptr<TooltipControllerTestHelper> helper_; 155 std::unique_ptr<TooltipControllerTestHelper> helper_;
141 std::unique_ptr<ui::test::EventGenerator> generator_; 156 std::unique_ptr<ui::test::EventGenerator> generator_;
142 157
143 private: 158 private:
144 std::unique_ptr<TooltipController> controller_; 159 std::unique_ptr<TooltipController> controller_;
145 160
146 std::unique_ptr<views::TestViewsDelegate> views_delegate_;
147
148 #if defined(OS_WIN) 161 #if defined(OS_WIN)
149 ui::ScopedOleInitializer ole_initializer_; 162 ui::ScopedOleInitializer ole_initializer_;
150 #endif 163 #endif
151 164
152 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest); 165 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest);
153 }; 166 };
154 167
155 TEST_F(TooltipControllerTest, ViewTooltip) { 168 TEST_F(TooltipControllerTest, ViewTooltip) {
156 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 169 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
157 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 170 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 430
418 class TooltipControllerCaptureTest : public TooltipControllerTest { 431 class TooltipControllerCaptureTest : public TooltipControllerTest {
419 public: 432 public:
420 TooltipControllerCaptureTest() {} 433 TooltipControllerCaptureTest() {}
421 ~TooltipControllerCaptureTest() override {} 434 ~TooltipControllerCaptureTest() override {}
422 435
423 void SetUp() override { 436 void SetUp() override {
424 TooltipControllerTest::SetUp(); 437 TooltipControllerTest::SetUp();
425 aura::client::SetScreenPositionClient(GetRootWindow(), 438 aura::client::SetScreenPositionClient(GetRootWindow(),
426 &screen_position_client_); 439 &screen_position_client_);
427 #if !defined(OS_CHROMEOS)
428 desktop_screen_.reset(CreateDesktopScreen());
429 display::Screen::SetScreenInstance(desktop_screen_.get());
430 #endif
431 } 440 }
432 441
433 void TearDown() override { 442 void TearDown() override {
434 #if !defined(OS_CHROMEOS)
435 display::Screen::SetScreenInstance(test_screen());
436 desktop_screen_.reset();
437 #endif
438 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); 443 aura::client::SetScreenPositionClient(GetRootWindow(), NULL);
439 TooltipControllerTest::TearDown(); 444 TooltipControllerTest::TearDown();
440 } 445 }
441 446
442 private: 447 private:
443 wm::DefaultScreenPositionClient screen_position_client_; 448 wm::DefaultScreenPositionClient screen_position_client_;
444 std::unique_ptr<display::Screen> desktop_screen_; 449 std::unique_ptr<display::Screen> desktop_screen_;
445 450
446 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest); 451 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest);
447 }; 452 };
448 453
449 // Verifies when capture is released the TooltipController resets state. 454 // Verifies when capture is released the TooltipController resets state.
450 // Flaky on all builders. http://crbug.com/388268 455 // Flaky on all builders. http://crbug.com/388268
451 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) { 456 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) {
452 view_->GetWidget()->SetCapture(view_); 457 view_->GetWidget()->SetCapture(view_);
453 RunAllPendingInMessageLoop(); 458 RunPendingMessages();
454 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 459 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
455 generator_->MoveMouseToCenterOf(GetWindow()); 460 generator_->MoveMouseToCenterOf(GetWindow());
456 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); 461 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
457 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); 462 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow()));
458 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 463 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
459 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); 464 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
460 465
461 // Fire tooltip timer so tooltip becomes visible. 466 // Fire tooltip timer so tooltip becomes visible.
462 helper_->FireTooltipTimer(); 467 helper_->FireTooltipTimer();
463 468
(...skipping 12 matching lines...) Expand all
476 #define MAYBE_Capture Capture 481 #define MAYBE_Capture Capture
477 #endif 482 #endif
478 // Verifies the correct window is found for tooltips when there is a capture. 483 // Verifies the correct window is found for tooltips when there is a capture.
479 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) { 484 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) {
480 const base::string16 tooltip_text(ASCIIToUTF16("1")); 485 const base::string16 tooltip_text(ASCIIToUTF16("1"));
481 const base::string16 tooltip_text2(ASCIIToUTF16("2")); 486 const base::string16 tooltip_text2(ASCIIToUTF16("2"));
482 487
483 widget_->SetBounds(gfx::Rect(0, 0, 200, 200)); 488 widget_->SetBounds(gfx::Rect(0, 0, 200, 200));
484 view_->set_tooltip_text(tooltip_text); 489 view_->set_tooltip_text(tooltip_text);
485 490
486 std::unique_ptr<views::Widget> widget2(CreateWidget(root_window())); 491 std::unique_ptr<views::Widget> widget2(CreateWidget(GetContext()));
487 widget2->SetContentsView(new View); 492 widget2->SetContentsView(new View);
488 TooltipTestView* view2 = new TooltipTestView; 493 TooltipTestView* view2 = new TooltipTestView;
489 widget2->GetContentsView()->AddChildView(view2); 494 widget2->GetContentsView()->AddChildView(view2);
490 view2->set_tooltip_text(tooltip_text2); 495 view2->set_tooltip_text(tooltip_text2);
491 widget2->SetBounds(gfx::Rect(0, 0, 200, 200)); 496 widget2->SetBounds(gfx::Rect(0, 0, 200, 200));
492 view2->SetBoundsRect(widget2->GetContentsView()->GetLocalBounds()); 497 view2->SetBoundsRect(widget2->GetContentsView()->GetLocalBounds());
493 498
494 widget_->SetCapture(view_); 499 widget_->SetCapture(view_);
495 EXPECT_TRUE(widget_->HasCapture()); 500 EXPECT_TRUE(widget_->HasCapture());
496 widget2->Show(); 501 widget2->Show();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 631
627 // Send OnCancelMode event and verify that tooltip becomes invisible and 632 // Send OnCancelMode event and verify that tooltip becomes invisible and
628 // the tooltip window is closed. 633 // the tooltip window is closed.
629 ui::CancelModeEvent event; 634 ui::CancelModeEvent event;
630 helper_->controller()->OnCancelMode(&event); 635 helper_->controller()->OnCancelMode(&event);
631 EXPECT_FALSE(helper_->IsTooltipVisible()); 636 EXPECT_FALSE(helper_->IsTooltipVisible());
632 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); 637 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL);
633 } 638 }
634 639
635 // Use for tests that need both views and a TestTooltip. 640 // Use for tests that need both views and a TestTooltip.
636 class TooltipControllerTest3 : public aura::test::AuraTestBase { 641 class TooltipControllerTest3 : public ViewsTestBase {
637 public: 642 public:
638 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {} 643 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {}
639 ~TooltipControllerTest3() override {} 644 ~TooltipControllerTest3() override {}
640 645
641 void SetUp() override { 646 void SetUp() override {
642 wm_state_.reset(new wm::WMState); 647 wm_state_.reset(new wm::WMState);
643 aura::test::AuraTestBase::SetUp(); 648 ViewsTestBase::SetUp();
644 new wm::DefaultActivationClient(root_window());
645 649
646 widget_.reset(CreateWidget(root_window())); 650 aura::Window* root_window = GetContext();
651 new wm::DefaultActivationClient(root_window);
652
653 widget_.reset(CreateWidget(root_window));
647 widget_->SetContentsView(new View); 654 widget_->SetContentsView(new View);
648 view_ = new TooltipTestView; 655 view_ = new TooltipTestView;
649 widget_->GetContentsView()->AddChildView(view_); 656 widget_->GetContentsView()->AddChildView(view_);
650 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); 657 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds());
651 658
652 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); 659 generator_.reset(new ui::test::EventGenerator(GetRootWindow()));
653 controller_.reset(new TooltipController( 660 controller_.reset(new TooltipController(
654 std::unique_ptr<views::corewm::Tooltip>(test_tooltip_))); 661 std::unique_ptr<views::corewm::Tooltip>(test_tooltip_)));
655 GetRootWindow()->RemovePreTargetHandler( 662 GetRootWindow()->RemovePreTargetHandler(
656 static_cast<TooltipController*>(aura::client::GetTooltipClient( 663 static_cast<TooltipController*>(aura::client::GetTooltipClient(
657 widget_->GetNativeWindow()->GetRootWindow()))); 664 widget_->GetNativeWindow()->GetRootWindow())));
658 GetRootWindow()->AddPreTargetHandler(controller_.get()); 665 GetRootWindow()->AddPreTargetHandler(controller_.get());
659 helper_.reset(new TooltipControllerTestHelper(controller_.get())); 666 helper_.reset(new TooltipControllerTestHelper(controller_.get()));
660 SetTooltipClient(GetRootWindow(), controller_.get()); 667 SetTooltipClient(GetRootWindow(), controller_.get());
661 } 668 }
662 669
663 void TearDown() override { 670 void TearDown() override {
664 GetRootWindow()->RemovePreTargetHandler(controller_.get()); 671 GetRootWindow()->RemovePreTargetHandler(controller_.get());
665 aura::client::SetTooltipClient(GetRootWindow(), NULL); 672 aura::client::SetTooltipClient(GetRootWindow(), NULL);
666 673
667 controller_.reset(); 674 controller_.reset();
668 generator_.reset(); 675 generator_.reset();
669 helper_.reset(); 676 helper_.reset();
670 widget_.reset(); 677 widget_.reset();
671 aura::test::AuraTestBase::TearDown(); 678 ViewsTestBase::TearDown();
672 wm_state_.reset(); 679 wm_state_.reset();
673 } 680 }
674 681
675 aura::Window* GetWindow() { return widget_->GetNativeWindow(); } 682 aura::Window* GetWindow() { return widget_->GetNativeWindow(); }
676 683
677 protected: 684 protected:
678 // Owned by |controller_|. 685 // Owned by |controller_|.
679 TestTooltip* test_tooltip_; 686 TestTooltip* test_tooltip_;
680 std::unique_ptr<TooltipControllerTestHelper> helper_; 687 std::unique_ptr<TooltipControllerTestHelper> helper_;
681 std::unique_ptr<ui::test::EventGenerator> generator_; 688 std::unique_ptr<ui::test::EventGenerator> generator_;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 helper_->FireTooltipTimer(); 803 helper_->FireTooltipTimer();
797 tooltip_bounds1 = test_tooltip_->location(); 804 tooltip_bounds1 = test_tooltip_->location();
798 805
799 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); 806 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1);
800 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 807 EXPECT_EQ(reference_string, helper_->GetTooltipText());
801 } 808 }
802 809
803 } // namespace test 810 } // namespace test
804 } // namespace corewm 811 } // namespace corewm
805 } // namespace views 812 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/corewm/DEPS ('k') | ui/views/mus/native_widget_mus.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698