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/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
6 | 6 |
7 #include "ash/session_state_delegate.h" | 7 #include "ash/session_state_delegate.h" |
8 #include "ash/shelf/shelf_layout_manager.h" | 8 #include "ash/shelf/shelf_layout_manager.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "ui/aura/env.h" | 21 #include "ui/aura/env.h" |
22 #include "ui/aura/test/event_generator.h" | 22 #include "ui/aura/test/event_generator.h" |
23 #include "ui/aura/test/test_window_delegate.h" | 23 #include "ui/aura/test/test_window_delegate.h" |
24 #include "ui/aura/test/test_windows.h" | 24 #include "ui/aura/test/test_windows.h" |
25 #include "ui/aura/window.h" | 25 #include "ui/aura/window.h" |
26 #include "ui/aura/window_event_dispatcher.h" | 26 #include "ui/aura/window_event_dispatcher.h" |
27 #include "ui/aura/window_tracker.h" | 27 #include "ui/aura/window_tracker.h" |
28 #include "ui/events/test/test_event_handler.h" | 28 #include "ui/events/test/test_event_handler.h" |
29 #include "ui/keyboard/keyboard_controller_proxy.h" | 29 #include "ui/keyboard/keyboard_controller_proxy.h" |
30 #include "ui/keyboard/keyboard_switches.h" | 30 #include "ui/keyboard/keyboard_switches.h" |
| 31 #include "ui/keyboard/keyboard_util.h" |
31 #include "ui/views/controls/menu/menu_controller.h" | 32 #include "ui/views/controls/menu/menu_controller.h" |
32 #include "ui/views/widget/widget.h" | 33 #include "ui/views/widget/widget.h" |
33 #include "ui/views/widget/widget_delegate.h" | 34 #include "ui/views/widget/widget_delegate.h" |
34 | 35 |
35 using aura::Window; | 36 using aura::Window; |
36 using views::Widget; | 37 using views::Widget; |
37 | 38 |
38 namespace ash { | 39 namespace ash { |
39 namespace { | 40 namespace { |
40 | 41 |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
695 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { | 696 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { |
696 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 697 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
697 aura::Window* keyboard_container = | 698 aura::Window* keyboard_container = |
698 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); | 699 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
699 keyboard_container->Show(); | 700 keyboard_container->Show(); |
700 keyboard::KeyboardController* controller = | 701 keyboard::KeyboardController* controller = |
701 keyboard::KeyboardController::GetInstance(); | 702 keyboard::KeyboardController::GetInstance(); |
702 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); | 703 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); |
703 keyboard_container->AddChild(keyboard_window); | 704 keyboard_container->AddChild(keyboard_window); |
704 keyboard_window->set_owned_by_parent(false); | 705 keyboard_window->set_owned_by_parent(false); |
| 706 keyboard_window->SetBounds(keyboard::KeyboardBoundsFromWindowBounds( |
| 707 keyboard_container->bounds(), 100)); |
705 keyboard_window->Show(); | 708 keyboard_window->Show(); |
706 | 709 |
707 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 710 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
708 | 711 |
709 // Notify keyboard bounds changing. | 712 // Notify keyboard bounds changing. |
710 controller->NotifyKeyboardBoundsChanging( | 713 controller->NotifyKeyboardBoundsChanging( |
711 controller->proxy()->GetKeyboardWindow()->bounds()); | 714 controller->proxy()->GetKeyboardWindow()->bounds()); |
712 | 715 |
713 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 716 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
714 EXPECT_LT(after, before); | 717 EXPECT_LT(after, before); |
715 | 718 |
716 // Mock a login user profile change to reinitialize the keyboard. | 719 // Mock a login user profile change to reinitialize the keyboard. |
717 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); | 720 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); |
718 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); | 721 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); |
719 } | 722 } |
720 | 723 |
721 // Ensure that system modal dialogs do not block events targeted at the virtual | 724 // Ensure that system modal dialogs do not block events targeted at the virtual |
722 // keyboard. | 725 // keyboard. |
723 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { | 726 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { |
724 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 727 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
725 aura::Window* keyboard_container = | 728 aura::Window* keyboard_container = |
726 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); | 729 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
727 ASSERT_TRUE(keyboard_container); | 730 ASSERT_TRUE(keyboard_container); |
728 keyboard_container->Show(); | 731 keyboard_container->Show(); |
729 | 732 |
730 aura::Window* keyboard_window = keyboard::KeyboardController::GetInstance()-> | 733 aura::Window* keyboard_window = keyboard::KeyboardController::GetInstance()-> |
731 proxy()->GetKeyboardWindow(); | 734 proxy()->GetKeyboardWindow(); |
732 keyboard_container->AddChild(keyboard_window); | 735 keyboard_container->AddChild(keyboard_window); |
733 keyboard_window->set_owned_by_parent(false); | 736 keyboard_window->set_owned_by_parent(false); |
734 keyboard_window->SetBounds(gfx::Rect()); | 737 keyboard_window->SetBounds(keyboard::KeyboardBoundsFromWindowBounds( |
735 keyboard_window->Show(); | 738 keyboard_container->bounds(), 100)); |
736 | |
737 ui::test::TestEventHandler* handler = new ui::test::TestEventHandler; | 739 ui::test::TestEventHandler* handler = new ui::test::TestEventHandler; |
738 root_window->SetEventFilter(handler); | 740 root_window->SetEventFilter(handler); |
739 aura::test::EventGenerator root_window_event_generator(root_window); | 741 aura::test::EventGenerator root_window_event_generator(root_window); |
740 aura::test::EventGenerator keyboard_event_generator(root_window, | 742 aura::test::EventGenerator keyboard_event_generator(root_window, |
741 keyboard_window); | 743 keyboard_window); |
742 | 744 |
743 views::Widget* modal_widget = | 745 views::Widget* modal_widget = |
744 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 746 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
745 | 747 |
746 // Verify that mouse events to the root window are block with a visble modal | 748 // Verify that mouse events to the root window are block with a visble modal |
747 // dialog. | 749 // dialog. |
748 root_window_event_generator.ClickLeftButton(); | 750 root_window_event_generator.ClickLeftButton(); |
749 EXPECT_EQ(0, handler->num_mouse_events()); | 751 EXPECT_EQ(0, handler->num_mouse_events()); |
750 | 752 |
751 // Verify that event dispatch to the virtual keyboard is unblocked. | 753 // Verify that event dispatch to the virtual keyboard is unblocked. |
752 keyboard_event_generator.ClickLeftButton(); | 754 keyboard_event_generator.ClickLeftButton(); |
753 EXPECT_EQ(1, handler->num_mouse_events() / 2); | 755 EXPECT_EQ(1, handler->num_mouse_events() / 2); |
754 | 756 |
755 modal_widget->Close(); | 757 modal_widget->Close(); |
756 | 758 |
757 // Verify that mouse events are now unblocked to the root window. | 759 // Verify that mouse events are now unblocked to the root window. |
758 root_window_event_generator.ClickLeftButton(); | 760 root_window_event_generator.ClickLeftButton(); |
759 EXPECT_EQ(2, handler->num_mouse_events() / 2); | 761 EXPECT_EQ(2, handler->num_mouse_events() / 2); |
760 } | 762 } |
761 | 763 |
762 } // namespace test | 764 } // namespace test |
763 } // namespace ash | 765 } // namespace ash |
OLD | NEW |