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

Side by Side Diff: chrome/browser/chromeos/login/screens/user_selection_screen.cc

Issue 369893005: Implement new design for expanded public session pod design (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed ScreenLockerTest. Rebased. Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/chromeos/login/screens/user_selection_screen.h" 5 #include "chrome/browser/chromeos/login/screens/user_selection_screen.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 while (users_to_send.size() > kMaxUsers) 216 while (users_to_send.size() > kMaxUsers)
217 users_to_send.erase(users_to_send.begin() + kMaxUsers); 217 users_to_send.erase(users_to_send.begin() + kMaxUsers);
218 } else if (users_to_send.size() < kMaxUsers) { 218 } else if (users_to_send.size() < kMaxUsers) {
219 users_to_send.push_back(*it); 219 users_to_send.push_back(*it);
220 } 220 }
221 } 221 }
222 } 222 }
223 return users_to_send; 223 return users_to_send;
224 } 224 }
225 225
226 void UserSelectionScreen::SendUserList(bool animated) { 226 void UserSelectionScreen::SendUserList() {
227 base::ListValue users_list; 227 base::ListValue users_list;
228 const UserList& users = GetUsers(); 228 const UserList& users = GetUsers();
229 229
230 // TODO(nkostylev): Move to a separate method in UserManager. 230 // TODO(nkostylev): Move to a separate method in UserManager.
231 // http://crbug.com/230852 231 // http://crbug.com/230852
232 bool single_user = users.size() == 1; 232 bool single_user = users.size() == 1;
233 bool is_signin_to_add = LoginDisplayHostImpl::default_host() && 233 bool is_signin_to_add = LoginDisplayHostImpl::default_host() &&
234 UserManager::Get()->IsUserLoggedIn(); 234 UserManager::Get()->IsUserLoggedIn();
235 std::string owner; 235 std::string owner;
236 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner); 236 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner);
237 237
238 policy::BrowserPolicyConnectorChromeOS* connector = 238 policy::BrowserPolicyConnectorChromeOS* connector =
239 g_browser_process->platform_part()->browser_policy_connector_chromeos(); 239 g_browser_process->platform_part()->browser_policy_connector_chromeos();
240 bool is_enterprise_managed = connector->IsEnterpriseManaged(); 240 bool is_enterprise_managed = connector->IsEnterpriseManaged();
241 241
242 const UserList users_to_send = PrepareUserListForSending(users, 242 const UserList users_to_send = PrepareUserListForSending(users,
243 owner, 243 owner,
244 is_signin_to_add); 244 is_signin_to_add);
245 245
246 user_auth_type_map_.clear(); 246 user_auth_type_map_.clear();
247 247
248 for (UserList::const_iterator it = users_to_send.begin(); 248 for (UserList::const_iterator it = users_to_send.begin();
249 it != users_to_send.end(); 249 it != users_to_send.end();
250 ++it) { 250 ++it) {
251 const std::string& user_id = (*it)->email(); 251 const std::string& user_id = (*it)->email();
252 bool is_owner = (user_id == owner); 252 bool is_owner = (user_id == owner);
253 bool is_public_account = 253 const bool is_public_account =
254 ((*it)->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT); 254 ((*it)->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT);
255 ScreenlockBridge::LockHandler::AuthType initial_auth_type = 255 const ScreenlockBridge::LockHandler::AuthType initial_auth_type =
256 ShouldForceOnlineSignIn(*it) 256 is_public_account
257 ? ScreenlockBridge::LockHandler::ONLINE_SIGN_IN 257 ? ScreenlockBridge::LockHandler::EXPAND_THEN_USER_CLICK
258 : ScreenlockBridge::LockHandler::OFFLINE_PASSWORD; 258 : (ShouldForceOnlineSignIn(*it)
259 ? ScreenlockBridge::LockHandler::ONLINE_SIGN_IN
260 : ScreenlockBridge::LockHandler::OFFLINE_PASSWORD);
259 user_auth_type_map_[user_id] = initial_auth_type; 261 user_auth_type_map_[user_id] = initial_auth_type;
260 262
261 base::DictionaryValue* user_dict = new base::DictionaryValue(); 263 base::DictionaryValue* user_dict = new base::DictionaryValue();
262 FillUserDictionary( 264 FillUserDictionary(
263 *it, is_owner, is_signin_to_add, initial_auth_type, user_dict); 265 *it, is_owner, is_signin_to_add, initial_auth_type, user_dict);
264 bool signed_in = (*it)->is_logged_in(); 266 bool signed_in = (*it)->is_logged_in();
265 // Single user check here is necessary because owner info might not be 267 // Single user check here is necessary because owner info might not be
266 // available when running into login screen on first boot. 268 // available when running into login screen on first boot.
267 // See http://crosbug.com/12723 269 // See http://crosbug.com/12723
268 bool can_remove_user = 270 bool can_remove_user =
269 ((!single_user || is_enterprise_managed) && !user_id.empty() && 271 ((!single_user || is_enterprise_managed) && !user_id.empty() &&
270 !is_owner && !is_public_account && !signed_in && !is_signin_to_add); 272 !is_owner && !is_public_account && !signed_in && !is_signin_to_add);
271 user_dict->SetBoolean(kKeyCanRemove, can_remove_user); 273 user_dict->SetBoolean(kKeyCanRemove, can_remove_user);
272 users_list.Append(user_dict); 274 users_list.Append(user_dict);
273 } 275 }
274 276
275 handler_->LoadUsers(users_list, animated, show_guest_); 277 handler_->LoadUsers(users_list, show_guest_);
276 } 278 }
277 279
278 void UserSelectionScreen::HandleGetUsers() { 280 void UserSelectionScreen::HandleGetUsers() {
279 SendUserList(false); 281 SendUserList();
280 } 282 }
281 283
282 void UserSelectionScreen::SetAuthType( 284 void UserSelectionScreen::SetAuthType(
283 const std::string& username, 285 const std::string& username,
284 ScreenlockBridge::LockHandler::AuthType auth_type) { 286 ScreenlockBridge::LockHandler::AuthType auth_type) {
285 user_auth_type_map_[username] = auth_type; 287 user_auth_type_map_[username] = auth_type;
286 } 288 }
287 289
288 ScreenlockBridge::LockHandler::AuthType UserSelectionScreen::GetAuthType( 290 ScreenlockBridge::LockHandler::AuthType UserSelectionScreen::GetAuthType(
289 const std::string& username) const { 291 const std::string& username) const {
290 if (user_auth_type_map_.find(username) == user_auth_type_map_.end()) 292 if (user_auth_type_map_.find(username) == user_auth_type_map_.end())
291 return ScreenlockBridge::LockHandler::OFFLINE_PASSWORD; 293 return ScreenlockBridge::LockHandler::OFFLINE_PASSWORD;
292 return user_auth_type_map_.find(username)->second; 294 return user_auth_type_map_.find(username)->second;
293 } 295 }
294 296
295 } // namespace chromeos 297 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698