1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/login/fake_user_manager.h"
7 #include "chrome/browser/chromeos/login/fake_supervised_user_manager.h"
11 // As defined in /chromeos/dbus/cryptohome_client.cc.
12 static const char kUserIdHashSuffix[] = "-hash";
18 FakeUserManager::FakeUserManager()
19 : supervised_user_manager_(new FakeSupervisedUserManager),
20 primary_user_(NULL) {}
22 FakeUserManager::~FakeUserManager() {
23 // Can't use STLDeleteElements because of the private destructor of User.
24 for (UserList::iterator it = user_list_.begin(); it != user_list_.end();
25 it = user_list_.erase(it)) {
30 void FakeUserManager::AddUser(const std::string& email) {
31 User* user = User::CreateRegularUser(email);
32 user->set_username_hash(email + kUserIdHashSuffix);
33 user->SetStubImage(User::kProfileImageIndex, false);
34 user_list_.push_back(user);
37 void FakeUserManager::AddKioskAppUser(const std::string& kiosk_app_username) {
38 User* user = User::CreateKioskAppUser(kiosk_app_username);
39 user->set_username_hash(kiosk_app_username + kUserIdHashSuffix);
40 user_list_.push_back(user);
43 void FakeUserManager::LoginUser(const std::string& email) {
44 UserLoggedIn(email, email + kUserIdHashSuffix, false);
47 const UserList& FakeUserManager::GetUsers() const {
51 UserList FakeUserManager::GetUsersAdmittedForMultiProfile() const {
53 for (UserList::const_iterator it = user_list_.begin();
54 it != user_list_.end();
56 if ((*it)->GetType() == User::USER_TYPE_REGULAR && !(*it)->is_logged_in())
57 result.push_back(*it);
62 const UserList& FakeUserManager::GetLoggedInUsers() const {
63 return logged_in_users_;
66 void FakeUserManager::UserLoggedIn(const std::string& email,
67 const std::string& username_hash,
68 bool browser_restart) {
69 for (UserList::const_iterator it = user_list_.begin();
70 it != user_list_.end();
72 if ((*it)->username_hash() == username_hash) {
73 (*it)->set_is_logged_in(true);
74 logged_in_users_.push_back(*it);
83 User* FakeUserManager::GetActiveUserInternal() const {
84 if (user_list_.size()) {
85 if (!active_user_id_.empty()) {
86 for (UserList::const_iterator it = user_list_.begin();
87 it != user_list_.end(); ++it) {
88 if ((*it)->email() == active_user_id_)
97 const User* FakeUserManager::GetActiveUser() const {
98 return GetActiveUserInternal();
101 User* FakeUserManager::GetActiveUser() {
102 return GetActiveUserInternal();
105 void FakeUserManager::SwitchActiveUser(const std::string& email) {
106 active_user_id_ = email;
109 void FakeUserManager::SaveUserDisplayName(
110 const std::string& username,
111 const string16& display_name) {
112 for (UserList::iterator it = user_list_.begin();
113 it != user_list_.end(); ++it) {
114 if ((*it)->email() == username) {
115 (*it)->set_display_name(display_name);
121 void FakeUserManager::UpdateUserAccountData(const std::string&, const string16&,
122 const std::string&) {
126 SupervisedUserManager* FakeUserManager::GetSupervisedUserManager() {
127 return supervised_user_manager_.get();
130 UserImageManager* FakeUserManager::GetUserImageManager() {
134 const UserList& FakeUserManager::GetLRULoggedInUsers() {
138 UserList FakeUserManager::GetUnlockUsers() const {
142 const std::string& FakeUserManager::GetOwnerEmail() {
146 bool FakeUserManager::IsKnownUser(const std::string& email) const {
150 const User* FakeUserManager::FindUser(const std::string& email) const {
154 const User* FakeUserManager::GetLoggedInUser() const {
158 User* FakeUserManager::GetLoggedInUser() {
162 const User* FakeUserManager::GetPrimaryUser() const {
163 return primary_user_;
166 User* FakeUserManager::GetUserByProfile(Profile* profile) const {
167 const std::string& user_name = profile->GetProfileName();
168 for (UserList::const_iterator it = user_list_.begin();
169 it != user_list_.end(); ++it) {
170 if ((*it)->email() == user_name)
173 return primary_user_;
176 string16 FakeUserManager::GetUserDisplayName(
177 const std::string& username) const {
181 std::string FakeUserManager::GetUserDisplayEmail(
182 const std::string& username) const {
183 return std::string();
186 bool FakeUserManager::IsCurrentUserOwner() const {
190 bool FakeUserManager::IsCurrentUserNew() const {
194 bool FakeUserManager::IsCurrentUserNonCryptohomeDataEphemeral() const {
198 bool FakeUserManager::CanCurrentUserLock() const {
202 bool FakeUserManager::IsUserLoggedIn() const {
203 return logged_in_users_.size() > 0;
206 bool FakeUserManager::IsLoggedInAsRegularUser() const {
210 bool FakeUserManager::IsLoggedInAsDemoUser() const {
214 bool FakeUserManager::IsLoggedInAsPublicAccount() const {
218 bool FakeUserManager::IsLoggedInAsGuest() const {
222 bool FakeUserManager::IsLoggedInAsLocallyManagedUser() const {
226 bool FakeUserManager::IsLoggedInAsKioskApp() const {
227 const User* active_user = GetActiveUser();
229 active_user->GetType() == User::USER_TYPE_KIOSK_APP :
233 bool FakeUserManager::IsLoggedInAsStub() const {
237 bool FakeUserManager::IsSessionStarted() const {
241 bool FakeUserManager::UserSessionsRestored() const {
245 bool FakeUserManager::HasBrowserRestarted() const {
249 bool FakeUserManager::IsUserNonCryptohomeDataEphemeral(
250 const std::string& email) const {
254 UserFlow* FakeUserManager::GetCurrentUserFlow() const {
258 UserFlow* FakeUserManager::GetUserFlow(const std::string& email) const {
262 bool FakeUserManager::GetAppModeChromeClientOAuthInfo(
263 std::string* chrome_client_id,
264 std::string* chrome_client_secret) {
268 bool FakeUserManager::AreLocallyManagedUsersAllowed() const {
272 base::FilePath FakeUserManager::GetUserProfileDir(
273 const std::string&email) const {
274 return base::FilePath();
277 void FakeUserManager::RespectLocalePreference(Profile* profile,
278 const User* user) const {
281 } // namespace chromeos