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. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_FAKE_USER_MANAGER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_FAKE_USER_MANAGER_H_ 7 8 #include <map> 9 #include <string> 10 11 #include "base/memory/scoped_ptr.h" 12 #include "chrome/browser/chromeos/login/user_flow.h" 13 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h" 14 #include "components/user_manager/user.h" 15 #include "components/user_manager/user_image/user_image.h" 16 17 namespace chromeos { 18 19 class FakeSupervisedUserManager; 20 21 // Fake user manager with a barebones implementation. Users can be added 22 // and set as logged in, and those users can be returned. 23 class FakeUserManager : public ChromeUserManager { 24 public: 25 FakeUserManager(); 26 virtual ~FakeUserManager(); 27 28 // Create and add a new user. 29 const user_manager::User* AddUser(const std::string& email); 30 31 // Create and add a kiosk app user. 32 void AddKioskAppUser(const std::string& kiosk_app_username); 33 34 // Create and add a public account user. 35 const user_manager::User* AddPublicAccountUser(const std::string& email); 36 37 // Calculates the user name hash and calls UserLoggedIn to login a user. 38 void LoginUser(const std::string& email); 39 40 // ChromeUserManager overrides. 41 virtual MultiProfileUserController* GetMultiProfileUserController() OVERRIDE; 42 virtual UserImageManager* GetUserImageManager( 43 const std::string& user_id) OVERRIDE; 44 virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE; 45 virtual void SetUserFlow(const std::string& email, UserFlow* flow) OVERRIDE {} 46 virtual UserFlow* GetCurrentUserFlow() const OVERRIDE; 47 virtual UserFlow* GetUserFlow(const std::string& email) const OVERRIDE; 48 virtual void ResetUserFlow(const std::string& email) OVERRIDE {} 49 50 // UserManager overrides. 51 virtual const user_manager::UserList& GetUsers() const OVERRIDE; 52 virtual user_manager::UserList GetUsersAdmittedForMultiProfile() 53 const OVERRIDE; 54 virtual const user_manager::UserList& GetLoggedInUsers() const OVERRIDE; 55 56 // Set the user as logged in. 57 virtual void UserLoggedIn(const std::string& email, 58 const std::string& username_hash, 59 bool browser_restart) OVERRIDE; 60 61 virtual const user_manager::User* GetActiveUser() const OVERRIDE; 62 virtual user_manager::User* GetActiveUser() OVERRIDE; 63 virtual void SwitchActiveUser(const std::string& email) OVERRIDE; 64 virtual void SaveUserDisplayName(const std::string& username, 65 const base::string16& display_name) OVERRIDE; 66 67 // Not implemented. 68 virtual void UpdateUserAccountData( 69 const std::string& user_id, 70 const UserAccountData& account_data) OVERRIDE {} 71 virtual void Shutdown() OVERRIDE {} 72 virtual const user_manager::UserList& GetLRULoggedInUsers() const OVERRIDE; 73 virtual user_manager::UserList GetUnlockUsers() const OVERRIDE; 74 virtual const std::string& GetOwnerEmail() const OVERRIDE; 75 virtual void SessionStarted() OVERRIDE {} 76 virtual void RemoveUser(const std::string& email, 77 user_manager::RemoveUserDelegate* delegate) OVERRIDE { 78 } 79 virtual void RemoveUserFromList(const std::string& email) OVERRIDE; 80 virtual bool IsKnownUser(const std::string& email) const OVERRIDE; 81 virtual const user_manager::User* FindUser( 82 const std::string& email) const OVERRIDE; 83 virtual user_manager::User* FindUserAndModify( 84 const std::string& email) OVERRIDE; 85 virtual const user_manager::User* GetLoggedInUser() const OVERRIDE; 86 virtual user_manager::User* GetLoggedInUser() OVERRIDE; 87 virtual const user_manager::User* GetPrimaryUser() const OVERRIDE; 88 virtual void SaveUserOAuthStatus( 89 const std::string& username, 90 user_manager::User::OAuthTokenStatus oauth_token_status) OVERRIDE {} 91 virtual void SaveForceOnlineSignin(const std::string& user_id, 92 bool force_online_signin) OVERRIDE {} 93 virtual base::string16 GetUserDisplayName( 94 const std::string& username) const OVERRIDE; 95 virtual void SaveUserDisplayEmail(const std::string& username, 96 const std::string& display_email) OVERRIDE {} 97 virtual std::string GetUserDisplayEmail( 98 const std::string& username) const OVERRIDE; 99 virtual bool IsCurrentUserOwner() const OVERRIDE; 100 virtual bool IsCurrentUserNew() const OVERRIDE; 101 virtual bool IsCurrentUserNonCryptohomeDataEphemeral() const OVERRIDE; 102 virtual bool CanCurrentUserLock() const OVERRIDE; 103 virtual bool IsUserLoggedIn() const OVERRIDE; 104 virtual bool IsLoggedInAsRegularUser() const OVERRIDE; 105 virtual bool IsLoggedInAsDemoUser() const OVERRIDE; 106 virtual bool IsLoggedInAsPublicAccount() const OVERRIDE; 107 virtual bool IsLoggedInAsGuest() const OVERRIDE; 108 virtual bool IsLoggedInAsSupervisedUser() const OVERRIDE; 109 virtual bool IsLoggedInAsKioskApp() const OVERRIDE; 110 virtual bool IsLoggedInAsStub() const OVERRIDE; 111 virtual bool IsSessionStarted() const OVERRIDE; 112 virtual bool IsUserNonCryptohomeDataEphemeral( 113 const std::string& email) const OVERRIDE; 114 virtual void AddObserver(Observer* obs) OVERRIDE {} 115 virtual void RemoveObserver(Observer* obs) OVERRIDE {} 116 virtual void AddSessionStateObserver( 117 UserSessionStateObserver* obs) OVERRIDE {} 118 virtual void RemoveSessionStateObserver( 119 UserSessionStateObserver* obs) OVERRIDE {} 120 virtual void NotifyLocalStateChanged() OVERRIDE {} 121 virtual bool AreSupervisedUsersAllowed() const OVERRIDE; 122 123 // UserManagerBase overrides: 124 virtual bool AreEphemeralUsersEnabled() const OVERRIDE; 125 virtual const std::string& GetApplicationLocale() const OVERRIDE; 126 virtual PrefService* GetLocalState() const OVERRIDE; 127 virtual void HandleUserOAuthTokenStatusChange( 128 const std::string& user_id, 129 user_manager::User::OAuthTokenStatus status) const OVERRIDE {} 130 virtual bool IsEnterpriseManaged() const OVERRIDE; 131 virtual void LoadPublicAccounts( 132 std::set<std::string>* public_sessions_set) OVERRIDE {} 133 virtual void PerformPreUserListLoadingActions() OVERRIDE {} 134 virtual void PerformPostUserListLoadingActions() OVERRIDE {} 135 virtual void PerformPostUserLoggedInActions(bool browser_restart) OVERRIDE {} 136 virtual bool IsDemoApp(const std::string& user_id) const OVERRIDE; 137 virtual bool IsKioskApp(const std::string& user_id) const OVERRIDE; 138 virtual bool IsPublicAccountMarkedForRemoval( 139 const std::string& user_id) const OVERRIDE; 140 virtual void DemoAccountLoggedIn() OVERRIDE {} 141 virtual void KioskAppLoggedIn(const std::string& app_id) OVERRIDE {} 142 virtual void PublicAccountUserLoggedIn(user_manager::User* user) OVERRIDE {} 143 virtual void RetailModeUserLoggedIn() OVERRIDE {} 144 virtual void SupervisedUserLoggedIn(const std::string& user_id) OVERRIDE {} 145 146 void set_owner_email(const std::string& owner_email) { 147 owner_email_ = owner_email; 148 } 149 150 void set_multi_profile_user_controller( 151 MultiProfileUserController* controller) { 152 multi_profile_user_controller_ = controller; 153 } 154 155 private: 156 // We use this internal function for const-correctness. 157 user_manager::User* GetActiveUserInternal() const; 158 159 scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_; 160 user_manager::UserList user_list_; 161 user_manager::UserList logged_in_users_; 162 std::string owner_email_; 163 user_manager::User* primary_user_; 164 165 // If set this is the active user. If empty, the first created user is the 166 // active user. 167 std::string active_user_id_; 168 MultiProfileUserController* multi_profile_user_controller_; 169 170 DISALLOW_COPY_AND_ASSIGN(FakeUserManager); 171 }; 172 173 } // namespace chromeos 174 175 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_FAKE_USER_MANAGER_H_ 176