| OLD | NEW |
| 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 "components/user_manager/user_manager_base.h" | 5 #include "components/user_manager/user_manager_base.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 } | 670 } |
| 671 | 671 |
| 672 void UserManagerBase::RemoveSessionStateObserver( | 672 void UserManagerBase::RemoveSessionStateObserver( |
| 673 UserManager::UserSessionStateObserver* obs) { | 673 UserManager::UserSessionStateObserver* obs) { |
| 674 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 674 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 675 session_state_observer_list_.RemoveObserver(obs); | 675 session_state_observer_list_.RemoveObserver(obs); |
| 676 } | 676 } |
| 677 | 677 |
| 678 void UserManagerBase::NotifyLocalStateChanged() { | 678 void UserManagerBase::NotifyLocalStateChanged() { |
| 679 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 679 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 680 FOR_EACH_OBSERVER( | 680 for (auto& observer : observer_list_) |
| 681 UserManager::Observer, observer_list_, LocalStateChanged(this)); | 681 observer.LocalStateChanged(this); |
| 682 } | 682 } |
| 683 | 683 |
| 684 bool UserManagerBase::CanUserBeRemoved(const User* user) const { | 684 bool UserManagerBase::CanUserBeRemoved(const User* user) const { |
| 685 // Only regular and supervised users are allowed to be manually removed. | 685 // Only regular and supervised users are allowed to be manually removed. |
| 686 if (!user || !(user->HasGaiaAccount() || user->IsSupervised())) | 686 if (!user || !(user->HasGaiaAccount() || user->IsSupervised())) |
| 687 return false; | 687 return false; |
| 688 | 688 |
| 689 // Sanity check: we must not remove single user unless it's an enterprise | 689 // Sanity check: we must not remove single user unless it's an enterprise |
| 690 // device. This check may seem redundant at a first sight because | 690 // device. This check may seem redundant at a first sight because |
| 691 // this single user must be an owner and we perform special check later | 691 // this single user must be an owner and we perform special check later |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 } | 970 } |
| 971 ++it; | 971 ++it; |
| 972 } | 972 } |
| 973 } | 973 } |
| 974 OnUserRemoved(account_id); | 974 OnUserRemoved(account_id); |
| 975 return user; | 975 return user; |
| 976 } | 976 } |
| 977 | 977 |
| 978 void UserManagerBase::NotifyActiveUserChanged(const User* active_user) { | 978 void UserManagerBase::NotifyActiveUserChanged(const User* active_user) { |
| 979 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 979 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 980 FOR_EACH_OBSERVER(UserManager::UserSessionStateObserver, | 980 for (auto& observer : session_state_observer_list_) |
| 981 session_state_observer_list_, | 981 observer.ActiveUserChanged(active_user); |
| 982 ActiveUserChanged(active_user)); | |
| 983 } | 982 } |
| 984 | 983 |
| 985 void UserManagerBase::NotifyUserAddedToSession(const User* added_user, | 984 void UserManagerBase::NotifyUserAddedToSession(const User* added_user, |
| 986 bool user_switch_pending) { | 985 bool user_switch_pending) { |
| 987 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 986 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 988 FOR_EACH_OBSERVER(UserManager::UserSessionStateObserver, | 987 for (auto& observer : session_state_observer_list_) |
| 989 session_state_observer_list_, | 988 observer.UserAddedToSession(added_user); |
| 990 UserAddedToSession(added_user)); | |
| 991 } | 989 } |
| 992 | 990 |
| 993 void UserManagerBase::NotifyActiveUserHashChanged(const std::string& hash) { | 991 void UserManagerBase::NotifyActiveUserHashChanged(const std::string& hash) { |
| 994 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 992 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 995 FOR_EACH_OBSERVER(UserManager::UserSessionStateObserver, | 993 for (auto& observer : session_state_observer_list_) |
| 996 session_state_observer_list_, | 994 observer.ActiveUserHashChanged(hash); |
| 997 ActiveUserHashChanged(hash)); | |
| 998 } | 995 } |
| 999 | 996 |
| 1000 void UserManagerBase::ChangeUserChildStatus(User* user, bool is_child) { | 997 void UserManagerBase::ChangeUserChildStatus(User* user, bool is_child) { |
| 1001 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 998 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
| 1002 if (user->IsSupervised() == is_child) | 999 if (user->IsSupervised() == is_child) |
| 1003 return; | 1000 return; |
| 1004 user->SetIsChild(is_child); | 1001 user->SetIsChild(is_child); |
| 1005 SaveUserType(user->GetAccountId(), is_child | 1002 SaveUserType(user->GetAccountId(), is_child |
| 1006 ? user_manager::USER_TYPE_CHILD | 1003 ? user_manager::USER_TYPE_CHILD |
| 1007 : user_manager::USER_TYPE_REGULAR); | 1004 : user_manager::USER_TYPE_REGULAR); |
| 1008 FOR_EACH_OBSERVER(UserManager::UserSessionStateObserver, | 1005 for (auto& observer : session_state_observer_list_) |
| 1009 session_state_observer_list_, | 1006 observer.UserChangedChildStatus(user); |
| 1010 UserChangedChildStatus(user)); | |
| 1011 } | 1007 } |
| 1012 | 1008 |
| 1013 void UserManagerBase::Initialize() { | 1009 void UserManagerBase::Initialize() { |
| 1014 UserManager::Initialize(); | 1010 UserManager::Initialize(); |
| 1015 CallUpdateLoginState(); | 1011 CallUpdateLoginState(); |
| 1016 } | 1012 } |
| 1017 | 1013 |
| 1018 void UserManagerBase::CallUpdateLoginState() { | 1014 void UserManagerBase::CallUpdateLoginState() { |
| 1019 UpdateLoginState(active_user_, primary_user_, is_current_user_owner_); | 1015 UpdateLoginState(active_user_, primary_user_, is_current_user_owner_); |
| 1020 } | 1016 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1076 } | 1072 } |
| 1077 | 1073 |
| 1078 void UserManagerBase::DeleteUser(User* user) { | 1074 void UserManagerBase::DeleteUser(User* user) { |
| 1079 const bool is_active_user = (user == active_user_); | 1075 const bool is_active_user = (user == active_user_); |
| 1080 delete user; | 1076 delete user; |
| 1081 if (is_active_user) | 1077 if (is_active_user) |
| 1082 active_user_ = nullptr; | 1078 active_user_ = nullptr; |
| 1083 } | 1079 } |
| 1084 | 1080 |
| 1085 } // namespace user_manager | 1081 } // namespace user_manager |
| OLD | NEW |