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 const User
* 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
);
38 void FakeUserManager::AddKioskAppUser(const std::string
& kiosk_app_username
) {
39 User
* user
= User::CreateKioskAppUser(kiosk_app_username
);
40 user
->set_username_hash(kiosk_app_username
+ kUserIdHashSuffix
);
41 user_list_
.push_back(user
);
44 void FakeUserManager::LoginUser(const std::string
& email
) {
45 UserLoggedIn(email
, email
+ kUserIdHashSuffix
, false);
48 void FakeUserManager::SetProfileForUser(const User
* user
, Profile
* profile
) {
49 user_to_profile_
[user
] = profile
;
52 const UserList
& FakeUserManager::GetUsers() const {
56 UserList
FakeUserManager::GetUsersAdmittedForMultiProfile() const {
58 for (UserList::const_iterator it
= user_list_
.begin();
59 it
!= user_list_
.end();
61 if ((*it
)->GetType() == User::USER_TYPE_REGULAR
&& !(*it
)->is_logged_in())
62 result
.push_back(*it
);
67 const UserList
& FakeUserManager::GetLoggedInUsers() const {
68 return logged_in_users_
;
71 void FakeUserManager::UserLoggedIn(const std::string
& email
,
72 const std::string
& username_hash
,
73 bool browser_restart
) {
74 for (UserList::const_iterator it
= user_list_
.begin();
75 it
!= user_list_
.end();
77 if ((*it
)->username_hash() == username_hash
) {
78 (*it
)->set_is_logged_in(true);
79 logged_in_users_
.push_back(*it
);
88 User
* FakeUserManager::GetActiveUserInternal() const {
89 if (user_list_
.size()) {
90 if (!active_user_id_
.empty()) {
91 for (UserList::const_iterator it
= user_list_
.begin();
92 it
!= user_list_
.end(); ++it
) {
93 if ((*it
)->email() == active_user_id_
)
102 const User
* FakeUserManager::GetActiveUser() const {
103 return GetActiveUserInternal();
106 User
* FakeUserManager::GetActiveUser() {
107 return GetActiveUserInternal();
110 void FakeUserManager::SwitchActiveUser(const std::string
& email
) {
111 active_user_id_
= email
;
114 void FakeUserManager::SaveUserDisplayName(
115 const std::string
& username
,
116 const base::string16
& display_name
) {
117 for (UserList::iterator it
= user_list_
.begin();
118 it
!= user_list_
.end(); ++it
) {
119 if ((*it
)->email() == username
) {
120 (*it
)->set_display_name(display_name
);
126 SupervisedUserManager
* FakeUserManager::GetSupervisedUserManager() {
127 return supervised_user_manager_
.get();
130 UserImageManager
* FakeUserManager::GetUserImageManager(
131 const std::string
& /* user_id */) {
135 const UserList
& FakeUserManager::GetLRULoggedInUsers() {
139 UserList
FakeUserManager::GetUnlockUsers() const {
143 const std::string
& FakeUserManager::GetOwnerEmail() {
147 bool FakeUserManager::IsKnownUser(const std::string
& email
) const {
151 const User
* FakeUserManager::FindUser(const std::string
& email
) const {
155 User
* FakeUserManager::FindUserAndModify(const std::string
& email
) {
159 const User
* FakeUserManager::GetLoggedInUser() const {
163 User
* FakeUserManager::GetLoggedInUser() {
167 const User
* FakeUserManager::GetPrimaryUser() const {
168 return primary_user_
;
171 User
* FakeUserManager::GetUserByProfile(Profile
* profile
) const {
172 const std::string
& user_name
= profile
->GetProfileName();
173 for (UserList::const_iterator it
= user_list_
.begin();
174 it
!= user_list_
.end(); ++it
) {
175 if ((*it
)->email() == user_name
)
178 return primary_user_
;
181 Profile
* FakeUserManager::GetProfileByUser(const User
* user
) const {
182 std::map
<const User
*, Profile
*>::const_iterator it
=
183 user_to_profile_
.find(user
);
184 return it
== user_to_profile_
.end() ? NULL
: it
->second
;
187 base::string16
FakeUserManager::GetUserDisplayName(
188 const std::string
& username
) const {
189 return base::string16();
192 std::string
FakeUserManager::GetUserDisplayEmail(
193 const std::string
& username
) const {
194 return std::string();
197 bool FakeUserManager::IsCurrentUserOwner() const {
201 bool FakeUserManager::IsCurrentUserNew() const {
205 bool FakeUserManager::IsCurrentUserNonCryptohomeDataEphemeral() const {
209 bool FakeUserManager::CanCurrentUserLock() const {
213 bool FakeUserManager::IsUserLoggedIn() const {
214 return logged_in_users_
.size() > 0;
217 bool FakeUserManager::IsLoggedInAsRegularUser() const {
221 bool FakeUserManager::IsLoggedInAsDemoUser() const {
225 bool FakeUserManager::IsLoggedInAsPublicAccount() const {
229 bool FakeUserManager::IsLoggedInAsGuest() const {
233 bool FakeUserManager::IsLoggedInAsLocallyManagedUser() const {
237 bool FakeUserManager::IsLoggedInAsKioskApp() const {
238 const User
* active_user
= GetActiveUser();
240 active_user
->GetType() == User::USER_TYPE_KIOSK_APP
:
244 bool FakeUserManager::IsLoggedInAsStub() const {
248 bool FakeUserManager::IsSessionStarted() const {
252 bool FakeUserManager::UserSessionsRestored() const {
256 bool FakeUserManager::HasBrowserRestarted() const {
260 bool FakeUserManager::IsUserNonCryptohomeDataEphemeral(
261 const std::string
& email
) const {
265 UserFlow
* FakeUserManager::GetCurrentUserFlow() const {
269 UserFlow
* FakeUserManager::GetUserFlow(const std::string
& email
) const {
273 bool FakeUserManager::GetAppModeChromeClientOAuthInfo(
274 std::string
* chrome_client_id
,
275 std::string
* chrome_client_secret
) {
279 bool FakeUserManager::AreLocallyManagedUsersAllowed() const {
283 base::FilePath
FakeUserManager::GetUserProfileDir(
284 const std::string
&email
) const {
285 return base::FilePath();
288 bool FakeUserManager::RespectLocalePreference(
291 scoped_ptr
<locale_util::SwitchLanguageCallback
> callback
) const {
295 } // namespace chromeos