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 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 aura::Window* lost_active) { | 1232 aura::Window* lost_active) { |
1233 if (gained_active) | 1233 if (gained_active) |
1234 root_window_for_new_windows_ = gained_active->GetRootWindow(); | 1234 root_window_for_new_windows_ = gained_active->GetRootWindow(); |
1235 } | 1235 } |
1236 | 1236 |
1237 void Shell::OnSessionStateChanged(session_manager::SessionState state) { | 1237 void Shell::OnSessionStateChanged(session_manager::SessionState state) { |
1238 // Initialize the shelf when a session becomes active. It's safe to do this | 1238 // Initialize the shelf when a session becomes active. It's safe to do this |
1239 // multiple times (e.g. initial login vs. multiprofile add session). | 1239 // multiple times (e.g. initial login vs. multiprofile add session). |
1240 if (state == session_manager::SessionState::ACTIVE) { | 1240 if (state == session_manager::SessionState::ACTIVE) { |
1241 InitializeShelf(); | 1241 InitializeShelf(); |
| 1242 } |
| 1243 // Recreates keyboard on user profile change, to refresh keyboard |
| 1244 // extensions with the new profile and the extensions call proper IME. |
| 1245 // |LOGGED_IN_NOT_ACTIVE| is needed so that the virtual keyboard works on |
| 1246 // supervised user creation. crbug.com/712873 |
| 1247 // |ACTIVE| is also needed for guest user workflow. |
| 1248 if ((state == session_manager::SessionState::LOGGED_IN_NOT_ACTIVE || |
| 1249 state == session_manager::SessionState::ACTIVE) && |
| 1250 keyboard::IsKeyboardEnabled()) { |
1242 if (GetAshConfig() != Config::MASH) { | 1251 if (GetAshConfig() != Config::MASH) { |
1243 // Recreate the keyboard after initial login and after multiprofile login. | 1252 // Recreate the keyboard after initial login and after multiprofile login. |
1244 CreateKeyboard(); | 1253 CreateKeyboard(); |
1245 } | 1254 } |
1246 } | 1255 } |
1247 } | 1256 } |
1248 | 1257 |
1249 void Shell::OnLoginStatusChanged(LoginStatus login_status) { | 1258 void Shell::OnLoginStatusChanged(LoginStatus login_status) { |
1250 UpdateAfterLoginStatusChange(login_status); | 1259 UpdateAfterLoginStatusChange(login_status); |
1251 } | 1260 } |
(...skipping 29 matching lines...) Expand all Loading... |
1281 void Shell::OnPrefServiceInitialized( | 1290 void Shell::OnPrefServiceInitialized( |
1282 std::unique_ptr<::PrefService> pref_service) { | 1291 std::unique_ptr<::PrefService> pref_service) { |
1283 if (!instance_) | 1292 if (!instance_) |
1284 return; | 1293 return; |
1285 // |pref_service_| is null if can't connect to Chrome (as happens when | 1294 // |pref_service_| is null if can't connect to Chrome (as happens when |
1286 // running mash outside of chrome --mash and chrome isn't built). | 1295 // running mash outside of chrome --mash and chrome isn't built). |
1287 pref_service_ = std::move(pref_service); | 1296 pref_service_ = std::move(pref_service); |
1288 } | 1297 } |
1289 | 1298 |
1290 } // namespace ash | 1299 } // namespace ash |
OLD | NEW |