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

Side by Side Diff: ash/shell.cc

Issue 2852403002: Make virtual keyboard work on supervised user creation (Closed)
Patch Set: Created 3 years, 7 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
« no previous file with comments | « ash/shell.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include <utility> 9 #include <utility>
10 10
(...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 WmWindow* gained_active_wm = WmWindow::Get(gained_active); 1208 WmWindow* gained_active_wm = WmWindow::Get(gained_active);
1209 if (gained_active_wm) 1209 if (gained_active_wm)
1210 root_window_for_new_windows_ = gained_active_wm->GetRootWindow(); 1210 root_window_for_new_windows_ = gained_active_wm->GetRootWindow();
1211 } 1211 }
1212 1212
1213 void Shell::OnSessionStateChanged(session_manager::SessionState state) { 1213 void Shell::OnSessionStateChanged(session_manager::SessionState state) {
1214 // Create the shelf when a session becomes active. It's safe to do this 1214 // Create the shelf when a session becomes active. It's safe to do this
1215 // multiple times (e.g. initial login vs. multiprofile add session). 1215 // multiple times (e.g. initial login vs. multiprofile add session).
1216 if (state == session_manager::SessionState::ACTIVE) { 1216 if (state == session_manager::SessionState::ACTIVE) {
1217 CreateShelfView(); 1217 CreateShelfView();
1218 }
1218 1219
1220 // The keyboard is recreated on user profile change, so to refresh keyboard
1221 // extensions with the new profile and proper IME engine is called from them.
1222 // |LOGGED_IN_NOT_ACTIVE| is needed so that the virtual keyboard works on
1223 // supervised user creation. crbug.com/712873
1224 // The previous state is checked to avoid needless |CreateKeyboard| call.
1225 if ((state == session_manager::SessionState::LOGGED_IN_NOT_ACTIVE ||
1226 state == session_manager::SessionState::ACTIVE) &&
1227 !(previous_state_ ==
1228 session_manager::SessionState::LOGGED_IN_NOT_ACTIVE ||
1229 previous_state_ == session_manager::SessionState::ACTIVE)) {
xiyuan 2017/05/12 17:30:03 How about using KeyboardController::GetInstance()
oka 2017/06/07 12:42:37 Updated.
1219 if (GetAshConfig() != Config::MASH) { 1230 if (GetAshConfig() != Config::MASH) {
Alexander Alekseev 2017/05/12 04:05:21 Did you verify that multiprofile mode works with t
oka 2017/06/07 12:42:37 I manually confirmed keyboard works after multipro
1220 // Recreate the keyboard after initial login and after multiprofile login.
1221 CreateKeyboard(); 1231 CreateKeyboard();
1222 } 1232 }
1223 } 1233 }
1234 previous_state_ = state;
1224 } 1235 }
1225 1236
1226 void Shell::OnLoginStatusChanged(LoginStatus login_status) { 1237 void Shell::OnLoginStatusChanged(LoginStatus login_status) {
1227 UpdateAfterLoginStatusChange(login_status); 1238 UpdateAfterLoginStatusChange(login_status);
1228 } 1239 }
1229 1240
1230 void Shell::OnLockStateChanged(bool locked) { 1241 void Shell::OnLockStateChanged(bool locked) {
1231 #ifndef NDEBUG 1242 #ifndef NDEBUG
1232 // Make sure that there is no system modal in Lock layer when unlocked. 1243 // Make sure that there is no system modal in Lock layer when unlocked.
1233 if (!locked) { 1244 if (!locked) {
1234 aura::Window::Windows containers = wm::GetContainersFromAllRootWindows( 1245 aura::Window::Windows containers = wm::GetContainersFromAllRootWindows(
1235 kShellWindowId_LockSystemModalContainer, GetPrimaryRootWindow()); 1246 kShellWindowId_LockSystemModalContainer, GetPrimaryRootWindow());
1236 for (aura::Window* container : containers) 1247 for (aura::Window* container : containers)
1237 DCHECK(container->children().empty()); 1248 DCHECK(container->children().empty());
1238 } 1249 }
1239 #endif 1250 #endif
1240 } 1251 }
1241 1252
1242 void Shell::OnPrefServiceInitialized( 1253 void Shell::OnPrefServiceInitialized(
1243 std::unique_ptr<::PrefService> pref_service) { 1254 std::unique_ptr<::PrefService> pref_service) {
1244 if (!instance_) 1255 if (!instance_)
1245 return; 1256 return;
1246 // |pref_service_| is null if can't connect to Chrome (as happens when 1257 // |pref_service_| is null if can't connect to Chrome (as happens when
1247 // running mash outside of chrome --mash and chrome isn't built). 1258 // running mash outside of chrome --mash and chrome isn't built).
1248 pref_service_ = std::move(pref_service); 1259 pref_service_ = std::move(pref_service);
1249 } 1260 }
1250 1261
1251 } // namespace ash 1262 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shell.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698