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. 4 5 #include "chrome/browser/chromeos/login/fake_user_manager.h" 6 7 #include "chrome/browser/chromeos/login/fake_supervised_user_manager.h" 8 9 namespace { 10 11 // As defined in /chromeos/dbus/cryptohome_client.cc. 12 static const char kUserIdHashSuffix[] = "-hash"; 13 14 } // namespace 15 16 namespace chromeos { 17 18 FakeUserManager::FakeUserManager() 19 : supervised_user_manager_(new FakeSupervisedUserManager), 20 primary_user_(NULL) {} 21 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)) { 26 delete *it; 27 } 28 } 29 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); 35 return user; 36 } 37 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); 42 } 43 44 void FakeUserManager::LoginUser(const std::string& email) { 45 UserLoggedIn(email, email + kUserIdHashSuffix, false); 46 } 47 48 void FakeUserManager::SetProfileForUser(const User* user, Profile* profile) { 49 user_to_profile_[user] = profile; 50 } 51 52 const UserList& FakeUserManager::GetUsers() const { 53 return user_list_; 54 } 55 56 UserList FakeUserManager::GetUsersAdmittedForMultiProfile() const { 57 UserList result; 58 for (UserList::const_iterator it = user_list_.begin(); 59 it != user_list_.end(); 60 ++it) { 61 if ((*it)->GetType() == User::USER_TYPE_REGULAR && !(*it)->is_logged_in()) 62 result.push_back(*it); 63 } 64 return result; 65 } 66 67 const UserList& FakeUserManager::GetLoggedInUsers() const { 68 return logged_in_users_; 69 } 70 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(); 76 ++it) { 77 if ((*it)->username_hash() == username_hash) { 78 (*it)->set_is_logged_in(true); 79 logged_in_users_.push_back(*it); 80 81 if (!primary_user_) 82 primary_user_ = *it; 83 break; 84 } 85 } 86 } 87 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_) 94 return *it; 95 } 96 } 97 return user_list_[0]; 98 } 99 return NULL; 100 } 101 102 const User* FakeUserManager::GetActiveUser() const { 103 return GetActiveUserInternal(); 104 } 105 106 User* FakeUserManager::GetActiveUser() { 107 return GetActiveUserInternal(); 108 } 109 110 void FakeUserManager::SwitchActiveUser(const std::string& email) { 111 active_user_id_ = email; 112 } 113 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); 121 return; 122 } 123 } 124 } 125 126 SupervisedUserManager* FakeUserManager::GetSupervisedUserManager() { 127 return supervised_user_manager_.get(); 128 } 129 130 UserImageManager* FakeUserManager::GetUserImageManager() { 131 return NULL; 132 } 133 134 const UserList& FakeUserManager::GetLRULoggedInUsers() { 135 return user_list_; 136 } 137 138 UserList FakeUserManager::GetUnlockUsers() const { 139 return user_list_; 140 } 141 142 const std::string& FakeUserManager::GetOwnerEmail() { 143 return owner_email_; 144 } 145 146 bool FakeUserManager::IsKnownUser(const std::string& email) const { 147 return true; 148 } 149 150 const User* FakeUserManager::FindUser(const std::string& email) const { 151 return NULL; 152 } 153 154 User* FakeUserManager::FindUserAndModify(const std::string& email) { 155 return NULL; 156 } 157 158 const User* FakeUserManager::GetLoggedInUser() const { 159 return NULL; 160 } 161 162 User* FakeUserManager::GetLoggedInUser() { 163 return NULL; 164 } 165 166 const User* FakeUserManager::GetPrimaryUser() const { 167 return primary_user_; 168 } 169 170 User* FakeUserManager::GetUserByProfile(Profile* profile) const { 171 const std::string& user_name = profile->GetProfileName(); 172 for (UserList::const_iterator it = user_list_.begin(); 173 it != user_list_.end(); ++it) { 174 if ((*it)->email() == user_name) 175 return *it; 176 } 177 return primary_user_; 178 } 179 180 Profile* FakeUserManager::GetProfileByUser(const User* user) const { 181 std::map<const User*, Profile*>::const_iterator it = 182 user_to_profile_.find(user); 183 return it == user_to_profile_.end() ? NULL : it->second; 184 } 185 186 base::string16 FakeUserManager::GetUserDisplayName( 187 const std::string& username) const { 188 return base::string16(); 189 } 190 191 std::string FakeUserManager::GetUserDisplayEmail( 192 const std::string& username) const { 193 return std::string(); 194 } 195 196 bool FakeUserManager::IsCurrentUserOwner() const { 197 return false; 198 } 199 200 bool FakeUserManager::IsCurrentUserNew() const { 201 return false; 202 } 203 204 bool FakeUserManager::IsCurrentUserNonCryptohomeDataEphemeral() const { 205 return false; 206 } 207 208 bool FakeUserManager::CanCurrentUserLock() const { 209 return false; 210 } 211 212 bool FakeUserManager::IsUserLoggedIn() const { 213 return logged_in_users_.size() > 0; 214 } 215 216 bool FakeUserManager::IsLoggedInAsRegularUser() const { 217 return true; 218 } 219 220 bool FakeUserManager::IsLoggedInAsDemoUser() const { 221 return false; 222 } 223 224 bool FakeUserManager::IsLoggedInAsPublicAccount() const { 225 return false; 226 } 227 228 bool FakeUserManager::IsLoggedInAsGuest() const { 229 return false; 230 } 231 232 bool FakeUserManager::IsLoggedInAsLocallyManagedUser() const { 233 return false; 234 } 235 236 bool FakeUserManager::IsLoggedInAsKioskApp() const { 237 const User* active_user = GetActiveUser(); 238 return active_user ? 239 active_user->GetType() == User::USER_TYPE_KIOSK_APP : 240 false; 241 } 242 243 bool FakeUserManager::IsLoggedInAsStub() const { 244 return false; 245 } 246 247 bool FakeUserManager::IsSessionStarted() const { 248 return false; 249 } 250 251 bool FakeUserManager::UserSessionsRestored() const { 252 return false; 253 } 254 255 bool FakeUserManager::HasBrowserRestarted() const { 256 return false; 257 } 258 259 bool FakeUserManager::IsUserNonCryptohomeDataEphemeral( 260 const std::string& email) const { 261 return false; 262 } 263 264 UserFlow* FakeUserManager::GetCurrentUserFlow() const { 265 return NULL; 266 } 267 268 UserFlow* FakeUserManager::GetUserFlow(const std::string& email) const { 269 return NULL; 270 } 271 272 bool FakeUserManager::GetAppModeChromeClientOAuthInfo( 273 std::string* chrome_client_id, 274 std::string* chrome_client_secret) { 275 return false; 276 } 277 278 bool FakeUserManager::AreLocallyManagedUsersAllowed() const { 279 return true; 280 } 281 282 base::FilePath FakeUserManager::GetUserProfileDir( 283 const std::string&email) const { 284 return base::FilePath(); 285 } 286 287 bool FakeUserManager::RespectLocalePreference( 288 Profile* profile, 289 const User* user, 290 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const { 291 return false; 292 } 293 294 } // namespace chromeos 295