| 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 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { | 695 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { |
| 696 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 696 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
| 697 aura::Window* keyboard_container = | 697 aura::Window* keyboard_container = |
| 698 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); | 698 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
| 699 keyboard_container->Show(); | 699 keyboard_container->Show(); |
| 700 keyboard::KeyboardController* controller = | 700 keyboard::KeyboardController* controller = |
| 701 keyboard::KeyboardController::GetInstance(); | 701 keyboard::KeyboardController::GetInstance(); |
| 702 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); | 702 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); |
| 703 keyboard_container->AddChild(keyboard_window); | 703 keyboard_container->AddChild(keyboard_window); |
| 704 keyboard_window->set_owned_by_parent(false); | 704 keyboard_window->set_owned_by_parent(false); |
| 705 gfx::Rect window_bounds = keyboard_container->bounds(); |
| 706 keyboard_window->SetBounds(gfx::Rect( |
| 707 window_bounds.x(), |
| 708 window_bounds.y() + window_bounds.height() - 100, |
| 709 window_bounds.width(), |
| 710 100)); |
| 705 keyboard_window->Show(); | 711 keyboard_window->Show(); |
| 706 | 712 |
| 707 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 713 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
| 708 | 714 |
| 709 // Notify keyboard bounds changing. | 715 // Notify keyboard bounds changing. |
| 710 controller->NotifyKeyboardBoundsChanging( | 716 controller->NotifyKeyboardBoundsChanging( |
| 711 controller->proxy()->GetKeyboardWindow()->bounds()); | 717 controller->proxy()->GetKeyboardWindow()->bounds()); |
| 712 | 718 |
| 713 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 719 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
| 714 EXPECT_LT(after, before); | 720 EXPECT_LT(after, before); |
| 715 | 721 |
| 716 // Mock a login user profile change to reinitialize the keyboard. | 722 // Mock a login user profile change to reinitialize the keyboard. |
| 717 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); | 723 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); |
| 718 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); | 724 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); |
| 719 } | 725 } |
| 720 | 726 |
| 721 // Ensure that system modal dialogs do not block events targeted at the virtual | 727 // Ensure that system modal dialogs do not block events targeted at the virtual |
| 722 // keyboard. | 728 // keyboard. |
| 723 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { | 729 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { |
| 724 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 730 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
| 725 aura::Window* keyboard_container = | 731 aura::Window* keyboard_container = |
| 726 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); | 732 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
| 727 ASSERT_TRUE(keyboard_container); | 733 ASSERT_TRUE(keyboard_container); |
| 728 keyboard_container->Show(); | 734 keyboard_container->Show(); |
| 729 | 735 |
| 730 aura::Window* keyboard_window = keyboard::KeyboardController::GetInstance()-> | 736 aura::Window* keyboard_window = keyboard::KeyboardController::GetInstance()-> |
| 731 proxy()->GetKeyboardWindow(); | 737 proxy()->GetKeyboardWindow(); |
| 732 keyboard_container->AddChild(keyboard_window); | 738 keyboard_container->AddChild(keyboard_window); |
| 733 keyboard_window->set_owned_by_parent(false); | 739 keyboard_window->set_owned_by_parent(false); |
| 734 keyboard_window->SetBounds(gfx::Rect()); | 740 gfx::Rect window_bounds = keyboard_container->bounds(); |
| 741 keyboard_window->SetBounds(gfx::Rect( |
| 742 window_bounds.x(), |
| 743 window_bounds.y() + window_bounds.height() - 100, |
| 744 window_bounds.width(), |
| 745 100)); |
| 735 keyboard_window->Show(); | 746 keyboard_window->Show(); |
| 736 | 747 |
| 737 ui::test::TestEventHandler* handler = new ui::test::TestEventHandler; | 748 ui::test::TestEventHandler* handler = new ui::test::TestEventHandler; |
| 738 root_window->SetEventFilter(handler); | 749 root_window->SetEventFilter(handler); |
| 739 aura::test::EventGenerator root_window_event_generator(root_window); | 750 aura::test::EventGenerator root_window_event_generator(root_window); |
| 740 aura::test::EventGenerator keyboard_event_generator(root_window, | 751 aura::test::EventGenerator keyboard_event_generator(root_window, |
| 741 keyboard_window); | 752 keyboard_window); |
| 742 | 753 |
| 743 views::Widget* modal_widget = | 754 views::Widget* modal_widget = |
| 744 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 755 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
| 745 | 756 |
| 746 // Verify that mouse events to the root window are block with a visble modal | 757 // Verify that mouse events to the root window are block with a visble modal |
| 747 // dialog. | 758 // dialog. |
| 748 root_window_event_generator.ClickLeftButton(); | 759 root_window_event_generator.ClickLeftButton(); |
| 749 EXPECT_EQ(0, handler->num_mouse_events()); | 760 EXPECT_EQ(0, handler->num_mouse_events()); |
| 750 | 761 |
| 751 // Verify that event dispatch to the virtual keyboard is unblocked. | 762 // Verify that event dispatch to the virtual keyboard is unblocked. |
| 752 keyboard_event_generator.ClickLeftButton(); | 763 keyboard_event_generator.ClickLeftButton(); |
| 753 EXPECT_EQ(1, handler->num_mouse_events() / 2); | 764 EXPECT_EQ(1, handler->num_mouse_events() / 2); |
| 754 | 765 |
| 755 modal_widget->Close(); | 766 modal_widget->Close(); |
| 756 | 767 |
| 757 // Verify that mouse events are now unblocked to the root window. | 768 // Verify that mouse events are now unblocked to the root window. |
| 758 root_window_event_generator.ClickLeftButton(); | 769 root_window_event_generator.ClickLeftButton(); |
| 759 EXPECT_EQ(2, handler->num_mouse_events() / 2); | 770 EXPECT_EQ(2, handler->num_mouse_events() / 2); |
| 760 } | 771 } |
| 761 | 772 |
| 762 } // namespace test | 773 } // namespace test |
| 763 } // namespace ash | 774 } // namespace ash |
| OLD | NEW |