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 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "ash/display/screen_position_controller.h" | 24 #include "ash/display/screen_position_controller.h" |
25 #include "ash/display/window_tree_host_manager.h" | 25 #include "ash/display/window_tree_host_manager.h" |
26 #include "ash/drag_drop/drag_drop_controller.h" | 26 #include "ash/drag_drop/drag_drop_controller.h" |
27 #include "ash/first_run/first_run_helper_impl.h" | 27 #include "ash/first_run/first_run_helper_impl.h" |
28 #include "ash/focus_cycler.h" | 28 #include "ash/focus_cycler.h" |
29 #include "ash/frame/custom_frame_view_ash.h" | 29 #include "ash/frame/custom_frame_view_ash.h" |
30 #include "ash/gpu_support.h" | 30 #include "ash/gpu_support.h" |
31 #include "ash/high_contrast/high_contrast_controller.h" | 31 #include "ash/high_contrast/high_contrast_controller.h" |
32 #include "ash/host/ash_window_tree_host_init_params.h" | 32 #include "ash/host/ash_window_tree_host_init_params.h" |
33 #include "ash/ime/input_method_event_handler.h" | 33 #include "ash/ime/input_method_event_handler.h" |
| 34 #include "ash/keyboard/keyboard_ui.h" |
34 #include "ash/keyboard_uma_event_filter.h" | 35 #include "ash/keyboard_uma_event_filter.h" |
35 #include "ash/magnifier/magnification_controller.h" | 36 #include "ash/magnifier/magnification_controller.h" |
36 #include "ash/magnifier/partial_magnification_controller.h" | 37 #include "ash/magnifier/partial_magnification_controller.h" |
37 #include "ash/media_delegate.h" | 38 #include "ash/media_delegate.h" |
38 #include "ash/new_window_delegate.h" | 39 #include "ash/new_window_delegate.h" |
39 #include "ash/root_window_controller.h" | 40 #include "ash/root_window_controller.h" |
40 #include "ash/session/session_state_delegate.h" | 41 #include "ash/session/session_state_delegate.h" |
41 #include "ash/shelf/app_list_shelf_item_delegate.h" | 42 #include "ash/shelf/app_list_shelf_item_delegate.h" |
42 #include "ash/shelf/shelf_delegate.h" | 43 #include "ash/shelf/shelf_delegate.h" |
43 #include "ash/shelf/shelf_item_delegate.h" | 44 #include "ash/shelf/shelf_item_delegate.h" |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 (*iter)->shelf()->CreateShelf(); | 438 (*iter)->shelf()->CreateShelf(); |
438 } | 439 } |
439 | 440 |
440 void Shell::OnShelfCreatedForRootWindow(aura::Window* root_window) { | 441 void Shell::OnShelfCreatedForRootWindow(aura::Window* root_window) { |
441 FOR_EACH_OBSERVER(ShellObserver, | 442 FOR_EACH_OBSERVER(ShellObserver, |
442 observers_, | 443 observers_, |
443 OnShelfCreatedForRootWindow(root_window)); | 444 OnShelfCreatedForRootWindow(root_window)); |
444 } | 445 } |
445 | 446 |
446 void Shell::CreateKeyboard() { | 447 void Shell::CreateKeyboard() { |
| 448 if (in_mus_) |
| 449 return; |
447 // TODO(bshe): Primary root window controller may not be the controller to | 450 // TODO(bshe): Primary root window controller may not be the controller to |
448 // attach virtual keyboard. See http://crbug.com/303429 | 451 // attach virtual keyboard. See http://crbug.com/303429 |
449 InitKeyboard(); | 452 InitKeyboard(); |
450 GetPrimaryRootWindowController()-> | 453 GetPrimaryRootWindowController()-> |
451 ActivateKeyboard(keyboard::KeyboardController::GetInstance()); | 454 ActivateKeyboard(keyboard::KeyboardController::GetInstance()); |
452 } | 455 } |
453 | 456 |
454 void Shell::DeactivateKeyboard() { | 457 void Shell::DeactivateKeyboard() { |
| 458 keyboard_ui_->Hide(); |
| 459 if (in_mus_) |
| 460 return; |
455 if (keyboard::KeyboardController::GetInstance()) { | 461 if (keyboard::KeyboardController::GetInstance()) { |
456 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 462 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
457 for (RootWindowControllerList::iterator iter = controllers.begin(); | 463 for (RootWindowControllerList::iterator iter = controllers.begin(); |
458 iter != controllers.end(); ++iter) { | 464 iter != controllers.end(); ++iter) { |
459 (*iter)->DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); | 465 (*iter)->DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); |
460 } | 466 } |
461 } | 467 } |
462 keyboard::KeyboardController::ResetInstance(nullptr); | 468 keyboard::KeyboardController::ResetInstance(nullptr); |
463 } | 469 } |
464 | 470 |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 | 840 |
835 // Ensure that DBusThreadManager outlives this Shell. | 841 // Ensure that DBusThreadManager outlives this Shell. |
836 DCHECK(chromeos::DBusThreadManager::IsInitialized()); | 842 DCHECK(chromeos::DBusThreadManager::IsInitialized()); |
837 #endif | 843 #endif |
838 | 844 |
839 DCHECK(instance_ == this); | 845 DCHECK(instance_ == this); |
840 instance_ = nullptr; | 846 instance_ = nullptr; |
841 } | 847 } |
842 | 848 |
843 void Shell::Init(const ShellInitParams& init_params) { | 849 void Shell::Init(const ShellInitParams& init_params) { |
| 850 in_mus_ = init_params.in_mus; |
| 851 |
844 delegate_->PreInit(); | 852 delegate_->PreInit(); |
845 bool display_initialized = display_manager_->InitFromCommandLine(); | 853 bool display_initialized = display_manager_->InitFromCommandLine(); |
846 | 854 |
847 display_configuration_controller_.reset(new DisplayConfigurationController( | 855 display_configuration_controller_.reset(new DisplayConfigurationController( |
848 display_manager_.get(), window_tree_host_manager_.get())); | 856 display_manager_.get(), window_tree_host_manager_.get())); |
849 | 857 |
850 #if defined(OS_CHROMEOS) | 858 #if defined(OS_CHROMEOS) |
851 display_configurator_->Init(!gpu_support_->IsPanelFittingDisabled()); | 859 display_configurator_->Init(!gpu_support_->IsPanelFittingDisabled()); |
852 | 860 |
853 // The DBusThreadManager must outlive this Shell. See the DCHECK in ~Shell. | 861 // The DBusThreadManager must outlive this Shell. See the DCHECK in ~Shell. |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1038 base::Bind(&SystemTrayDelegate::SignOut, | 1046 base::Bind(&SystemTrayDelegate::SignOut, |
1039 base::Unretained(system_tray_delegate_.get())))); | 1047 base::Unretained(system_tray_delegate_.get())))); |
1040 | 1048 |
1041 // Create TouchTransformerController before | 1049 // Create TouchTransformerController before |
1042 // WindowTreeHostManager::InitDisplays() | 1050 // WindowTreeHostManager::InitDisplays() |
1043 // since TouchTransformerController listens on | 1051 // since TouchTransformerController listens on |
1044 // WindowTreeHostManager::Observer::OnDisplaysInitialized(). | 1052 // WindowTreeHostManager::Observer::OnDisplaysInitialized(). |
1045 touch_transformer_controller_.reset(new TouchTransformerController()); | 1053 touch_transformer_controller_.reset(new TouchTransformerController()); |
1046 #endif // defined(OS_CHROMEOS) | 1054 #endif // defined(OS_CHROMEOS) |
1047 | 1055 |
| 1056 keyboard_ui_ = init_params.keyboard_factory.is_null() |
| 1057 ? KeyboardUI::Create() |
| 1058 : init_params.keyboard_factory.Run(); |
| 1059 |
1048 window_tree_host_manager_->InitHosts(); | 1060 window_tree_host_manager_->InitHosts(); |
1049 | 1061 |
1050 #if defined(OS_CHROMEOS) | 1062 #if defined(OS_CHROMEOS) |
1051 // Needs to be created after InitDisplays() since it may cause the virtual | 1063 // Needs to be created after InitDisplays() since it may cause the virtual |
1052 // keyboard to be deployed. | 1064 // keyboard to be deployed. |
1053 virtual_keyboard_controller_.reset(new VirtualKeyboardController); | 1065 virtual_keyboard_controller_.reset(new VirtualKeyboardController); |
1054 #endif // defined(OS_CHROMEOS) | 1066 #endif // defined(OS_CHROMEOS) |
1055 | 1067 |
1056 // It needs to be created after RootWindowController has been created | 1068 // It needs to be created after RootWindowController has been created |
1057 // (which calls OnWindowResized has been called, otherwise the | 1069 // (which calls OnWindowResized has been called, otherwise the |
(...skipping 25 matching lines...) Expand all Loading... |
1083 // order to create mirror window. Run it after the main message loop | 1095 // order to create mirror window. Run it after the main message loop |
1084 // is started. | 1096 // is started. |
1085 display_manager_->CreateMirrorWindowAsyncIfAny(); | 1097 display_manager_->CreateMirrorWindowAsyncIfAny(); |
1086 | 1098 |
1087 FOR_EACH_OBSERVER(ShellObserver, observers_, OnShellInitialized()); | 1099 FOR_EACH_OBSERVER(ShellObserver, observers_, OnShellInitialized()); |
1088 | 1100 |
1089 user_metrics_recorder_->OnShellInitialized(); | 1101 user_metrics_recorder_->OnShellInitialized(); |
1090 } | 1102 } |
1091 | 1103 |
1092 void Shell::InitKeyboard() { | 1104 void Shell::InitKeyboard() { |
| 1105 if (in_mus_) |
| 1106 return; |
| 1107 |
1093 if (keyboard::IsKeyboardEnabled()) { | 1108 if (keyboard::IsKeyboardEnabled()) { |
1094 if (keyboard::KeyboardController::GetInstance()) { | 1109 if (keyboard::KeyboardController::GetInstance()) { |
1095 RootWindowControllerList controllers = GetAllRootWindowControllers(); | 1110 RootWindowControllerList controllers = GetAllRootWindowControllers(); |
1096 for (RootWindowControllerList::iterator iter = controllers.begin(); | 1111 for (RootWindowControllerList::iterator iter = controllers.begin(); |
1097 iter != controllers.end(); ++iter) { | 1112 iter != controllers.end(); ++iter) { |
1098 (*iter)->DeactivateKeyboard( | 1113 (*iter)->DeactivateKeyboard( |
1099 keyboard::KeyboardController::GetInstance()); | 1114 keyboard::KeyboardController::GetInstance()); |
1100 } | 1115 } |
1101 } | 1116 } |
1102 keyboard::KeyboardController::ResetInstance( | 1117 keyboard::KeyboardController::ResetInstance( |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 | 1185 |
1171 void Shell::OnWindowActivated( | 1186 void Shell::OnWindowActivated( |
1172 aura::client::ActivationChangeObserver::ActivationReason reason, | 1187 aura::client::ActivationChangeObserver::ActivationReason reason, |
1173 aura::Window* gained_active, | 1188 aura::Window* gained_active, |
1174 aura::Window* lost_active) { | 1189 aura::Window* lost_active) { |
1175 if (gained_active) | 1190 if (gained_active) |
1176 target_root_window_ = gained_active->GetRootWindow(); | 1191 target_root_window_ = gained_active->GetRootWindow(); |
1177 } | 1192 } |
1178 | 1193 |
1179 } // namespace ash | 1194 } // namespace ash |
OLD | NEW |