| OLD | NEW |
| 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" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 void SetUp() override { | 82 void SetUp() override { |
| 83 #if defined(OS_CHROMEOS) | 83 #if defined(OS_CHROMEOS) |
| 84 views_delegate_.reset(new TestViewsDelegate); | 84 views_delegate_.reset(new TestViewsDelegate); |
| 85 #else | 85 #else |
| 86 views_delegate_.reset(new DesktopTestViewsDelegate); | 86 views_delegate_.reset(new DesktopTestViewsDelegate); |
| 87 #endif | 87 #endif |
| 88 | 88 |
| 89 aura::test::AuraTestBase::SetUp(); | 89 aura::test::AuraTestBase::SetUp(); |
| 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(new TooltipController( | 92 controller_.reset( |
| 93 scoped_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()))); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 128 } | 128 } |
| 129 | 129 |
| 130 TooltipTestView* PrepareSecondView() { | 130 TooltipTestView* PrepareSecondView() { |
| 131 TooltipTestView* view2 = new TooltipTestView; | 131 TooltipTestView* view2 = new TooltipTestView; |
| 132 widget_->GetContentsView()->AddChildView(view2); | 132 widget_->GetContentsView()->AddChildView(view2); |
| 133 view_->SetBounds(0, 0, 100, 100); | 133 view_->SetBounds(0, 0, 100, 100); |
| 134 view2->SetBounds(100, 0, 100, 100); | 134 view2->SetBounds(100, 0, 100, 100); |
| 135 return view2; | 135 return view2; |
| 136 } | 136 } |
| 137 | 137 |
| 138 scoped_ptr<views::Widget> widget_; | 138 std::unique_ptr<views::Widget> widget_; |
| 139 TooltipTestView* view_; | 139 TooltipTestView* view_; |
| 140 scoped_ptr<TooltipControllerTestHelper> helper_; | 140 std::unique_ptr<TooltipControllerTestHelper> helper_; |
| 141 scoped_ptr<ui::test::EventGenerator> generator_; | 141 std::unique_ptr<ui::test::EventGenerator> generator_; |
| 142 | 142 |
| 143 private: | 143 private: |
| 144 scoped_ptr<TooltipController> controller_; | 144 std::unique_ptr<TooltipController> controller_; |
| 145 | 145 |
| 146 scoped_ptr<views::TestViewsDelegate> views_delegate_; | 146 std::unique_ptr<views::TestViewsDelegate> views_delegate_; |
| 147 | 147 |
| 148 #if defined(OS_WIN) | 148 #if defined(OS_WIN) |
| 149 ui::ScopedOleInitializer ole_initializer_; | 149 ui::ScopedOleInitializer ole_initializer_; |
| 150 #endif | 150 #endif |
| 151 | 151 |
| 152 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest); | 152 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest); |
| 153 }; | 153 }; |
| 154 | 154 |
| 155 TEST_F(TooltipControllerTest, ViewTooltip) { | 155 TEST_F(TooltipControllerTest, ViewTooltip) { |
| 156 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 156 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 #if !defined(OS_CHROMEOS) | 434 #if !defined(OS_CHROMEOS) |
| 435 gfx::Screen::SetScreenInstance(test_screen()); | 435 gfx::Screen::SetScreenInstance(test_screen()); |
| 436 desktop_screen_.reset(); | 436 desktop_screen_.reset(); |
| 437 #endif | 437 #endif |
| 438 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); | 438 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); |
| 439 TooltipControllerTest::TearDown(); | 439 TooltipControllerTest::TearDown(); |
| 440 } | 440 } |
| 441 | 441 |
| 442 private: | 442 private: |
| 443 wm::DefaultScreenPositionClient screen_position_client_; | 443 wm::DefaultScreenPositionClient screen_position_client_; |
| 444 scoped_ptr<gfx::Screen> desktop_screen_; | 444 std::unique_ptr<gfx::Screen> desktop_screen_; |
| 445 | 445 |
| 446 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest); | 446 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest); |
| 447 }; | 447 }; |
| 448 | 448 |
| 449 // Verifies when capture is released the TooltipController resets state. | 449 // Verifies when capture is released the TooltipController resets state. |
| 450 // Flaky on all builders. http://crbug.com/388268 | 450 // Flaky on all builders. http://crbug.com/388268 |
| 451 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) { | 451 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) { |
| 452 view_->GetWidget()->SetCapture(view_); | 452 view_->GetWidget()->SetCapture(view_); |
| 453 RunAllPendingInMessageLoop(); | 453 RunAllPendingInMessageLoop(); |
| 454 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 454 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 475 #define MAYBE_Capture Capture | 475 #define MAYBE_Capture Capture |
| 476 #endif | 476 #endif |
| 477 // Verifies the correct window is found for tooltips when there is a capture. | 477 // Verifies the correct window is found for tooltips when there is a capture. |
| 478 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) { | 478 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) { |
| 479 const base::string16 tooltip_text(ASCIIToUTF16("1")); | 479 const base::string16 tooltip_text(ASCIIToUTF16("1")); |
| 480 const base::string16 tooltip_text2(ASCIIToUTF16("2")); | 480 const base::string16 tooltip_text2(ASCIIToUTF16("2")); |
| 481 | 481 |
| 482 widget_->SetBounds(gfx::Rect(0, 0, 200, 200)); | 482 widget_->SetBounds(gfx::Rect(0, 0, 200, 200)); |
| 483 view_->set_tooltip_text(tooltip_text); | 483 view_->set_tooltip_text(tooltip_text); |
| 484 | 484 |
| 485 scoped_ptr<views::Widget> widget2(CreateWidget(root_window())); | 485 std::unique_ptr<views::Widget> widget2(CreateWidget(root_window())); |
| 486 widget2->SetContentsView(new View); | 486 widget2->SetContentsView(new View); |
| 487 TooltipTestView* view2 = new TooltipTestView; | 487 TooltipTestView* view2 = new TooltipTestView; |
| 488 widget2->GetContentsView()->AddChildView(view2); | 488 widget2->GetContentsView()->AddChildView(view2); |
| 489 view2->set_tooltip_text(tooltip_text2); | 489 view2->set_tooltip_text(tooltip_text2); |
| 490 widget2->SetBounds(gfx::Rect(0, 0, 200, 200)); | 490 widget2->SetBounds(gfx::Rect(0, 0, 200, 200)); |
| 491 view2->SetBoundsRect(widget2->GetContentsView()->GetLocalBounds()); | 491 view2->SetBoundsRect(widget2->GetContentsView()->GetLocalBounds()); |
| 492 | 492 |
| 493 widget_->SetCapture(view_); | 493 widget_->SetCapture(view_); |
| 494 EXPECT_TRUE(widget_->HasCapture()); | 494 EXPECT_TRUE(widget_->HasCapture()); |
| 495 widget2->Show(); | 495 widget2->Show(); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 // Use for tests that don't depend upon views. | 559 // Use for tests that don't depend upon views. |
| 560 class TooltipControllerTest2 : public aura::test::AuraTestBase { | 560 class TooltipControllerTest2 : public aura::test::AuraTestBase { |
| 561 public: | 561 public: |
| 562 TooltipControllerTest2() : test_tooltip_(new TestTooltip) {} | 562 TooltipControllerTest2() : test_tooltip_(new TestTooltip) {} |
| 563 ~TooltipControllerTest2() override {} | 563 ~TooltipControllerTest2() override {} |
| 564 | 564 |
| 565 void SetUp() override { | 565 void SetUp() override { |
| 566 wm_state_.reset(new wm::WMState); | 566 wm_state_.reset(new wm::WMState); |
| 567 aura::test::AuraTestBase::SetUp(); | 567 aura::test::AuraTestBase::SetUp(); |
| 568 new wm::DefaultActivationClient(root_window()); | 568 new wm::DefaultActivationClient(root_window()); |
| 569 controller_.reset(new TooltipController( | 569 controller_.reset( |
| 570 scoped_ptr<corewm::Tooltip>(test_tooltip_))); | 570 new TooltipController(std::unique_ptr<corewm::Tooltip>(test_tooltip_))); |
| 571 root_window()->AddPreTargetHandler(controller_.get()); | 571 root_window()->AddPreTargetHandler(controller_.get()); |
| 572 SetTooltipClient(root_window(), controller_.get()); | 572 SetTooltipClient(root_window(), controller_.get()); |
| 573 helper_.reset(new TooltipControllerTestHelper(controller_.get())); | 573 helper_.reset(new TooltipControllerTestHelper(controller_.get())); |
| 574 generator_.reset(new ui::test::EventGenerator(root_window())); | 574 generator_.reset(new ui::test::EventGenerator(root_window())); |
| 575 } | 575 } |
| 576 | 576 |
| 577 void TearDown() override { | 577 void TearDown() override { |
| 578 root_window()->RemovePreTargetHandler(controller_.get()); | 578 root_window()->RemovePreTargetHandler(controller_.get()); |
| 579 aura::client::SetTooltipClient(root_window(), NULL); | 579 aura::client::SetTooltipClient(root_window(), NULL); |
| 580 controller_.reset(); | 580 controller_.reset(); |
| 581 generator_.reset(); | 581 generator_.reset(); |
| 582 helper_.reset(); | 582 helper_.reset(); |
| 583 aura::test::AuraTestBase::TearDown(); | 583 aura::test::AuraTestBase::TearDown(); |
| 584 wm_state_.reset(); | 584 wm_state_.reset(); |
| 585 } | 585 } |
| 586 | 586 |
| 587 protected: | 587 protected: |
| 588 // Owned by |controller_|. | 588 // Owned by |controller_|. |
| 589 TestTooltip* test_tooltip_; | 589 TestTooltip* test_tooltip_; |
| 590 scoped_ptr<TooltipControllerTestHelper> helper_; | 590 std::unique_ptr<TooltipControllerTestHelper> helper_; |
| 591 scoped_ptr<ui::test::EventGenerator> generator_; | 591 std::unique_ptr<ui::test::EventGenerator> generator_; |
| 592 | 592 |
| 593 private: | 593 private: |
| 594 scoped_ptr<TooltipController> controller_; | 594 std::unique_ptr<TooltipController> controller_; |
| 595 scoped_ptr<wm::WMState> wm_state_; | 595 std::unique_ptr<wm::WMState> wm_state_; |
| 596 | 596 |
| 597 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest2); | 597 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest2); |
| 598 }; | 598 }; |
| 599 | 599 |
| 600 TEST_F(TooltipControllerTest2, VerifyLeadingTrailingWhitespaceStripped) { | 600 TEST_F(TooltipControllerTest2, VerifyLeadingTrailingWhitespaceStripped) { |
| 601 aura::test::TestWindowDelegate test_delegate; | 601 aura::test::TestWindowDelegate test_delegate; |
| 602 scoped_ptr<aura::Window> window( | 602 std::unique_ptr<aura::Window> window( |
| 603 CreateNormalWindow(100, root_window(), &test_delegate)); | 603 CreateNormalWindow(100, root_window(), &test_delegate)); |
| 604 window->SetBounds(gfx::Rect(0, 0, 300, 300)); | 604 window->SetBounds(gfx::Rect(0, 0, 300, 300)); |
| 605 base::string16 tooltip_text(ASCIIToUTF16(" \nx ")); | 605 base::string16 tooltip_text(ASCIIToUTF16(" \nx ")); |
| 606 aura::client::SetTooltipText(window.get(), &tooltip_text); | 606 aura::client::SetTooltipText(window.get(), &tooltip_text); |
| 607 generator_->MoveMouseToCenterOf(window.get()); | 607 generator_->MoveMouseToCenterOf(window.get()); |
| 608 helper_->FireTooltipTimer(); | 608 helper_->FireTooltipTimer(); |
| 609 EXPECT_EQ(ASCIIToUTF16("x"), test_tooltip_->tooltip_text()); | 609 EXPECT_EQ(ASCIIToUTF16("x"), test_tooltip_->tooltip_text()); |
| 610 } | 610 } |
| 611 | 611 |
| 612 // Verifies that tooltip is hidden and tooltip window closed upon cancel mode. | 612 // Verifies that tooltip is hidden and tooltip window closed upon cancel mode. |
| 613 TEST_F(TooltipControllerTest2, CloseOnCancelMode) { | 613 TEST_F(TooltipControllerTest2, CloseOnCancelMode) { |
| 614 aura::test::TestWindowDelegate test_delegate; | 614 aura::test::TestWindowDelegate test_delegate; |
| 615 scoped_ptr<aura::Window> window( | 615 std::unique_ptr<aura::Window> window( |
| 616 CreateNormalWindow(100, root_window(), &test_delegate)); | 616 CreateNormalWindow(100, root_window(), &test_delegate)); |
| 617 window->SetBounds(gfx::Rect(0, 0, 300, 300)); | 617 window->SetBounds(gfx::Rect(0, 0, 300, 300)); |
| 618 base::string16 tooltip_text(ASCIIToUTF16("Tooltip Text")); | 618 base::string16 tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 619 aura::client::SetTooltipText(window.get(), &tooltip_text); | 619 aura::client::SetTooltipText(window.get(), &tooltip_text); |
| 620 generator_->MoveMouseToCenterOf(window.get()); | 620 generator_->MoveMouseToCenterOf(window.get()); |
| 621 | 621 |
| 622 // Fire tooltip timer so tooltip becomes visible. | 622 // Fire tooltip timer so tooltip becomes visible. |
| 623 helper_->FireTooltipTimer(); | 623 helper_->FireTooltipTimer(); |
| 624 EXPECT_TRUE(helper_->IsTooltipVisible()); | 624 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 625 | 625 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 643 new wm::DefaultActivationClient(root_window()); | 643 new wm::DefaultActivationClient(root_window()); |
| 644 | 644 |
| 645 widget_.reset(CreateWidget(root_window())); | 645 widget_.reset(CreateWidget(root_window())); |
| 646 widget_->SetContentsView(new View); | 646 widget_->SetContentsView(new View); |
| 647 view_ = new TooltipTestView; | 647 view_ = new TooltipTestView; |
| 648 widget_->GetContentsView()->AddChildView(view_); | 648 widget_->GetContentsView()->AddChildView(view_); |
| 649 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); | 649 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); |
| 650 | 650 |
| 651 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); | 651 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); |
| 652 controller_.reset(new TooltipController( | 652 controller_.reset(new TooltipController( |
| 653 scoped_ptr<views::corewm::Tooltip>(test_tooltip_))); | 653 std::unique_ptr<views::corewm::Tooltip>(test_tooltip_))); |
| 654 GetRootWindow()->RemovePreTargetHandler( | 654 GetRootWindow()->RemovePreTargetHandler( |
| 655 static_cast<TooltipController*>(aura::client::GetTooltipClient( | 655 static_cast<TooltipController*>(aura::client::GetTooltipClient( |
| 656 widget_->GetNativeWindow()->GetRootWindow()))); | 656 widget_->GetNativeWindow()->GetRootWindow()))); |
| 657 GetRootWindow()->AddPreTargetHandler(controller_.get()); | 657 GetRootWindow()->AddPreTargetHandler(controller_.get()); |
| 658 helper_.reset(new TooltipControllerTestHelper(controller_.get())); | 658 helper_.reset(new TooltipControllerTestHelper(controller_.get())); |
| 659 SetTooltipClient(GetRootWindow(), controller_.get()); | 659 SetTooltipClient(GetRootWindow(), controller_.get()); |
| 660 } | 660 } |
| 661 | 661 |
| 662 void TearDown() override { | 662 void TearDown() override { |
| 663 GetRootWindow()->RemovePreTargetHandler(controller_.get()); | 663 GetRootWindow()->RemovePreTargetHandler(controller_.get()); |
| 664 aura::client::SetTooltipClient(GetRootWindow(), NULL); | 664 aura::client::SetTooltipClient(GetRootWindow(), NULL); |
| 665 | 665 |
| 666 controller_.reset(); | 666 controller_.reset(); |
| 667 generator_.reset(); | 667 generator_.reset(); |
| 668 helper_.reset(); | 668 helper_.reset(); |
| 669 widget_.reset(); | 669 widget_.reset(); |
| 670 aura::test::AuraTestBase::TearDown(); | 670 aura::test::AuraTestBase::TearDown(); |
| 671 wm_state_.reset(); | 671 wm_state_.reset(); |
| 672 } | 672 } |
| 673 | 673 |
| 674 aura::Window* GetWindow() { return widget_->GetNativeWindow(); } | 674 aura::Window* GetWindow() { return widget_->GetNativeWindow(); } |
| 675 | 675 |
| 676 protected: | 676 protected: |
| 677 // Owned by |controller_|. | 677 // Owned by |controller_|. |
| 678 TestTooltip* test_tooltip_; | 678 TestTooltip* test_tooltip_; |
| 679 scoped_ptr<TooltipControllerTestHelper> helper_; | 679 std::unique_ptr<TooltipControllerTestHelper> helper_; |
| 680 scoped_ptr<ui::test::EventGenerator> generator_; | 680 std::unique_ptr<ui::test::EventGenerator> generator_; |
| 681 scoped_ptr<views::Widget> widget_; | 681 std::unique_ptr<views::Widget> widget_; |
| 682 TooltipTestView* view_; | 682 TooltipTestView* view_; |
| 683 | 683 |
| 684 private: | 684 private: |
| 685 scoped_ptr<TooltipController> controller_; | 685 std::unique_ptr<TooltipController> controller_; |
| 686 scoped_ptr<wm::WMState> wm_state_; | 686 std::unique_ptr<wm::WMState> wm_state_; |
| 687 | 687 |
| 688 #if defined(OS_WIN) | 688 #if defined(OS_WIN) |
| 689 ui::ScopedOleInitializer ole_initializer_; | 689 ui::ScopedOleInitializer ole_initializer_; |
| 690 #endif | 690 #endif |
| 691 | 691 |
| 692 aura::Window* GetRootWindow() { return GetWindow()->GetRootWindow(); } | 692 aura::Window* GetRootWindow() { return GetWindow()->GetRootWindow(); } |
| 693 | 693 |
| 694 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest3); | 694 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest3); |
| 695 }; | 695 }; |
| 696 | 696 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 helper_->FireTooltipTimer(); | 795 helper_->FireTooltipTimer(); |
| 796 tooltip_bounds1 = test_tooltip_->location(); | 796 tooltip_bounds1 = test_tooltip_->location(); |
| 797 | 797 |
| 798 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); | 798 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); |
| 799 EXPECT_EQ(reference_string, helper_->GetTooltipText()); | 799 EXPECT_EQ(reference_string, helper_->GetTooltipText()); |
| 800 } | 800 } |
| 801 | 801 |
| 802 } // namespace test | 802 } // namespace test |
| 803 } // namespace corewm | 803 } // namespace corewm |
| 804 } // namespace views | 804 } // namespace views |
| OLD | NEW |