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

Side by Side Diff: chrome/browser/chromeos/login/users/user_manager_impl.cc

Issue 341453002: [multi-profiles] Allow bringing up sign in UI even if all users are restricted per their policies (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 6 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/users/user_manager_impl.h" 5 #include "chrome/browser/chromeos/login/users/user_manager_impl.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <set> 8 #include <set>
9 9
10 #include "ash/multi_profile_uma.h" 10 #include "ash/multi_profile_uma.h"
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 } 317 }
318 318
319 UserList UserManagerImpl::GetUsersAdmittedForMultiProfile() const { 319 UserList UserManagerImpl::GetUsersAdmittedForMultiProfile() const {
320 // Supervised users are not allowed to use multi-profiles. 320 // Supervised users are not allowed to use multi-profiles.
321 if (logged_in_users_.size() == 1 && 321 if (logged_in_users_.size() == 1 &&
322 GetPrimaryUser()->GetType() != User::USER_TYPE_REGULAR) { 322 GetPrimaryUser()->GetType() != User::USER_TYPE_REGULAR) {
323 return UserList(); 323 return UserList();
324 } 324 }
325 325
326 UserList result; 326 UserList result;
327 int num_users_allowed = 0;
328 const UserList& users = GetUsers(); 327 const UserList& users = GetUsers();
329 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { 328 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) {
330 if ((*it)->GetType() == User::USER_TYPE_REGULAR && !(*it)->is_logged_in()) { 329 if ((*it)->GetType() == User::USER_TYPE_REGULAR && !(*it)->is_logged_in()) {
331 MultiProfileUserController::UserAllowedInSessionResult check = 330 MultiProfileUserController::UserAllowedInSessionResult check =
332 multi_profile_user_controller_-> 331 multi_profile_user_controller_->
333 IsUserAllowedInSession((*it)->email()); 332 IsUserAllowedInSession((*it)->email());
334 if (check == MultiProfileUserController:: 333 if (check == MultiProfileUserController::
335 NOT_ALLOWED_PRIMARY_USER_POLICY_FORBIDS) { 334 NOT_ALLOWED_PRIMARY_USER_POLICY_FORBIDS) {
336 return UserList(); 335 return UserList();
337 } 336 }
338 337
339 // Users with a policy that prevents them being added to a session will be 338 // Users with a policy that prevents them being added to a session will be
340 // shown in login UI but will be grayed out. 339 // shown in login UI but will be grayed out.
341 // Same applies to owner account (see http://crbug.com/385034). 340 // Same applies to owner account (see http://crbug.com/385034).
342 if (check == MultiProfileUserController::ALLOWED || 341 if (check == MultiProfileUserController::ALLOWED ||
343 check == MultiProfileUserController::NOT_ALLOWED_POLICY_FORBIDS || 342 check == MultiProfileUserController::NOT_ALLOWED_POLICY_FORBIDS ||
344 check == MultiProfileUserController::NOT_ALLOWED_OWNER_AS_SECONDARY) { 343 check == MultiProfileUserController::NOT_ALLOWED_OWNER_AS_SECONDARY) {
345 result.push_back(*it); 344 result.push_back(*it);
346 if (check == MultiProfileUserController::ALLOWED)
347 num_users_allowed++;
348 } 345 }
349 } 346 }
350 } 347 }
351 348
352 // We only show multi-profiles sign in UI if there's at least one user that
353 // is allowed to be added to the session.
354 if (!num_users_allowed)
355 result.clear();
356
357 return result; 349 return result;
358 } 350 }
359 351
360 const UserList& UserManagerImpl::GetLoggedInUsers() const { 352 const UserList& UserManagerImpl::GetLoggedInUsers() const {
361 return logged_in_users_; 353 return logged_in_users_;
362 } 354 }
363 355
364 const UserList& UserManagerImpl::GetLRULoggedInUsers() { 356 const UserList& UserManagerImpl::GetLRULoggedInUsers() {
365 // If there is no user logged in, we return the active user as the only one. 357 // If there is no user logged in, we return the active user as the only one.
366 if (lru_logged_in_users_.empty() && active_user_) { 358 if (lru_logged_in_users_.empty() && active_user_) {
(...skipping 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after
2108 } 2100 }
2109 2101
2110 void UserManagerImpl::DeleteUser(User* user) { 2102 void UserManagerImpl::DeleteUser(User* user) {
2111 const bool is_active_user = (user == active_user_); 2103 const bool is_active_user = (user == active_user_);
2112 delete user; 2104 delete user;
2113 if (is_active_user) 2105 if (is_active_user)
2114 active_user_ = NULL; 2106 active_user_ = NULL;
2115 } 2107 }
2116 2108
2117 } // namespace chromeos 2109 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/users/user_manager.h ('k') | chrome/browser/resources/login/display_manager.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698