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 UserImageManager* GetUserImageManager(
62 const std::string& user_id) OVERRIDE;
63 virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE;
64 virtual const UserList& GetLRULoggedInUsers() OVERRIDE;
65 virtual UserList GetUnlockUsers() const OVERRIDE;
66 virtual const std::string& GetOwnerEmail() OVERRIDE;
67 virtual void SessionStarted() OVERRIDE {}
68 virtual void RestoreActiveSessions() OVERRIDE {}
69 virtual void RemoveUser(const std::string& email,
70 RemoveUserDelegate* delegate) OVERRIDE {}
71 virtual void RemoveUserFromList(const std::string& email) OVERRIDE {}
72 virtual bool IsKnownUser(const std::string& email) const OVERRIDE;
73 virtual const User* FindUser(const std::string& email) const OVERRIDE;
74 virtual User* FindUserAndModify(const std::string& email) OVERRIDE;
75 virtual const User* GetLoggedInUser() const OVERRIDE;
76 virtual User* GetLoggedInUser() OVERRIDE;
77 virtual const User* GetPrimaryUser() const OVERRIDE;
78 virtual Profile* GetProfileByUser(const User* profile) const OVERRIDE;
79 virtual User* GetUserByProfile(Profile* profile) const OVERRIDE;
80 virtual void SaveUserOAuthStatus(
81 const std::string& username,
82 User::OAuthTokenStatus oauth_token_status) OVERRIDE {}
83 virtual void SaveForceOnlineSignin(const std::string& user_id,
84 bool force_online_signin) OVERRIDE {}
85 virtual base::string16 GetUserDisplayName(
86 const std::string& username) const OVERRIDE;
87 virtual void SaveUserDisplayEmail(const std::string& username,
88 const std::string& display_email) OVERRIDE {}
89 virtual std::string GetUserDisplayEmail(
90 const std::string& username) const OVERRIDE;
91 virtual bool IsCurrentUserOwner() const OVERRIDE;
92 virtual bool IsCurrentUserNew() const OVERRIDE;
93 virtual bool IsCurrentUserNonCryptohomeDataEphemeral() const OVERRIDE;
94 virtual bool CanCurrentUserLock() const OVERRIDE;
95 virtual bool IsUserLoggedIn() const OVERRIDE;
96 virtual bool IsLoggedInAsRegularUser() const OVERRIDE;
97 virtual bool IsLoggedInAsDemoUser() const OVERRIDE;
98 virtual bool IsLoggedInAsPublicAccount() const OVERRIDE;
99 virtual bool IsLoggedInAsGuest() const OVERRIDE;
100 virtual bool IsLoggedInAsLocallyManagedUser() const OVERRIDE;
101 virtual bool IsLoggedInAsKioskApp() const OVERRIDE;
102 virtual bool IsLoggedInAsStub() const OVERRIDE;
103 virtual bool IsSessionStarted() const OVERRIDE;
104 virtual bool UserSessionsRestored() const OVERRIDE;
105 virtual bool HasBrowserRestarted() const OVERRIDE;
106 virtual bool IsUserNonCryptohomeDataEphemeral(
107 const std::string& email) const OVERRIDE;
108 virtual void SetUserFlow(const std::string& email, UserFlow* flow) OVERRIDE {}
109 virtual UserFlow* GetCurrentUserFlow() const OVERRIDE;
110 virtual UserFlow* GetUserFlow(const std::string& email) const OVERRIDE;
111 virtual void ResetUserFlow(const std::string& email) OVERRIDE {}
112 virtual bool GetAppModeChromeClientOAuthInfo(
113 std::string* chrome_client_id,
114 std::string* chrome_client_secret) OVERRIDE;
115 virtual void SetAppModeChromeClientOAuthInfo(
116 const std::string& chrome_client_id,
117 const std::string& chrome_client_secret) OVERRIDE {}
118 virtual void AddObserver(Observer* obs) OVERRIDE {}
119 virtual void RemoveObserver(Observer* obs) OVERRIDE {}
120 virtual void AddSessionStateObserver(
121 UserSessionStateObserver* obs) OVERRIDE {}
122 virtual void RemoveSessionStateObserver(
123 UserSessionStateObserver* obs) OVERRIDE {}
124 virtual void NotifyLocalStateChanged() OVERRIDE {}
125 virtual bool AreLocallyManagedUsersAllowed() const OVERRIDE;
126 virtual base::FilePath GetUserProfileDir(const std::string& email) const
128 virtual bool RespectLocalePreference(
131 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const OVERRIDE;
133 void set_owner_email(const std::string& owner_email) {
134 owner_email_ = owner_email;
138 // We use this internal function for const-correctness.
139 User* GetActiveUserInternal() const;
141 scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
143 UserList logged_in_users_;
144 std::string owner_email_;
146 std::map<const User*, Profile*> user_to_profile_;
148 // If set this is the active user. If empty, the first created user is the
150 std::string active_user_id_;
152 DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
155 } // namespace chromeos
157 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_