Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1416)

Side by Side Diff: ash/shell.cc

Issue 1155013005: Refactoring the ownership of ui::InputMethod. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 #include "ui/keyboard/keyboard_util.h" 101 #include "ui/keyboard/keyboard_util.h"
102 #include "ui/message_center/message_center.h" 102 #include "ui/message_center/message_center.h"
103 #include "ui/views/corewm/tooltip_aura.h" 103 #include "ui/views/corewm/tooltip_aura.h"
104 #include "ui/views/corewm/tooltip_controller.h" 104 #include "ui/views/corewm/tooltip_controller.h"
105 #include "ui/views/focus/focus_manager_factory.h" 105 #include "ui/views/focus/focus_manager_factory.h"
106 #include "ui/views/widget/native_widget_aura.h" 106 #include "ui/views/widget/native_widget_aura.h"
107 #include "ui/views/widget/widget.h" 107 #include "ui/views/widget/widget.h"
108 #include "ui/wm/core/accelerator_filter.h" 108 #include "ui/wm/core/accelerator_filter.h"
109 #include "ui/wm/core/compound_event_filter.h" 109 #include "ui/wm/core/compound_event_filter.h"
110 #include "ui/wm/core/focus_controller.h" 110 #include "ui/wm/core/focus_controller.h"
111 #include "ui/wm/core/input_method_event_filter.h"
112 #include "ui/wm/core/nested_accelerator_controller.h" 111 #include "ui/wm/core/nested_accelerator_controller.h"
113 #include "ui/wm/core/shadow_controller.h" 112 #include "ui/wm/core/shadow_controller.h"
114 #include "ui/wm/core/visibility_controller.h" 113 #include "ui/wm/core/visibility_controller.h"
115 #include "ui/wm/core/window_modality_controller.h" 114 #include "ui/wm/core/window_modality_controller.h"
116 115
117 #if defined(OS_CHROMEOS) 116 #if defined(OS_CHROMEOS)
118 #if defined(USE_X11) 117 #if defined(USE_X11)
119 #include "ui/gfx/x/x11_types.h" 118 #include "ui/gfx/x/x11_types.h"
120 #endif // defined(USE_X11) 119 #endif // defined(USE_X11)
121 #include "ash/accelerators/magnifier_key_scroller.h" 120 #include "ash/accelerators/magnifier_key_scroller.h"
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 if (window_modality_controller_) 672 if (window_modality_controller_)
674 window_modality_controller_.reset(); 673 window_modality_controller_.reset();
675 #if defined(OS_CHROMEOS) 674 #if defined(OS_CHROMEOS)
676 RemovePreTargetHandler(magnifier_key_scroll_handler_.get()); 675 RemovePreTargetHandler(magnifier_key_scroll_handler_.get());
677 magnifier_key_scroll_handler_.reset(); 676 magnifier_key_scroll_handler_.reset();
678 677
679 RemovePreTargetHandler(speech_feedback_handler_.get()); 678 RemovePreTargetHandler(speech_feedback_handler_.get());
680 speech_feedback_handler_.reset(); 679 speech_feedback_handler_.reset();
681 #endif 680 #endif
682 RemovePreTargetHandler(overlay_filter_.get()); 681 RemovePreTargetHandler(overlay_filter_.get());
683 RemovePreTargetHandler(input_method_filter_.get());
684 RemovePreTargetHandler(accelerator_filter_.get()); 682 RemovePreTargetHandler(accelerator_filter_.get());
685 RemovePreTargetHandler(event_transformation_handler_.get()); 683 RemovePreTargetHandler(event_transformation_handler_.get());
686 RemovePreTargetHandler(toplevel_window_event_handler_.get()); 684 RemovePreTargetHandler(toplevel_window_event_handler_.get());
687 RemovePostTargetHandler(toplevel_window_event_handler_.get()); 685 RemovePostTargetHandler(toplevel_window_event_handler_.get());
688 RemovePreTargetHandler(system_gesture_filter_.get()); 686 RemovePreTargetHandler(system_gesture_filter_.get());
689 RemovePreTargetHandler(keyboard_metrics_filter_.get()); 687 RemovePreTargetHandler(keyboard_metrics_filter_.get());
690 RemovePreTargetHandler(mouse_cursor_filter_.get()); 688 RemovePreTargetHandler(mouse_cursor_filter_.get());
691 689
692 // TooltipController is deleted with the Shell so removing its references. 690 // TooltipController is deleted with the Shell so removing its references.
693 RemovePreTargetHandler(tooltip_controller_.get()); 691 RemovePreTargetHandler(tooltip_controller_.get());
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 shadow_controller_.reset(); 744 shadow_controller_.reset();
747 resize_shadow_controller_.reset(); 745 resize_shadow_controller_.reset();
748 746
749 window_cycle_controller_.reset(); 747 window_cycle_controller_.reset();
750 window_selector_controller_.reset(); 748 window_selector_controller_.reset();
751 749
752 // |shelf_window_watcher_| has a weak pointer to |shelf_Model_| 750 // |shelf_window_watcher_| has a weak pointer to |shelf_Model_|
753 // and has window observers. 751 // and has window observers.
754 shelf_window_watcher_.reset(); 752 shelf_window_watcher_.reset();
755 753
754 keyboard::KeyboardController::ResetInstance(nullptr);
755
756 // Destroy all child windows including widgets. 756 // Destroy all child windows including widgets.
757 display_controller_->CloseChildWindows(); 757 display_controller_->CloseChildWindows();
758 // MruWindowTracker must be destroyed after all windows have been deleted to 758 // MruWindowTracker must be destroyed after all windows have been deleted to
759 // avoid a possible crash when Shell is destroyed from a non-normal shutdown 759 // avoid a possible crash when Shell is destroyed from a non-normal shutdown
760 // path. (crbug.com/485438). 760 // path. (crbug.com/485438).
761 mru_window_tracker_.reset(); 761 mru_window_tracker_.reset();
762 762
763 // Chrome implementation of shelf delegate depends on FocusClient, 763 // Chrome implementation of shelf delegate depends on FocusClient,
764 // so must be deleted before |focus_client_|. 764 // so must be deleted before |focus_client_|.
765 shelf_delegate_.reset(); 765 shelf_delegate_.reset();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 // DisplayController before resetting |display_controller_|, since destruction 802 // DisplayController before resetting |display_controller_|, since destruction
803 // of its owned RootWindowControllers relies on the value. 803 // of its owned RootWindowControllers relies on the value.
804 display_manager_->CreateScreenForShutdown(); 804 display_manager_->CreateScreenForShutdown();
805 display_controller_->Shutdown(); 805 display_controller_->Shutdown();
806 display_controller_.reset(); 806 display_controller_.reset();
807 screen_position_controller_.reset(); 807 screen_position_controller_.reset();
808 accessibility_delegate_.reset(); 808 accessibility_delegate_.reset();
809 new_window_delegate_.reset(); 809 new_window_delegate_.reset();
810 media_delegate_.reset(); 810 media_delegate_.reset();
811 811
812 keyboard::KeyboardController::ResetInstance(NULL);
813
814 #if defined(OS_CHROMEOS) 812 #if defined(OS_CHROMEOS)
815 display_color_manager_.reset(); 813 display_color_manager_.reset();
816 if (display_change_observer_) 814 if (display_change_observer_)
817 display_configurator_->RemoveObserver(display_change_observer_.get()); 815 display_configurator_->RemoveObserver(display_change_observer_.get());
818 if (display_configurator_animation_) 816 if (display_configurator_animation_)
819 display_configurator_->RemoveObserver( 817 display_configurator_->RemoveObserver(
820 display_configurator_animation_.get()); 818 display_configurator_animation_.get());
821 if (display_error_observer_) 819 if (display_error_observer_)
822 display_configurator_->RemoveObserver(display_error_observer_.get()); 820 display_configurator_->RemoveObserver(display_error_observer_.get());
823 if (projecting_observer_) { 821 if (projecting_observer_) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 // The order in which event filters are added is significant. 926 // The order in which event filters are added is significant.
929 927
930 // ui::UserActivityDetector passes events to observers, so let them get 928 // ui::UserActivityDetector passes events to observers, so let them get
931 // rewritten first. 929 // rewritten first.
932 user_activity_detector_.reset(new ui::UserActivityDetector); 930 user_activity_detector_.reset(new ui::UserActivityDetector);
933 931
934 overlay_filter_.reset(new OverlayEventFilter); 932 overlay_filter_.reset(new OverlayEventFilter);
935 AddPreTargetHandler(overlay_filter_.get()); 933 AddPreTargetHandler(overlay_filter_.get());
936 AddShellObserver(overlay_filter_.get()); 934 AddShellObserver(overlay_filter_.get());
937 935
938 input_method_filter_.reset(new ::wm::InputMethodEventFilter(
939 root_window->GetHost()->GetAcceleratedWidget()));
940 AddPreTargetHandler(input_method_filter_.get());
941
942 accelerator_filter_.reset(new ::wm::AcceleratorFilter( 936 accelerator_filter_.reset(new ::wm::AcceleratorFilter(
943 scoped_ptr< ::wm::AcceleratorDelegate>(new AcceleratorDelegate).Pass(), 937 scoped_ptr< ::wm::AcceleratorDelegate>(new AcceleratorDelegate).Pass(),
944 accelerator_controller_->accelerator_history())); 938 accelerator_controller_->accelerator_history()));
945 AddPreTargetHandler(accelerator_filter_.get()); 939 AddPreTargetHandler(accelerator_filter_.get());
946 940
947 event_transformation_handler_.reset(new EventTransformationHandler); 941 event_transformation_handler_.reset(new EventTransformationHandler);
948 AddPreTargetHandler(event_transformation_handler_.get()); 942 AddPreTargetHandler(event_transformation_handler_.get());
949 943
950 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler); 944 toplevel_window_event_handler_.reset(new ToplevelWindowEventHandler);
951 945
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 new keyboard::KeyboardController(proxy)); 1097 new keyboard::KeyboardController(proxy));
1104 } 1098 }
1105 } 1099 }
1106 1100
1107 void Shell::InitRootWindow(aura::Window* root_window) { 1101 void Shell::InitRootWindow(aura::Window* root_window) {
1108 DCHECK(activation_client_); 1102 DCHECK(activation_client_);
1109 DCHECK(visibility_controller_.get()); 1103 DCHECK(visibility_controller_.get());
1110 DCHECK(drag_drop_controller_.get()); 1104 DCHECK(drag_drop_controller_.get());
1111 1105
1112 aura::client::SetFocusClient(root_window, focus_client_.get()); 1106 aura::client::SetFocusClient(root_window, focus_client_.get());
1113 input_method_filter_->SetInputMethodPropertyInRootWindow(root_window);
1114 aura::client::SetActivationClient(root_window, activation_client_); 1107 aura::client::SetActivationClient(root_window, activation_client_);
1115 ::wm::FocusController* focus_controller = 1108 ::wm::FocusController* focus_controller =
1116 static_cast< ::wm::FocusController*>(activation_client_); 1109 static_cast< ::wm::FocusController*>(activation_client_);
1117 root_window->AddPreTargetHandler(focus_controller); 1110 root_window->AddPreTargetHandler(focus_controller);
1118 aura::client::SetVisibilityClient(root_window, visibility_controller_.get()); 1111 aura::client::SetVisibilityClient(root_window, visibility_controller_.get());
1119 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get()); 1112 aura::client::SetDragDropClient(root_window, drag_drop_controller_.get());
1120 aura::client::SetScreenPositionClient(root_window, 1113 aura::client::SetScreenPositionClient(root_window,
1121 screen_position_controller_.get()); 1114 screen_position_controller_.get());
1122 aura::client::SetCursorClient(root_window, &cursor_manager_); 1115 aura::client::SetCursorClient(root_window, &cursor_manager_);
1123 aura::client::SetTooltipClient(root_window, tooltip_controller_.get()); 1116 aura::client::SetTooltipClient(root_window, tooltip_controller_.get());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1177 //////////////////////////////////////////////////////////////////////////////// 1170 ////////////////////////////////////////////////////////////////////////////////
1178 // Shell, aura::client::ActivationChangeObserver implementation: 1171 // Shell, aura::client::ActivationChangeObserver implementation:
1179 1172
1180 void Shell::OnWindowActivated(aura::Window* gained_active, 1173 void Shell::OnWindowActivated(aura::Window* gained_active,
1181 aura::Window* lost_active) { 1174 aura::Window* lost_active) {
1182 if (gained_active) 1175 if (gained_active)
1183 target_root_window_ = gained_active->GetRootWindow(); 1176 target_root_window_ = gained_active->GetRootWindow();
1184 } 1177 }
1185 1178
1186 } // namespace ash 1179 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698