Index: ash/shell.cc |
diff --git a/ash/shell.cc b/ash/shell.cc |
index e25182f0e04553a943532b1d31296948b263396a..3a4886707f6e86c8e0d4d3a9af5d23bb3f5972f0 100644 |
--- a/ash/shell.cc |
+++ b/ash/shell.cc |
@@ -23,6 +23,7 @@ |
#include "ash/display/mouse_cursor_event_filter.h" |
#include "ash/display/resolution_notification_controller.h" |
#include "ash/display/screen_position_controller.h" |
+#include "ash/display/virtual_keyboard_window_controller.h" |
#include "ash/drag_drop/drag_drop_controller.h" |
#include "ash/first_run/first_run_helper_impl.h" |
#include "ash/focus_cycler.h" |
@@ -337,16 +338,14 @@ void Shell::SetDisplayWorkAreaInsets(Window* contains, |
} |
void Shell::OnLoginStateChanged(user::LoginStatus status) { |
- if (status != user::LOGGED_IN_NONE) { |
- // TODO(bshe): Primary root window controller may not be the controller to |
- // attach virtual keyboard. See http://crbug.com/303429 |
- InitKeyboard(GetPrimaryRootWindowController()); |
- GetPrimaryRootWindowController()->ActivateKeyboard( |
- keyboard_controller_.get()); |
- } |
FOR_EACH_OBSERVER(ShellObserver, observers_, OnLoginStateChanged(status)); |
} |
+void Shell::OnLoginUserProfilePrepared() { |
+ CreateLauncher(); |
+ CreateKeyboard(); |
+} |
+ |
void Shell::UpdateAfterLoginStatusChange(user::LoginStatus status) { |
RootWindowControllerList controllers = GetAllRootWindowControllers(); |
for (RootWindowControllerList::iterator iter = controllers.begin(); |
@@ -381,6 +380,19 @@ void Shell::CreateLauncher() { |
(*iter)->shelf()->CreateLauncher(); |
} |
+void Shell::CreateKeyboard() { |
+ // TODO(bshe): Primary root window controller may not be the controller to |
+ // attach virtual keyboard. See http://crbug.com/303429 |
+ InitKeyboard(); |
+ if (keyboard::IsKeyboardUsabilityTestEnabled()) { |
+ display_controller()->virtual_keyboard_window_controller()-> |
+ ActivateKeyboard(keyboard_controller_.get()); |
+ } else { |
+ GetPrimaryRootWindowController()-> |
+ ActivateKeyboard(keyboard_controller_.get()); |
+ } |
+} |
+ |
void Shell::ShowLauncher() { |
RootWindowControllerList controllers = GetAllRootWindowControllers(); |
for (RootWindowControllerList::iterator iter = controllers.begin(); |
@@ -694,7 +706,7 @@ void Shell::Init() { |
CommandLine* command_line = CommandLine::ForCurrentProcess(); |
delegate_->PreInit(); |
- if (command_line->HasSwitch(keyboard::switches::kKeyboardUsabilityTest)) { |
+ if (keyboard::IsKeyboardUsabilityTestEnabled()) { |
display_manager_->SetSecondDisplayMode( |
internal::DisplayManager::VIRTUAL_KEYBOARD); |
} |
@@ -923,7 +935,7 @@ void Shell::Init() { |
weak_display_manager_factory_->GetWeakPtr())); |
} |
-void Shell::InitKeyboard(internal::RootWindowController* root) { |
+void Shell::InitKeyboard() { |
if (keyboard::IsKeyboardEnabled()) { |
if (keyboard_controller_.get()) { |
RootWindowControllerList controllers = GetAllRootWindowControllers(); |