Home | History | Annotate | Download | only in login
      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