OLD | NEW |
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 "ash/public/cpp/config.h" |
5 #include "ash/public/cpp/shell_window_ids.h" | 6 #include "ash/public/cpp/shell_window_ids.h" |
6 #include "ash/shell.h" | 7 #include "ash/shell.h" |
7 #include "ash/shell_port.h" | |
8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
9 #include "ash/test/test_activation_delegate.h" | 9 #include "ash/test/test_activation_delegate.h" |
10 #include "ash/wm/window_util.h" | 10 #include "ash/wm/window_util.h" |
11 #include "ui/aura/client/cursor_client_observer.h" | 11 #include "ui/aura/client/cursor_client_observer.h" |
12 #include "ui/aura/client/focus_client.h" | 12 #include "ui/aura/client/focus_client.h" |
13 #include "ui/aura/env.h" | 13 #include "ui/aura/env.h" |
14 #include "ui/aura/test/aura_test_base.h" | 14 #include "ui/aura/test/aura_test_base.h" |
15 #include "ui/aura/test/test_window_delegate.h" | 15 #include "ui/aura/test/test_window_delegate.h" |
16 #include "ui/aura/test/test_windows.h" | 16 #include "ui/aura/test/test_windows.h" |
17 #include "ui/base/cursor/cursor.h" | 17 #include "ui/base/cursor/cursor.h" |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 EXPECT_EQ(0, d2.activated_count()); | 462 EXPECT_EQ(0, d2.activated_count()); |
463 EXPECT_EQ(1, d2.lost_active_count()); | 463 EXPECT_EQ(1, d2.lost_active_count()); |
464 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); | 464 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); |
465 EXPECT_EQ(w1.get(), focus_client->GetFocusedWindow()); | 465 EXPECT_EQ(w1.get(), focus_client->GetFocusedWindow()); |
466 EXPECT_EQ(1, d1.activated_count()); | 466 EXPECT_EQ(1, d1.activated_count()); |
467 EXPECT_EQ(0, d1.lost_active_count()); | 467 EXPECT_EQ(0, d1.lost_active_count()); |
468 } | 468 } |
469 | 469 |
470 TEST_F(WindowManagerTest, MouseEventCursors) { | 470 TEST_F(WindowManagerTest, MouseEventCursors) { |
471 // TODO: investigate failure in mash. http://crbug.com/698895. | 471 // TODO: investigate failure in mash. http://crbug.com/698895. |
472 if (ShellPort::Get()->IsRunningInMash()) | 472 if (Shell::GetAshConfig() == Config::MASH) |
473 return; | 473 return; |
474 | 474 |
475 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 475 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
476 | 476 |
477 // Create a window. | 477 // Create a window. |
478 const int kWindowLeft = 123; | 478 const int kWindowLeft = 123; |
479 const int kWindowTop = 45; | 479 const int kWindowTop = 45; |
480 HitTestWindowDelegate window_delegate; | 480 HitTestWindowDelegate window_delegate; |
481 std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( | 481 std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( |
482 &window_delegate, -1, gfx::Rect(kWindowLeft, kWindowTop, 640, 480))); | 482 &window_delegate, -1, gfx::Rect(kWindowLeft, kWindowTop, 640, 480))); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
701 EXPECT_EQ(0, f1->num_mouse_events()); | 701 EXPECT_EQ(0, f1->num_mouse_events()); |
702 EXPECT_EQ(1, f2->num_key_events()); | 702 EXPECT_EQ(1, f2->num_key_events()); |
703 EXPECT_EQ(1, f2->num_mouse_events()); | 703 EXPECT_EQ(1, f2->num_mouse_events()); |
704 | 704 |
705 env_filter->RemoveHandler(f2.get()); | 705 env_filter->RemoveHandler(f2.get()); |
706 } | 706 } |
707 | 707 |
708 // Touch visually hides the cursor. | 708 // Touch visually hides the cursor. |
709 TEST_F(WindowManagerTest, UpdateCursorVisibility) { | 709 TEST_F(WindowManagerTest, UpdateCursorVisibility) { |
710 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. | 710 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. |
711 if (ShellPort::Get()->IsRunningInMash()) | 711 if (Shell::GetAshConfig() == Config::MASH) |
712 return; | 712 return; |
713 | 713 |
714 ui::test::EventGenerator& generator = GetEventGenerator(); | 714 ui::test::EventGenerator& generator = GetEventGenerator(); |
715 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); | 715 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); |
716 | 716 |
717 generator.MoveMouseTo(gfx::Point(0, 0)); | 717 generator.MoveMouseTo(gfx::Point(0, 0)); |
718 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 718 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
719 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 719 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
720 generator.PressTouch(); | 720 generator.PressTouch(); |
721 EXPECT_FALSE(cursor_manager->IsCursorVisible()); | 721 EXPECT_FALSE(cursor_manager->IsCursorVisible()); |
722 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled()); | 722 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled()); |
723 generator.MoveMouseTo(gfx::Point(0, 0)); | 723 generator.MoveMouseTo(gfx::Point(0, 0)); |
724 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 724 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
725 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 725 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
726 generator.ReleaseTouch(); | 726 generator.ReleaseTouch(); |
727 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 727 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
728 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 728 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
729 } | 729 } |
730 | 730 |
731 // Cursor is hidden on keypress. | 731 // Cursor is hidden on keypress. |
732 TEST_F(WindowManagerTest, UpdateCursorVisibilityOnKeyEvent) { | 732 TEST_F(WindowManagerTest, UpdateCursorVisibilityOnKeyEvent) { |
733 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. | 733 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. |
734 if (ShellPort::Get()->IsRunningInMash()) | 734 if (Shell::GetAshConfig() == Config::MASH) |
735 return; | 735 return; |
736 | 736 |
737 ui::test::EventGenerator& generator = GetEventGenerator(); | 737 ui::test::EventGenerator& generator = GetEventGenerator(); |
738 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); | 738 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); |
739 | 739 |
740 // Pressing a key hides the cursor but does not disable mouse events. | 740 // Pressing a key hides the cursor but does not disable mouse events. |
741 generator.PressKey(ui::VKEY_A, ui::EF_NONE); | 741 generator.PressKey(ui::VKEY_A, ui::EF_NONE); |
742 EXPECT_FALSE(cursor_manager->IsCursorVisible()); | 742 EXPECT_FALSE(cursor_manager->IsCursorVisible()); |
743 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 743 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
744 // Moving mouse shows the cursor. | 744 // Moving mouse shows the cursor. |
745 generator.MoveMouseTo(gfx::Point(0, 0)); | 745 generator.MoveMouseTo(gfx::Point(0, 0)); |
746 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 746 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
747 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 747 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
748 // Releasing a key does does not hide the cursor and does not disable mouse | 748 // Releasing a key does does not hide the cursor and does not disable mouse |
749 // events. | 749 // events. |
750 generator.ReleaseKey(ui::VKEY_A, ui::EF_NONE); | 750 generator.ReleaseKey(ui::VKEY_A, ui::EF_NONE); |
751 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 751 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
752 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); | 752 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled()); |
753 } | 753 } |
754 | 754 |
755 // Test that pressing an accelerator does not hide the cursor. | 755 // Test that pressing an accelerator does not hide the cursor. |
756 TEST_F(WindowManagerTest, UpdateCursorVisibilityAccelerator) { | 756 TEST_F(WindowManagerTest, UpdateCursorVisibilityAccelerator) { |
757 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. | 757 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. |
758 if (ShellPort::Get()->IsRunningInMash()) | 758 if (Shell::GetAshConfig() == Config::MASH) |
759 return; | 759 return; |
760 | 760 |
761 ui::test::EventGenerator& generator = GetEventGenerator(); | 761 ui::test::EventGenerator& generator = GetEventGenerator(); |
762 ::wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); | 762 ::wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); |
763 | 763 |
764 ASSERT_TRUE(cursor_manager->IsCursorVisible()); | 764 ASSERT_TRUE(cursor_manager->IsCursorVisible()); |
765 | 765 |
766 // Press Ctrl+A, release A first. | 766 // Press Ctrl+A, release A first. |
767 generator.PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN); | 767 generator.PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN); |
768 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); | 768 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
769 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); | 769 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
770 generator.ReleaseKey(ui::VKEY_CONTROL, ui::EF_NONE); | 770 generator.ReleaseKey(ui::VKEY_CONTROL, ui::EF_NONE); |
771 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 771 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
772 | 772 |
773 // Press Ctrl+A, release Ctrl first. | 773 // Press Ctrl+A, release Ctrl first. |
774 generator.PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN); | 774 generator.PressKey(ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN); |
775 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); | 775 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
776 generator.ReleaseKey(ui::VKEY_CONTROL, ui::EF_NONE); | 776 generator.ReleaseKey(ui::VKEY_CONTROL, ui::EF_NONE); |
777 generator.ReleaseKey(ui::VKEY_A, ui::EF_NONE); | 777 generator.ReleaseKey(ui::VKEY_A, ui::EF_NONE); |
778 EXPECT_TRUE(cursor_manager->IsCursorVisible()); | 778 EXPECT_TRUE(cursor_manager->IsCursorVisible()); |
779 } | 779 } |
780 | 780 |
781 TEST_F(WindowManagerTest, TestCursorClientObserver) { | 781 TEST_F(WindowManagerTest, TestCursorClientObserver) { |
782 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. | 782 // TODO: mash doesn't support CursorManager. http://crbug.com/631103. |
783 if (ShellPort::Get()->IsRunningInMash()) | 783 if (Shell::GetAshConfig() == Config::MASH) |
784 return; | 784 return; |
785 | 785 |
786 ui::test::EventGenerator& generator = GetEventGenerator(); | 786 ui::test::EventGenerator& generator = GetEventGenerator(); |
787 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); | 787 ::wm::CursorManager* cursor_manager = ash::Shell::Get()->cursor_manager(); |
788 | 788 |
789 std::unique_ptr<aura::Window> w1( | 789 std::unique_ptr<aura::Window> w1( |
790 CreateTestWindowInShell(SK_ColorWHITE, -1, gfx::Rect(0, 0, 100, 100))); | 790 CreateTestWindowInShell(SK_ColorWHITE, -1, gfx::Rect(0, 0, 100, 100))); |
791 wm::ActivateWindow(w1.get()); | 791 wm::ActivateWindow(w1.get()); |
792 | 792 |
793 // Add two observers. Both should have OnCursorVisibilityChanged() | 793 // Add two observers. Both should have OnCursorVisibilityChanged() |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 observer_b.reset(); | 853 observer_b.reset(); |
854 generator.MoveMouseTo(50, 50); | 854 generator.MoveMouseTo(50, 50); |
855 EXPECT_TRUE(observer_a.did_visibility_change()); | 855 EXPECT_TRUE(observer_a.did_visibility_change()); |
856 EXPECT_FALSE(observer_b.did_visibility_change()); | 856 EXPECT_FALSE(observer_b.did_visibility_change()); |
857 EXPECT_TRUE(observer_a.is_cursor_visible()); | 857 EXPECT_TRUE(observer_a.is_cursor_visible()); |
858 | 858 |
859 cursor_manager->RemoveObserver(&observer_a); | 859 cursor_manager->RemoveObserver(&observer_a); |
860 } | 860 } |
861 | 861 |
862 } // namespace ash | 862 } // namespace ash |
OLD | NEW |