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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/chromeos/login/user.h"
13 #include "chrome/browser/chromeos/login/user_flow.h"
14 #include "chrome/browser/chromeos/login/user_image.h"
15 #include "chrome/browser/chromeos/login/user_manager.h"
19 class FakeSupervisedUserManager;
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 UserManager {
26 virtual ~FakeUserManager();
28 // Create and add a new user.
29 const User* AddUser(const std::string& email);
31 // Create and add a kiosk app user.
32 void AddKioskAppUser(const std::string& kiosk_app_username);
34 // Calculates the user name hash and calls UserLoggedIn to login a user.
35 void LoginUser(const std::string& email);
37 // Associates |profile| with |user|, for GetProfileByUser().
38 void SetProfileForUser(const User* user, Profile* profile);
40 // UserManager overrides.
41 virtual const UserList& GetUsers() const OVERRIDE;
42 virtual UserList GetUsersAdmittedForMultiProfile() const OVERRIDE;
43 virtual const UserList& GetLoggedInUsers() const OVERRIDE;
45 // Set the user as logged in.
46 virtual void UserLoggedIn(const std::string& email,
47 const std::string& username_hash,
48 bool browser_restart) OVERRIDE;
50 virtual const User* GetActiveUser() const OVERRIDE;
51 virtual User* GetActiveUser() OVERRIDE;
52 virtual void SwitchActiveUser(const std::string& email) OVERRIDE;
53 virtual void SaveUserDisplayName(const std::string& username,
54 const base::string16& display_name) OVERRIDE;
57 virtual void UpdateUserAccountData(
58 const std::string& user_id,
59 const UserAccountData& account_data) OVERRIDE {}
60 virtual void Shutdown() OVERRIDE {}
61 virtual MultiProfileUserController* GetMultiProfileUserController() OVERRIDE;
62 virtual UserImageManager* GetUserImageManager(
63 const std::string& user_id) OVERRIDE;
64 virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE;
65 virtual const UserList& GetLRULoggedInUsers() OVERRIDE;
66 virtual UserList GetUnlockUsers() const OVERRIDE;
67 virtual const std::string& GetOwnerEmail() OVERRIDE;
68 virtual void SessionStarted() OVERRIDE {}
69 virtual void RestoreActiveSessions() OVERRIDE {}
70 virtual void RemoveUser(const std::string& email,
71 RemoveUserDelegate* delegate) OVERRIDE {}
72 virtual void RemoveUserFromList(const std::string& email) OVERRIDE {}
73 virtual bool IsKnownUser(const std::string& email) const OVERRIDE;
74 virtual const User* FindUser(const std::string& email) const OVERRIDE;
75 virtual User* FindUserAndModify(const std::string& email) OVERRIDE;
76 virtual const User* GetLoggedInUser() const OVERRIDE;
77 virtual User* GetLoggedInUser() OVERRIDE;
78 virtual const User* GetPrimaryUser() const OVERRIDE;
79 virtual Profile* GetProfileByUser(const User* profile) const OVERRIDE;
80 virtual User* GetUserByProfile(Profile* profile) const OVERRIDE;
81 virtual void SaveUserOAuthStatus(
82 const std::string& username,
83 User::OAuthTokenStatus oauth_token_status) OVERRIDE {}
84 virtual void SaveForceOnlineSignin(const std::string& user_id,
85 bool force_online_signin) OVERRIDE {}
86 virtual base::string16 GetUserDisplayName(
87 const std::string& username) const OVERRIDE;
88 virtual void SaveUserDisplayEmail(const std::string& username,
89 const std::string& display_email) OVERRIDE {}
90 virtual std::string GetUserDisplayEmail(
91 const std::string& username) const OVERRIDE;
92 virtual bool IsCurrentUserOwner() const OVERRIDE;
93 virtual bool IsCurrentUserNew() const OVERRIDE;
94 virtual bool IsCurrentUserNonCryptohomeDataEphemeral() const OVERRIDE;
95 virtual bool CanCurrentUserLock() const OVERRIDE;
96 virtual bool IsUserLoggedIn() const OVERRIDE;
97 virtual bool IsLoggedInAsRegularUser() const OVERRIDE;
98 virtual bool IsLoggedInAsDemoUser() const OVERRIDE;
99 virtual bool IsLoggedInAsPublicAccount() const OVERRIDE;
100 virtual bool IsLoggedInAsGuest() const OVERRIDE;
101 virtual bool IsLoggedInAsLocallyManagedUser() const OVERRIDE;
102 virtual bool IsLoggedInAsKioskApp() const OVERRIDE;
103 virtual bool IsLoggedInAsStub() const OVERRIDE;
104 virtual bool IsSessionStarted() const OVERRIDE;
105 virtual bool UserSessionsRestored() const OVERRIDE;
106 virtual bool HasBrowserRestarted() const OVERRIDE;
107 virtual bool IsUserNonCryptohomeDataEphemeral(
108 const std::string& email) const OVERRIDE;
109 virtual void SetUserFlow(const std::string& email, UserFlow* flow) OVERRIDE {}
110 virtual UserFlow* GetCurrentUserFlow() const OVERRIDE;
111 virtual UserFlow* GetUserFlow(const std::string& email) const OVERRIDE;
112 virtual void ResetUserFlow(const std::string& email) OVERRIDE {}
113 virtual bool GetAppModeChromeClientOAuthInfo(
114 std::string* chrome_client_id,
115 std::string* chrome_client_secret) OVERRIDE;
116 virtual void SetAppModeChromeClientOAuthInfo(
117 const std::string& chrome_client_id,
118 const std::string& chrome_client_secret) OVERRIDE {}
119 virtual void AddObserver(Observer* obs) OVERRIDE {}
120 virtual void RemoveObserver(Observer* obs) OVERRIDE {}
121 virtual void AddSessionStateObserver(
122 UserSessionStateObserver* obs) OVERRIDE {}
123 virtual void RemoveSessionStateObserver(
124 UserSessionStateObserver* obs) OVERRIDE {}
125 virtual void NotifyLocalStateChanged() OVERRIDE {}
126 virtual bool AreLocallyManagedUsersAllowed() const OVERRIDE;
127 virtual base::FilePath GetUserProfileDir(const std::string& email) const
129 virtual bool RespectLocalePreference(
132 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const OVERRIDE;
134 void set_owner_email(const std::string& owner_email) {
135 owner_email_ = owner_email;
139 // We use this internal function for const-correctness.
140 User* GetActiveUserInternal() const;
142 scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
144 UserList logged_in_users_;
145 std::string owner_email_;
147 std::map<const User*, Profile*> user_to_profile_;
149 // If set this is the active user. If empty, the first created user is the
151 std::string active_user_id_;
153 DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
156 } // namespace chromeos
158 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_