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
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
7 #include "base/task_runner.h"
8 #include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h"
9 #include "chrome/browser/chromeos/profiles/profile_helper.h"
10 #include "chrome/grit/theme_resources.h"
11 #include "components/user_manager/user_image/user_image.h"
12 #include "components/user_manager/user_type.h"
13 #include "ui/base/resource/resource_bundle.h"
17 class FakeTaskRunner : public base::TaskRunner {
19 virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
20 const base::Closure& task,
21 base::TimeDelta delay) OVERRIDE {
25 virtual bool RunsTasksOnCurrentThread() const OVERRIDE { return true; }
28 virtual ~FakeTaskRunner() {}
35 FakeUserManager::FakeUserManager()
36 : ChromeUserManager(new FakeTaskRunner(), new FakeTaskRunner()),
37 supervised_user_manager_(new FakeSupervisedUserManager),
39 multi_profile_user_controller_(NULL) {
42 FakeUserManager::~FakeUserManager() {
43 // Can't use STLDeleteElements because of the private destructor of User.
44 for (user_manager::UserList::iterator it = user_list_.begin();
45 it != user_list_.end();
46 it = user_list_.erase(it)) {
51 const user_manager::User* FakeUserManager::AddUser(const std::string& email) {
52 user_manager::User* user = user_manager::User::CreateRegularUser(email);
53 user->set_username_hash(
54 ProfileHelper::GetUserIdHashByUserIdForTesting(email));
55 user->SetStubImage(user_manager::UserImage(
56 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
57 IDR_PROFILE_PICTURE_LOADING)),
58 user_manager::User::USER_IMAGE_PROFILE,
60 user_list_.push_back(user);
64 const user_manager::User* FakeUserManager::AddPublicAccountUser(
65 const std::string& email) {
66 user_manager::User* user = user_manager::User::CreatePublicAccountUser(email);
67 user->set_username_hash(
68 ProfileHelper::GetUserIdHashByUserIdForTesting(email));
69 user->SetStubImage(user_manager::UserImage(
70 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
71 IDR_PROFILE_PICTURE_LOADING)),
72 user_manager::User::USER_IMAGE_PROFILE,
74 user_list_.push_back(user);
78 void FakeUserManager::AddKioskAppUser(const std::string& kiosk_app_username) {
79 user_manager::User* user =
80 user_manager::User::CreateKioskAppUser(kiosk_app_username);
81 user->set_username_hash(
82 ProfileHelper::GetUserIdHashByUserIdForTesting(kiosk_app_username));
83 user_list_.push_back(user);
86 void FakeUserManager::RemoveUserFromList(const std::string& email) {
87 user_manager::UserList::iterator it = user_list_.begin();
88 while (it != user_list_.end() && (*it)->email() != email) ++it;
89 if (it != user_list_.end()) {
95 void FakeUserManager::LoginUser(const std::string& email) {
97 email, ProfileHelper::GetUserIdHashByUserIdForTesting(email), false);
100 const user_manager::UserList& FakeUserManager::GetUsers() const {
104 user_manager::UserList FakeUserManager::GetUsersAdmittedForMultiProfile()
106 user_manager::UserList result;
107 for (user_manager::UserList::const_iterator it = user_list_.begin();
108 it != user_list_.end();
110 if ((*it)->GetType() == user_manager::USER_TYPE_REGULAR &&
111 !(*it)->is_logged_in())
112 result.push_back(*it);
117 const user_manager::UserList& FakeUserManager::GetLoggedInUsers() const {
118 return logged_in_users_;
121 void FakeUserManager::UserLoggedIn(const std::string& email,
122 const std::string& username_hash,
123 bool browser_restart) {
124 for (user_manager::UserList::const_iterator it = user_list_.begin();
125 it != user_list_.end();
127 if ((*it)->username_hash() == username_hash) {
128 (*it)->set_is_logged_in(true);
129 (*it)->set_profile_is_created();
130 logged_in_users_.push_back(*it);
139 user_manager::User* FakeUserManager::GetActiveUserInternal() const {
140 if (user_list_.size()) {
141 if (!active_user_id_.empty()) {
142 for (user_manager::UserList::const_iterator it = user_list_.begin();
143 it != user_list_.end();
145 if ((*it)->email() == active_user_id_)
149 return user_list_[0];
154 const user_manager::User* FakeUserManager::GetActiveUser() const {
155 return GetActiveUserInternal();
158 user_manager::User* FakeUserManager::GetActiveUser() {
159 return GetActiveUserInternal();
162 void FakeUserManager::SwitchActiveUser(const std::string& email) {
163 active_user_id_ = email;
164 ProfileHelper::Get()->ActiveUserHashChanged(
165 ProfileHelper::GetUserIdHashByUserIdForTesting(email));
168 void FakeUserManager::SaveUserDisplayName(
169 const std::string& username,
170 const base::string16& display_name) {
171 for (user_manager::UserList::iterator it = user_list_.begin();
172 it != user_list_.end();
174 if ((*it)->email() == username) {
175 (*it)->set_display_name(display_name);
181 MultiProfileUserController* FakeUserManager::GetMultiProfileUserController() {
182 return multi_profile_user_controller_;
185 SupervisedUserManager* FakeUserManager::GetSupervisedUserManager() {
186 return supervised_user_manager_.get();
189 UserImageManager* FakeUserManager::GetUserImageManager(
190 const std::string& /* user_id */) {
194 const user_manager::UserList& FakeUserManager::GetLRULoggedInUsers() const {
198 user_manager::UserList FakeUserManager::GetUnlockUsers() const {
202 const std::string& FakeUserManager::GetOwnerEmail() const {
206 bool FakeUserManager::IsKnownUser(const std::string& email) const {
210 const user_manager::User* FakeUserManager::FindUser(
211 const std::string& email) const {
212 const user_manager::UserList& users = GetUsers();
213 for (user_manager::UserList::const_iterator it = users.begin();
216 if ((*it)->email() == email)
222 user_manager::User* FakeUserManager::FindUserAndModify(
223 const std::string& email) {
227 const user_manager::User* FakeUserManager::GetLoggedInUser() const {
231 user_manager::User* FakeUserManager::GetLoggedInUser() {
235 const user_manager::User* FakeUserManager::GetPrimaryUser() const {
236 return primary_user_;
239 base::string16 FakeUserManager::GetUserDisplayName(
240 const std::string& username) const {
241 return base::string16();
244 std::string FakeUserManager::GetUserDisplayEmail(
245 const std::string& username) const {
246 return std::string();
249 bool FakeUserManager::IsCurrentUserOwner() const {
253 bool FakeUserManager::IsCurrentUserNew() const {
257 bool FakeUserManager::IsCurrentUserNonCryptohomeDataEphemeral() const {
261 bool FakeUserManager::CanCurrentUserLock() const {
265 bool FakeUserManager::IsUserLoggedIn() const {
266 return logged_in_users_.size() > 0;
269 bool FakeUserManager::IsLoggedInAsRegularUser() const {
273 bool FakeUserManager::IsLoggedInAsDemoUser() const {
277 bool FakeUserManager::IsLoggedInAsPublicAccount() const {
281 bool FakeUserManager::IsLoggedInAsGuest() const {
285 bool FakeUserManager::IsLoggedInAsSupervisedUser() const {
289 bool FakeUserManager::IsLoggedInAsKioskApp() const {
290 const user_manager::User* active_user = GetActiveUser();
292 ? active_user->GetType() == user_manager::USER_TYPE_KIOSK_APP
296 bool FakeUserManager::IsLoggedInAsStub() const {
300 bool FakeUserManager::IsSessionStarted() const {
304 bool FakeUserManager::IsUserNonCryptohomeDataEphemeral(
305 const std::string& email) const {
309 UserFlow* FakeUserManager::GetCurrentUserFlow() const {
313 UserFlow* FakeUserManager::GetUserFlow(const std::string& email) const {
317 bool FakeUserManager::AreSupervisedUsersAllowed() const {
321 bool FakeUserManager::AreEphemeralUsersEnabled() const {
325 const std::string& FakeUserManager::GetApplicationLocale() const {
326 static const std::string default_locale("en-US");
327 return default_locale;
330 PrefService* FakeUserManager::GetLocalState() const {
334 bool FakeUserManager::IsEnterpriseManaged() const {
338 bool FakeUserManager::IsDemoApp(const std::string& user_id) const {
342 bool FakeUserManager::IsKioskApp(const std::string& user_id) const {
346 bool FakeUserManager::IsPublicAccountMarkedForRemoval(
347 const std::string& user_id) const {
351 } // namespace chromeos