| 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/shell_window_ids.h" | 5 #include "ash/public/cpp/shell_window_ids.h" |
| 6 #include "ash/shell.h" | 6 #include "ash/shell.h" |
| 7 #include "ash/shell_port.h" |
| 7 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
| 8 #include "ash/test/test_activation_delegate.h" | 9 #include "ash/test/test_activation_delegate.h" |
| 9 #include "ash/wm/window_util.h" | 10 #include "ash/wm/window_util.h" |
| 10 #include "ash/wm_shell.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" |
| 18 #include "ui/base/hit_test.h" | 18 #include "ui/base/hit_test.h" |
| 19 #include "ui/display/screen.h" | 19 #include "ui/display/screen.h" |
| 20 #include "ui/events/event.h" | 20 #include "ui/events/event.h" |
| (...skipping 441 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 (WmShell::Get()->IsRunningInMash()) | 472 if (ShellPort::Get()->IsRunningInMash()) |
| 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 (WmShell::Get()->IsRunningInMash()) | 711 if (ShellPort::Get()->IsRunningInMash()) |
| 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 (WmShell::Get()->IsRunningInMash()) | 734 if (ShellPort::Get()->IsRunningInMash()) |
| 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 (WmShell::Get()->IsRunningInMash()) | 758 if (ShellPort::Get()->IsRunningInMash()) |
| 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 (WmShell::Get()->IsRunningInMash()) | 783 if (ShellPort::Get()->IsRunningInMash()) |
| 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 |