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/shell.h" | 5 #include "ash/shell.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "ash/accelerators/accelerator_controller.h" | 10 #include "ash/accelerators/accelerator_controller.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 #include "ash/wm/mru_window_tracker.h" | 64 #include "ash/wm/mru_window_tracker.h" |
65 #include "ash/wm/overlay_event_filter.h" | 65 #include "ash/wm/overlay_event_filter.h" |
66 #include "ash/wm/overview/window_selector_controller.h" | 66 #include "ash/wm/overview/window_selector_controller.h" |
67 #include "ash/wm/power_button_controller.h" | 67 #include "ash/wm/power_button_controller.h" |
68 #include "ash/wm/resize_shadow_controller.h" | 68 #include "ash/wm/resize_shadow_controller.h" |
69 #include "ash/wm/root_window_layout_manager.h" | 69 #include "ash/wm/root_window_layout_manager.h" |
70 #include "ash/wm/screen_dimmer.h" | 70 #include "ash/wm/screen_dimmer.h" |
71 #include "ash/wm/system_gesture_event_filter.h" | 71 #include "ash/wm/system_gesture_event_filter.h" |
72 #include "ash/wm/system_modal_container_event_filter.h" | 72 #include "ash/wm/system_modal_container_event_filter.h" |
73 #include "ash/wm/system_modal_container_layout_manager.h" | 73 #include "ash/wm/system_modal_container_layout_manager.h" |
| 74 #include "ash/wm/toplevel_window_event_handler.h" |
74 #include "ash/wm/user_activity_detector.h" | 75 #include "ash/wm/user_activity_detector.h" |
75 #include "ash/wm/video_detector.h" | 76 #include "ash/wm/video_detector.h" |
76 #include "ash/wm/window_animations.h" | 77 #include "ash/wm/window_animations.h" |
77 #include "ash/wm/window_cycle_controller.h" | 78 #include "ash/wm/window_cycle_controller.h" |
78 #include "ash/wm/window_positioner.h" | 79 #include "ash/wm/window_positioner.h" |
79 #include "ash/wm/window_properties.h" | 80 #include "ash/wm/window_properties.h" |
80 #include "ash/wm/window_util.h" | 81 #include "ash/wm/window_util.h" |
81 #include "ash/wm/workspace_controller.h" | 82 #include "ash/wm/workspace_controller.h" |
82 #include "base/bind.h" | 83 #include "base/bind.h" |
83 #include "base/command_line.h" | 84 #include "base/command_line.h" |
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 // See bug crbug.com/134502. | 602 // See bug crbug.com/134502. |
602 aura::client::GetFocusClient(GetPrimaryRootWindow())->FocusWindow(NULL); | 603 aura::client::GetFocusClient(GetPrimaryRootWindow())->FocusWindow(NULL); |
603 | 604 |
604 // Please keep in same order as in Init() because it's easy to miss one. | 605 // Please keep in same order as in Init() because it's easy to miss one. |
605 if (window_modality_controller_) | 606 if (window_modality_controller_) |
606 window_modality_controller_.reset(); | 607 window_modality_controller_.reset(); |
607 RemovePreTargetHandler(event_rewriter_filter_.get()); | 608 RemovePreTargetHandler(event_rewriter_filter_.get()); |
608 RemovePreTargetHandler(user_activity_detector_.get()); | 609 RemovePreTargetHandler(user_activity_detector_.get()); |
609 RemovePreTargetHandler(overlay_filter_.get()); | 610 RemovePreTargetHandler(overlay_filter_.get()); |
610 RemovePreTargetHandler(input_method_filter_.get()); | 611 RemovePreTargetHandler(input_method_filter_.get()); |
| 612 RemovePreTargetHandler(accelerator_filter_.get()); |
| 613 RemovePreTargetHandler(event_transformation_handler_.get()); |
| 614 RemovePreTargetHandler(toplevel_window_event_handler_.get()); |
| 615 RemovePostTargetHandler(toplevel_window_event_handler_.get()); |
| 616 RemovePreTargetHandler(system_gesture_filter_.get()); |
| 617 RemovePreTargetHandler(keyboard_metrics_filter_.get()); |
611 if (mouse_cursor_filter_) | 618 if (mouse_cursor_filter_) |
612 RemovePreTargetHandler(mouse_cursor_filter_.get()); | 619 RemovePreTargetHandler(mouse_cursor_filter_.get()); |
613 RemovePreTargetHandler(system_gesture_filter_.get()); | |
614 RemovePreTargetHandler(keyboard_metrics_filter_.get()); | |
615 RemovePreTargetHandler(event_transformation_handler_.get()); | |
616 RemovePreTargetHandler(accelerator_filter_.get()); | |
617 | 620 |
618 // TooltipController is deleted with the Shell so removing its references. | 621 // TooltipController is deleted with the Shell so removing its references. |
619 RemovePreTargetHandler(tooltip_controller_.get()); | 622 RemovePreTargetHandler(tooltip_controller_.get()); |
620 | 623 |
621 // AppList needs to be released before shelf layout manager, which is | 624 // AppList needs to be released before shelf layout manager, which is |
622 // destroyed with shelf container in the loop below. However, app list | 625 // destroyed with shelf container in the loop below. However, app list |
623 // container is now on top of shelf container and released after it. | 626 // container is now on top of shelf container and released after it. |
624 // TODO(xiyuan): Move it back when app list container is no longer needed. | 627 // TODO(xiyuan): Move it back when app list container is no longer needed. |
625 app_list_controller_.reset(); | 628 app_list_controller_.reset(); |
626 | 629 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 system_tray_notifier_.reset(); | 672 system_tray_notifier_.reset(); |
670 | 673 |
671 // These need a valid Shell instance to clean up properly, so explicitly | 674 // These need a valid Shell instance to clean up properly, so explicitly |
672 // delete them before invalidating the instance. | 675 // delete them before invalidating the instance. |
673 // Alphabetical. TODO(oshima): sort. | 676 // Alphabetical. TODO(oshima): sort. |
674 magnification_controller_.reset(); | 677 magnification_controller_.reset(); |
675 partial_magnification_controller_.reset(); | 678 partial_magnification_controller_.reset(); |
676 tooltip_controller_.reset(); | 679 tooltip_controller_.reset(); |
677 event_client_.reset(); | 680 event_client_.reset(); |
678 nested_dispatcher_controller_.reset(); | 681 nested_dispatcher_controller_.reset(); |
| 682 toplevel_window_event_handler_.reset(); |
679 user_action_client_.reset(); | 683 user_action_client_.reset(); |
680 visibility_controller_.reset(); | 684 visibility_controller_.reset(); |
681 // |shelf_item_delegate_manager_| observes |shelf_model_|. It must be | 685 // |shelf_item_delegate_manager_| observes |shelf_model_|. It must be |
682 // destroyed before |shelf_model_| is destroyed. | 686 // destroyed before |shelf_model_| is destroyed. |
683 shelf_item_delegate_manager_.reset(); | 687 shelf_item_delegate_manager_.reset(); |
684 shelf_model_.reset(); | 688 shelf_model_.reset(); |
685 | 689 |
686 power_button_controller_.reset(); | 690 power_button_controller_.reset(); |
687 lock_state_controller_.reset(); | 691 lock_state_controller_.reset(); |
688 | 692 |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 input_method_filter_.reset(new views::corewm::InputMethodEventFilter( | 823 input_method_filter_.reset(new views::corewm::InputMethodEventFilter( |
820 root_window->GetDispatcher()->host()->GetAcceleratedWidget())); | 824 root_window->GetDispatcher()->host()->GetAcceleratedWidget())); |
821 AddPreTargetHandler(input_method_filter_.get()); | 825 AddPreTargetHandler(input_method_filter_.get()); |
822 | 826 |
823 accelerator_filter_.reset(new internal::AcceleratorFilter); | 827 accelerator_filter_.reset(new internal::AcceleratorFilter); |
824 AddPreTargetHandler(accelerator_filter_.get()); | 828 AddPreTargetHandler(accelerator_filter_.get()); |
825 | 829 |
826 event_transformation_handler_.reset(new internal::EventTransformationHandler); | 830 event_transformation_handler_.reset(new internal::EventTransformationHandler); |
827 AddPreTargetHandler(event_transformation_handler_.get()); | 831 AddPreTargetHandler(event_transformation_handler_.get()); |
828 | 832 |
| 833 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); |
| 834 AddPreTargetHandler(toplevel_window_event_handler_.get()); |
| 835 AddPostTargetHandler(toplevel_window_event_handler_.get()); |
| 836 |
829 system_gesture_filter_.reset(new internal::SystemGestureEventFilter); | 837 system_gesture_filter_.reset(new internal::SystemGestureEventFilter); |
830 AddPreTargetHandler(system_gesture_filter_.get()); | 838 AddPreTargetHandler(system_gesture_filter_.get()); |
831 | 839 |
832 keyboard_metrics_filter_.reset(new internal::KeyboardUMAEventFilter); | 840 keyboard_metrics_filter_.reset(new internal::KeyboardUMAEventFilter); |
833 AddPreTargetHandler(keyboard_metrics_filter_.get()); | 841 AddPreTargetHandler(keyboard_metrics_filter_.get()); |
834 | 842 |
835 // The keyboard system must be initialized before the RootWindowController is | 843 // The keyboard system must be initialized before the RootWindowController is |
836 // created. | 844 // created. |
837 if (keyboard::IsKeyboardEnabled()) | 845 if (keyboard::IsKeyboardEnabled()) |
838 keyboard::InitializeKeyboard(); | 846 keyboard::InitializeKeyboard(); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 views::corewm::FocusController* focus_controller = | 985 views::corewm::FocusController* focus_controller = |
978 static_cast<views::corewm::FocusController*>(activation_client_); | 986 static_cast<views::corewm::FocusController*>(activation_client_); |
979 root_window->AddPreTargetHandler(focus_controller); | 987 root_window->AddPreTargetHandler(focus_controller); |
980 aura::client::SetVisibilityClient(root_window, visibility_controller_.get()); | 988 aura::client::SetVisibilityClient(root_window, visibility_controller_.get()); |
981 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get()); | 989 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get()); |
982 aura::client::SetScreenPositionClient(root_window, | 990 aura::client::SetScreenPositionClient(root_window, |
983 screen_position_controller_.get()); | 991 screen_position_controller_.get()); |
984 aura::client::SetCursorClient(root_window, &cursor_manager_); | 992 aura::client::SetCursorClient(root_window, &cursor_manager_); |
985 aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); | 993 aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); |
986 aura::client::SetEventClient(root_window, event_client_.get()); | 994 aura::client::SetEventClient(root_window, event_client_.get()); |
| 995 aura::client::SetWindowMoveClient(root_window, |
| 996 toplevel_window_event_handler_.get()); |
987 | 997 |
988 if (nested_dispatcher_controller_) { | 998 if (nested_dispatcher_controller_) { |
989 aura::client::SetDispatcherClient(root_window, | 999 aura::client::SetDispatcherClient(root_window, |
990 nested_dispatcher_controller_.get()); | 1000 nested_dispatcher_controller_.get()); |
991 } | 1001 } |
992 if (user_action_client_) | 1002 if (user_action_client_) |
993 aura::client::SetUserActionClient(root_window, user_action_client_.get()); | 1003 aura::client::SetUserActionClient(root_window, user_action_client_.get()); |
994 } | 1004 } |
995 | 1005 |
996 bool Shell::CanWindowReceiveEvents(aura::Window* window) { | 1006 bool Shell::CanWindowReceiveEvents(aura::Window* window) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1031 //////////////////////////////////////////////////////////////////////////////// | 1041 //////////////////////////////////////////////////////////////////////////////// |
1032 // Shell, aura::client::ActivationChangeObserver implementation: | 1042 // Shell, aura::client::ActivationChangeObserver implementation: |
1033 | 1043 |
1034 void Shell::OnWindowActivated(aura::Window* gained_active, | 1044 void Shell::OnWindowActivated(aura::Window* gained_active, |
1035 aura::Window* lost_active) { | 1045 aura::Window* lost_active) { |
1036 if (gained_active) | 1046 if (gained_active) |
1037 target_root_window_ = gained_active->GetRootWindow(); | 1047 target_root_window_ = gained_active->GetRootWindow(); |
1038 } | 1048 } |
1039 | 1049 |
1040 } // namespace ash | 1050 } // namespace ash |
OLD | NEW |