| 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/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "ui/aura/client/cursor_client.h" | 8 #include "ui/aura/client/cursor_client.h" |
| 9 #include "ui/aura/client/screen_position_client.h" | 9 #include "ui/aura/client/screen_position_client.h" |
| 10 #include "ui/aura/env.h" | 10 #include "ui/aura/env.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 return static_cast<TooltipController*>( | 68 return static_cast<TooltipController*>( |
| 69 aura::client::GetTooltipClient( | 69 aura::client::GetTooltipClient( |
| 70 widget->GetNativeWindow()->GetRootWindow())); | 70 widget->GetNativeWindow()->GetRootWindow())); |
| 71 } | 71 } |
| 72 | 72 |
| 73 } // namespace | 73 } // namespace |
| 74 | 74 |
| 75 class TooltipControllerTest : public aura::test::AuraTestBase { | 75 class TooltipControllerTest : public aura::test::AuraTestBase { |
| 76 public: | 76 public: |
| 77 TooltipControllerTest() : view_(NULL) {} | 77 TooltipControllerTest() : view_(NULL) {} |
| 78 virtual ~TooltipControllerTest() {} | 78 ~TooltipControllerTest() override {} |
| 79 | 79 |
| 80 virtual void SetUp() override { | 80 void SetUp() override { |
| 81 #if defined(OS_CHROMEOS) | 81 #if defined(OS_CHROMEOS) |
| 82 views_delegate_.reset(new TestViewsDelegate); | 82 views_delegate_.reset(new TestViewsDelegate); |
| 83 #else | 83 #else |
| 84 views_delegate_.reset(new DesktopTestViewsDelegate); | 84 views_delegate_.reset(new DesktopTestViewsDelegate); |
| 85 #endif | 85 #endif |
| 86 | 86 |
| 87 aura::test::AuraTestBase::SetUp(); | 87 aura::test::AuraTestBase::SetUp(); |
| 88 new wm::DefaultActivationClient(root_window()); | 88 new wm::DefaultActivationClient(root_window()); |
| 89 #if defined(OS_CHROMEOS) | 89 #if defined(OS_CHROMEOS) |
| 90 controller_.reset(new TooltipController( | 90 controller_.reset(new TooltipController( |
| 91 scoped_ptr<views::corewm::Tooltip>( | 91 scoped_ptr<views::corewm::Tooltip>( |
| 92 new views::corewm::TooltipAura(gfx::SCREEN_TYPE_ALTERNATE)))); | 92 new views::corewm::TooltipAura(gfx::SCREEN_TYPE_ALTERNATE)))); |
| 93 root_window()->AddPreTargetHandler(controller_.get()); | 93 root_window()->AddPreTargetHandler(controller_.get()); |
| 94 SetTooltipClient(root_window(), controller_.get()); | 94 SetTooltipClient(root_window(), controller_.get()); |
| 95 #endif | 95 #endif |
| 96 widget_.reset(CreateWidget(root_window())); | 96 widget_.reset(CreateWidget(root_window())); |
| 97 widget_->SetContentsView(new View); | 97 widget_->SetContentsView(new View); |
| 98 view_ = new TooltipTestView; | 98 view_ = new TooltipTestView; |
| 99 widget_->GetContentsView()->AddChildView(view_); | 99 widget_->GetContentsView()->AddChildView(view_); |
| 100 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); | 100 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); |
| 101 helper_.reset(new TooltipControllerTestHelper( | 101 helper_.reset(new TooltipControllerTestHelper( |
| 102 GetController(widget_.get()))); | 102 GetController(widget_.get()))); |
| 103 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); | 103 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); |
| 104 } | 104 } |
| 105 | 105 |
| 106 virtual void TearDown() override { | 106 void TearDown() override { |
| 107 #if defined(OS_CHROMEOS) | 107 #if defined(OS_CHROMEOS) |
| 108 root_window()->RemovePreTargetHandler(controller_.get()); | 108 root_window()->RemovePreTargetHandler(controller_.get()); |
| 109 aura::client::SetTooltipClient(root_window(), NULL); | 109 aura::client::SetTooltipClient(root_window(), NULL); |
| 110 controller_.reset(); | 110 controller_.reset(); |
| 111 #endif | 111 #endif |
| 112 generator_.reset(); | 112 generator_.reset(); |
| 113 helper_.reset(); | 113 helper_.reset(); |
| 114 widget_.reset(); | 114 widget_.reset(); |
| 115 aura::test::AuraTestBase::TearDown(); | 115 aura::test::AuraTestBase::TearDown(); |
| 116 views_delegate_.reset(); | 116 views_delegate_.reset(); |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 std::find(window->parent()->children().begin(), | 407 std::find(window->parent()->children().begin(), |
| 408 window->parent()->children().end(), | 408 window->parent()->children().end(), |
| 409 window); | 409 window); |
| 410 return i == window->parent()->children().end() ? -1 : | 410 return i == window->parent()->children().end() ? -1 : |
| 411 static_cast<int>(i - window->parent()->children().begin()); | 411 static_cast<int>(i - window->parent()->children().begin()); |
| 412 } | 412 } |
| 413 | 413 |
| 414 class TestScreenPositionClient : public aura::client::ScreenPositionClient { | 414 class TestScreenPositionClient : public aura::client::ScreenPositionClient { |
| 415 public: | 415 public: |
| 416 TestScreenPositionClient() {} | 416 TestScreenPositionClient() {} |
| 417 virtual ~TestScreenPositionClient() {} | 417 ~TestScreenPositionClient() override {} |
| 418 | 418 |
| 419 // ScreenPositionClient overrides: | 419 // ScreenPositionClient overrides: |
| 420 virtual void ConvertPointToScreen(const aura::Window* window, | 420 void ConvertPointToScreen(const aura::Window* window, |
| 421 gfx::Point* point) override { | 421 gfx::Point* point) override {} |
| 422 } | 422 void ConvertPointFromScreen(const aura::Window* window, |
| 423 virtual void ConvertPointFromScreen(const aura::Window* window, | 423 gfx::Point* point) override {} |
| 424 gfx::Point* point) override { | 424 void ConvertHostPointToScreen(aura::Window* root_gwindow, |
| 425 } | 425 gfx::Point* point) override { |
| 426 virtual void ConvertHostPointToScreen(aura::Window* root_gwindow, | |
| 427 gfx::Point* point) override { | |
| 428 NOTREACHED(); | 426 NOTREACHED(); |
| 429 } | 427 } |
| 430 virtual void SetBounds(aura::Window* window, | 428 void SetBounds(aura::Window* window, |
| 431 const gfx::Rect& bounds, | 429 const gfx::Rect& bounds, |
| 432 const gfx::Display& display) override { | 430 const gfx::Display& display) override { |
| 433 window->SetBounds(bounds); | 431 window->SetBounds(bounds); |
| 434 } | 432 } |
| 435 | 433 |
| 436 private: | 434 private: |
| 437 DISALLOW_COPY_AND_ASSIGN(TestScreenPositionClient); | 435 DISALLOW_COPY_AND_ASSIGN(TestScreenPositionClient); |
| 438 }; | 436 }; |
| 439 | 437 |
| 440 } // namespace | 438 } // namespace |
| 441 | 439 |
| 442 class TooltipControllerCaptureTest : public TooltipControllerTest { | 440 class TooltipControllerCaptureTest : public TooltipControllerTest { |
| 443 public: | 441 public: |
| 444 TooltipControllerCaptureTest() {} | 442 TooltipControllerCaptureTest() {} |
| 445 virtual ~TooltipControllerCaptureTest() {} | 443 ~TooltipControllerCaptureTest() override {} |
| 446 | 444 |
| 447 virtual void SetUp() override { | 445 void SetUp() override { |
| 448 TooltipControllerTest::SetUp(); | 446 TooltipControllerTest::SetUp(); |
| 449 aura::client::SetScreenPositionClient(GetRootWindow(), | 447 aura::client::SetScreenPositionClient(GetRootWindow(), |
| 450 &screen_position_client_); | 448 &screen_position_client_); |
| 451 #if !defined(OS_CHROMEOS) | 449 #if !defined(OS_CHROMEOS) |
| 452 desktop_screen_.reset(CreateDesktopScreen()); | 450 desktop_screen_.reset(CreateDesktopScreen()); |
| 453 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, | 451 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, |
| 454 desktop_screen_.get()); | 452 desktop_screen_.get()); |
| 455 #endif | 453 #endif |
| 456 } | 454 } |
| 457 | 455 |
| 458 virtual void TearDown() override { | 456 void TearDown() override { |
| 459 #if !defined(OS_CHROMEOS) | 457 #if !defined(OS_CHROMEOS) |
| 460 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, test_screen()); | 458 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, test_screen()); |
| 461 desktop_screen_.reset(); | 459 desktop_screen_.reset(); |
| 462 #endif | 460 #endif |
| 463 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); | 461 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); |
| 464 TooltipControllerTest::TearDown(); | 462 TooltipControllerTest::TearDown(); |
| 465 } | 463 } |
| 466 | 464 |
| 467 private: | 465 private: |
| 468 TestScreenPositionClient screen_position_client_; | 466 TestScreenPositionClient screen_position_client_; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 EXPECT_EQ(tooltip_text2, helper_->GetTooltipText()); | 543 EXPECT_EQ(tooltip_text2, helper_->GetTooltipText()); |
| 546 | 544 |
| 547 widget2.reset(); | 545 widget2.reset(); |
| 548 } | 546 } |
| 549 | 547 |
| 550 namespace { | 548 namespace { |
| 551 | 549 |
| 552 class TestTooltip : public Tooltip { | 550 class TestTooltip : public Tooltip { |
| 553 public: | 551 public: |
| 554 TestTooltip() : is_visible_(false) {} | 552 TestTooltip() : is_visible_(false) {} |
| 555 virtual ~TestTooltip() {} | 553 ~TestTooltip() override {} |
| 556 | 554 |
| 557 const base::string16& tooltip_text() const { return tooltip_text_; } | 555 const base::string16& tooltip_text() const { return tooltip_text_; } |
| 558 | 556 |
| 559 // Tooltip: | 557 // Tooltip: |
| 560 virtual void SetText(aura::Window* window, | 558 void SetText(aura::Window* window, |
| 561 const base::string16& tooltip_text, | 559 const base::string16& tooltip_text, |
| 562 const gfx::Point& location) override { | 560 const gfx::Point& location) override { |
| 563 tooltip_text_ = tooltip_text; | 561 tooltip_text_ = tooltip_text; |
| 564 location_ = location; | 562 location_ = location; |
| 565 } | 563 } |
| 566 virtual void Show() override { | 564 void Show() override { is_visible_ = true; } |
| 567 is_visible_ = true; | 565 void Hide() override { is_visible_ = false; } |
| 568 } | 566 bool IsVisible() override { return is_visible_; } |
| 569 virtual void Hide() override { | |
| 570 is_visible_ = false; | |
| 571 } | |
| 572 virtual bool IsVisible() override { | |
| 573 return is_visible_; | |
| 574 } | |
| 575 const gfx::Point& location() { return location_; } | 567 const gfx::Point& location() { return location_; } |
| 576 | 568 |
| 577 private: | 569 private: |
| 578 bool is_visible_; | 570 bool is_visible_; |
| 579 base::string16 tooltip_text_; | 571 base::string16 tooltip_text_; |
| 580 gfx::Point location_; | 572 gfx::Point location_; |
| 581 | 573 |
| 582 DISALLOW_COPY_AND_ASSIGN(TestTooltip); | 574 DISALLOW_COPY_AND_ASSIGN(TestTooltip); |
| 583 }; | 575 }; |
| 584 | 576 |
| 585 } // namespace | 577 } // namespace |
| 586 | 578 |
| 587 // Use for tests that don't depend upon views. | 579 // Use for tests that don't depend upon views. |
| 588 class TooltipControllerTest2 : public aura::test::AuraTestBase { | 580 class TooltipControllerTest2 : public aura::test::AuraTestBase { |
| 589 public: | 581 public: |
| 590 TooltipControllerTest2() : test_tooltip_(new TestTooltip) {} | 582 TooltipControllerTest2() : test_tooltip_(new TestTooltip) {} |
| 591 virtual ~TooltipControllerTest2() {} | 583 ~TooltipControllerTest2() override {} |
| 592 | 584 |
| 593 virtual void SetUp() override { | 585 void SetUp() override { |
| 594 wm_state_.reset(new wm::WMState); | 586 wm_state_.reset(new wm::WMState); |
| 595 aura::test::AuraTestBase::SetUp(); | 587 aura::test::AuraTestBase::SetUp(); |
| 596 new wm::DefaultActivationClient(root_window()); | 588 new wm::DefaultActivationClient(root_window()); |
| 597 controller_.reset(new TooltipController( | 589 controller_.reset(new TooltipController( |
| 598 scoped_ptr<corewm::Tooltip>(test_tooltip_))); | 590 scoped_ptr<corewm::Tooltip>(test_tooltip_))); |
| 599 root_window()->AddPreTargetHandler(controller_.get()); | 591 root_window()->AddPreTargetHandler(controller_.get()); |
| 600 SetTooltipClient(root_window(), controller_.get()); | 592 SetTooltipClient(root_window(), controller_.get()); |
| 601 helper_.reset(new TooltipControllerTestHelper(controller_.get())); | 593 helper_.reset(new TooltipControllerTestHelper(controller_.get())); |
| 602 generator_.reset(new ui::test::EventGenerator(root_window())); | 594 generator_.reset(new ui::test::EventGenerator(root_window())); |
| 603 } | 595 } |
| 604 | 596 |
| 605 virtual void TearDown() override { | 597 void TearDown() override { |
| 606 root_window()->RemovePreTargetHandler(controller_.get()); | 598 root_window()->RemovePreTargetHandler(controller_.get()); |
| 607 aura::client::SetTooltipClient(root_window(), NULL); | 599 aura::client::SetTooltipClient(root_window(), NULL); |
| 608 controller_.reset(); | 600 controller_.reset(); |
| 609 generator_.reset(); | 601 generator_.reset(); |
| 610 helper_.reset(); | 602 helper_.reset(); |
| 611 aura::test::AuraTestBase::TearDown(); | 603 aura::test::AuraTestBase::TearDown(); |
| 612 wm_state_.reset(); | 604 wm_state_.reset(); |
| 613 } | 605 } |
| 614 | 606 |
| 615 protected: | 607 protected: |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 ui::CancelModeEvent event; | 648 ui::CancelModeEvent event; |
| 657 helper_->controller()->OnCancelMode(&event); | 649 helper_->controller()->OnCancelMode(&event); |
| 658 EXPECT_FALSE(helper_->IsTooltipVisible()); | 650 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 659 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); | 651 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); |
| 660 } | 652 } |
| 661 | 653 |
| 662 // Use for tests that need both views and a TestTooltip. | 654 // Use for tests that need both views and a TestTooltip. |
| 663 class TooltipControllerTest3 : public aura::test::AuraTestBase { | 655 class TooltipControllerTest3 : public aura::test::AuraTestBase { |
| 664 public: | 656 public: |
| 665 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {} | 657 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {} |
| 666 virtual ~TooltipControllerTest3() {} | 658 ~TooltipControllerTest3() override {} |
| 667 | 659 |
| 668 virtual void SetUp() override { | 660 void SetUp() override { |
| 669 wm_state_.reset(new wm::WMState); | 661 wm_state_.reset(new wm::WMState); |
| 670 aura::test::AuraTestBase::SetUp(); | 662 aura::test::AuraTestBase::SetUp(); |
| 671 new wm::DefaultActivationClient(root_window()); | 663 new wm::DefaultActivationClient(root_window()); |
| 672 | 664 |
| 673 widget_.reset(CreateWidget(root_window())); | 665 widget_.reset(CreateWidget(root_window())); |
| 674 widget_->SetContentsView(new View); | 666 widget_->SetContentsView(new View); |
| 675 view_ = new TooltipTestView; | 667 view_ = new TooltipTestView; |
| 676 widget_->GetContentsView()->AddChildView(view_); | 668 widget_->GetContentsView()->AddChildView(view_); |
| 677 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); | 669 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); |
| 678 | 670 |
| 679 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); | 671 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); |
| 680 controller_.reset(new TooltipController( | 672 controller_.reset(new TooltipController( |
| 681 scoped_ptr<views::corewm::Tooltip>(test_tooltip_))); | 673 scoped_ptr<views::corewm::Tooltip>(test_tooltip_))); |
| 682 GetRootWindow()->RemovePreTargetHandler( | 674 GetRootWindow()->RemovePreTargetHandler( |
| 683 static_cast<TooltipController*>(aura::client::GetTooltipClient( | 675 static_cast<TooltipController*>(aura::client::GetTooltipClient( |
| 684 widget_->GetNativeWindow()->GetRootWindow()))); | 676 widget_->GetNativeWindow()->GetRootWindow()))); |
| 685 GetRootWindow()->AddPreTargetHandler(controller_.get()); | 677 GetRootWindow()->AddPreTargetHandler(controller_.get()); |
| 686 helper_.reset(new TooltipControllerTestHelper(controller_.get())); | 678 helper_.reset(new TooltipControllerTestHelper(controller_.get())); |
| 687 SetTooltipClient(GetRootWindow(), controller_.get()); | 679 SetTooltipClient(GetRootWindow(), controller_.get()); |
| 688 } | 680 } |
| 689 | 681 |
| 690 virtual void TearDown() override { | 682 void TearDown() override { |
| 691 GetRootWindow()->RemovePreTargetHandler(controller_.get()); | 683 GetRootWindow()->RemovePreTargetHandler(controller_.get()); |
| 692 aura::client::SetTooltipClient(GetRootWindow(), NULL); | 684 aura::client::SetTooltipClient(GetRootWindow(), NULL); |
| 693 | 685 |
| 694 controller_.reset(); | 686 controller_.reset(); |
| 695 generator_.reset(); | 687 generator_.reset(); |
| 696 helper_.reset(); | 688 helper_.reset(); |
| 697 widget_.reset(); | 689 widget_.reset(); |
| 698 aura::test::AuraTestBase::TearDown(); | 690 aura::test::AuraTestBase::TearDown(); |
| 699 wm_state_.reset(); | 691 wm_state_.reset(); |
| 700 } | 692 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 helper_->FireTooltipTimer(); | 815 helper_->FireTooltipTimer(); |
| 824 tooltip_bounds1 = test_tooltip_->location(); | 816 tooltip_bounds1 = test_tooltip_->location(); |
| 825 | 817 |
| 826 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); | 818 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); |
| 827 EXPECT_EQ(reference_string, helper_->GetTooltipText()); | 819 EXPECT_EQ(reference_string, helper_->GetTooltipText()); |
| 828 } | 820 } |
| 829 | 821 |
| 830 } // namespace test | 822 } // namespace test |
| 831 } // namespace corewm | 823 } // namespace corewm |
| 832 } // namespace views | 824 } // namespace views |
| OLD | NEW |