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

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

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