Chromium Code Reviews| 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 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 599 // See bug crbug.com/134502. | 600 // See bug crbug.com/134502. |
| 600 aura::client::GetFocusClient(GetPrimaryRootWindow())->FocusWindow(NULL); | 601 aura::client::GetFocusClient(GetPrimaryRootWindow())->FocusWindow(NULL); |
| 601 | 602 |
| 602 // Please keep in same order as in Init() because it's easy to miss one. | 603 // Please keep in same order as in Init() because it's easy to miss one. |
| 603 if (window_modality_controller_) | 604 if (window_modality_controller_) |
| 604 window_modality_controller_.reset(); | 605 window_modality_controller_.reset(); |
| 605 RemovePreTargetHandler(event_rewriter_filter_.get()); | 606 RemovePreTargetHandler(event_rewriter_filter_.get()); |
| 606 RemovePreTargetHandler(user_activity_detector_.get()); | 607 RemovePreTargetHandler(user_activity_detector_.get()); |
| 607 RemovePreTargetHandler(overlay_filter_.get()); | 608 RemovePreTargetHandler(overlay_filter_.get()); |
| 608 RemovePreTargetHandler(input_method_filter_.get()); | 609 RemovePreTargetHandler(input_method_filter_.get()); |
| 610 RemovePreTargetHandler(accelerator_filter_.get()); | |
| 611 RemovePreTargetHandler(event_transformation_handler_.get()); | |
| 612 RemovePreTargetHandler(toplevel_window_event_handler_.get()); | |
| 613 RemovePostTargetHandler(toplevel_window_event_handler_.get()); | |
| 614 RemovePreTargetHandler(system_gesture_filter_.get()); | |
| 615 RemovePreTargetHandler(keyboard_metrics_filter_.get()); | |
| 609 if (mouse_cursor_filter_) | 616 if (mouse_cursor_filter_) |
| 610 RemovePreTargetHandler(mouse_cursor_filter_.get()); | 617 RemovePreTargetHandler(mouse_cursor_filter_.get()); |
| 611 RemovePreTargetHandler(system_gesture_filter_.get()); | |
| 612 RemovePreTargetHandler(keyboard_metrics_filter_.get()); | |
| 613 RemovePreTargetHandler(event_transformation_handler_.get()); | |
| 614 RemovePreTargetHandler(accelerator_filter_.get()); | |
| 615 | 618 |
| 616 // TooltipController is deleted with the Shell so removing its references. | 619 // TooltipController is deleted with the Shell so removing its references. |
| 617 RemovePreTargetHandler(tooltip_controller_.get()); | 620 RemovePreTargetHandler(tooltip_controller_.get()); |
| 618 | 621 |
| 619 // AppList needs to be released before shelf layout manager, which is | 622 // AppList needs to be released before shelf layout manager, which is |
| 620 // destroyed with launcher container in the loop below. However, app list | 623 // destroyed with launcher container in the loop below. However, app list |
| 621 // container is now on top of launcher container and released after it. | 624 // container is now on top of launcher container and released after it. |
| 622 // TODO(xiyuan): Move it back when app list container is no longer needed. | 625 // TODO(xiyuan): Move it back when app list container is no longer needed. |
| 623 app_list_controller_.reset(); | 626 app_list_controller_.reset(); |
| 624 | 627 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 666 system_tray_notifier_.reset(); | 669 system_tray_notifier_.reset(); |
| 667 | 670 |
| 668 // These need a valid Shell instance to clean up properly, so explicitly | 671 // These need a valid Shell instance to clean up properly, so explicitly |
| 669 // delete them before invalidating the instance. | 672 // delete them before invalidating the instance. |
| 670 // Alphabetical. TODO(oshima): sort. | 673 // Alphabetical. TODO(oshima): sort. |
| 671 magnification_controller_.reset(); | 674 magnification_controller_.reset(); |
| 672 partial_magnification_controller_.reset(); | 675 partial_magnification_controller_.reset(); |
| 673 tooltip_controller_.reset(); | 676 tooltip_controller_.reset(); |
| 674 event_client_.reset(); | 677 event_client_.reset(); |
| 675 nested_dispatcher_controller_.reset(); | 678 nested_dispatcher_controller_.reset(); |
| 679 toplevel_window_event_handler_.reset(); | |
|
varkha
2013/12/13 04:05:14
Do we need to reset other handlers and filters tha
pkotwicz
2013/12/13 20:28:42
We need to reset |toplevel_window_event_handler_|
| |
| 676 user_action_client_.reset(); | 680 user_action_client_.reset(); |
| 677 visibility_controller_.reset(); | 681 visibility_controller_.reset(); |
| 678 // |shelf_item_delegate_manager_| observes |shelf_model_|. It must be | 682 // |shelf_item_delegate_manager_| observes |shelf_model_|. It must be |
| 679 // destroyed before |shelf_model_| is destroyed. | 683 // destroyed before |shelf_model_| is destroyed. |
| 680 shelf_item_delegate_manager_.reset(); | 684 shelf_item_delegate_manager_.reset(); |
| 681 shelf_model_.reset(); | 685 shelf_model_.reset(); |
| 682 | 686 |
| 683 power_button_controller_.reset(); | 687 power_button_controller_.reset(); |
| 684 lock_state_controller_.reset(); | 688 lock_state_controller_.reset(); |
| 685 | 689 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 816 input_method_filter_.reset(new views::corewm::InputMethodEventFilter( | 820 input_method_filter_.reset(new views::corewm::InputMethodEventFilter( |
| 817 root_window->GetDispatcher()->host()->GetAcceleratedWidget())); | 821 root_window->GetDispatcher()->host()->GetAcceleratedWidget())); |
| 818 AddPreTargetHandler(input_method_filter_.get()); | 822 AddPreTargetHandler(input_method_filter_.get()); |
| 819 | 823 |
| 820 accelerator_filter_.reset(new internal::AcceleratorFilter); | 824 accelerator_filter_.reset(new internal::AcceleratorFilter); |
| 821 AddPreTargetHandler(accelerator_filter_.get()); | 825 AddPreTargetHandler(accelerator_filter_.get()); |
| 822 | 826 |
| 823 event_transformation_handler_.reset(new internal::EventTransformationHandler); | 827 event_transformation_handler_.reset(new internal::EventTransformationHandler); |
| 824 AddPreTargetHandler(event_transformation_handler_.get()); | 828 AddPreTargetHandler(event_transformation_handler_.get()); |
| 825 | 829 |
| 830 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); | |
| 831 AddPreTargetHandler(toplevel_window_event_handler_.get()); | |
| 832 AddPostTargetHandler(toplevel_window_event_handler_.get()); | |
| 833 | |
| 826 system_gesture_filter_.reset(new internal::SystemGestureEventFilter); | 834 system_gesture_filter_.reset(new internal::SystemGestureEventFilter); |
| 827 AddPreTargetHandler(system_gesture_filter_.get()); | 835 AddPreTargetHandler(system_gesture_filter_.get()); |
| 828 | 836 |
| 829 keyboard_metrics_filter_.reset(new internal::KeyboardUMAEventFilter); | 837 keyboard_metrics_filter_.reset(new internal::KeyboardUMAEventFilter); |
| 830 AddPreTargetHandler(keyboard_metrics_filter_.get()); | 838 AddPreTargetHandler(keyboard_metrics_filter_.get()); |
| 831 | 839 |
| 832 // The keyboard system must be initialized before the RootWindowController is | 840 // The keyboard system must be initialized before the RootWindowController is |
| 833 // created. | 841 // created. |
| 834 if (keyboard::IsKeyboardEnabled()) | 842 if (keyboard::IsKeyboardEnabled()) |
| 835 keyboard::InitializeKeyboard(); | 843 keyboard::InitializeKeyboard(); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 974 views::corewm::FocusController* focus_controller = | 982 views::corewm::FocusController* focus_controller = |
| 975 static_cast<views::corewm::FocusController*>(activation_client_); | 983 static_cast<views::corewm::FocusController*>(activation_client_); |
| 976 root_window->AddPreTargetHandler(focus_controller); | 984 root_window->AddPreTargetHandler(focus_controller); |
| 977 aura::client::SetVisibilityClient(root_window, visibility_controller_.get()); | 985 aura::client::SetVisibilityClient(root_window, visibility_controller_.get()); |
| 978 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get()); | 986 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get()); |
| 979 aura::client::SetScreenPositionClient(root_window, | 987 aura::client::SetScreenPositionClient(root_window, |
| 980 screen_position_controller_.get()); | 988 screen_position_controller_.get()); |
| 981 aura::client::SetCursorClient(root_window, &cursor_manager_); | 989 aura::client::SetCursorClient(root_window, &cursor_manager_); |
| 982 aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); | 990 aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); |
| 983 aura::client::SetEventClient(root_window, event_client_.get()); | 991 aura::client::SetEventClient(root_window, event_client_.get()); |
| 992 aura::client::SetWindowMoveClient(root_window, | |
| 993 toplevel_window_event_handler_.get()); | |
| 984 | 994 |
| 985 if (nested_dispatcher_controller_) { | 995 if (nested_dispatcher_controller_) { |
| 986 aura::client::SetDispatcherClient(root_window, | 996 aura::client::SetDispatcherClient(root_window, |
| 987 nested_dispatcher_controller_.get()); | 997 nested_dispatcher_controller_.get()); |
| 988 } | 998 } |
| 989 if (user_action_client_) | 999 if (user_action_client_) |
| 990 aura::client::SetUserActionClient(root_window, user_action_client_.get()); | 1000 aura::client::SetUserActionClient(root_window, user_action_client_.get()); |
| 991 } | 1001 } |
| 992 | 1002 |
| 993 bool Shell::CanWindowReceiveEvents(aura::Window* window) { | 1003 bool Shell::CanWindowReceiveEvents(aura::Window* window) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1028 //////////////////////////////////////////////////////////////////////////////// | 1038 //////////////////////////////////////////////////////////////////////////////// |
| 1029 // Shell, aura::client::ActivationChangeObserver implementation: | 1039 // Shell, aura::client::ActivationChangeObserver implementation: |
| 1030 | 1040 |
| 1031 void Shell::OnWindowActivated(aura::Window* gained_active, | 1041 void Shell::OnWindowActivated(aura::Window* gained_active, |
| 1032 aura::Window* lost_active) { | 1042 aura::Window* lost_active) { |
| 1033 if (gained_active) | 1043 if (gained_active) |
| 1034 target_root_window_ = gained_active->GetRootWindow(); | 1044 target_root_window_ = gained_active->GetRootWindow(); |
| 1035 } | 1045 } |
| 1036 | 1046 |
| 1037 } // namespace ash | 1047 } // namespace ash |
| OLD | NEW |