Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / fake_user_manager.h
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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_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.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"
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 UserManager {
24  public:
25   FakeUserManager();
26   virtual ~FakeUserManager();
27
28   // Create and add a new user.
29   const 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    // Calculates the user name hash and calls UserLoggedIn to login a user.
35    void LoginUser(const std::string& email);
36
37    // Associates |profile| with |user|, for GetProfileByUser().
38    void SetProfileForUser(const User* user, Profile* profile);
39
40   // UserManager overrides.
41   virtual const UserList& GetUsers() const OVERRIDE;
42   virtual UserList GetUsersAdmittedForMultiProfile() const OVERRIDE;
43   virtual const UserList& GetLoggedInUsers() const OVERRIDE;
44
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;
49
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;
55
56   // Not implemented.
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
128       OVERRIDE;
129   virtual bool RespectLocalePreference(
130       Profile* profile,
131       const User* user,
132       scoped_ptr<locale_util::SwitchLanguageCallback> callback) const OVERRIDE;
133
134   void set_owner_email(const std::string& owner_email) {
135     owner_email_ = owner_email;
136   }
137
138  private:
139   // We use this internal function for const-correctness.
140   User* GetActiveUserInternal() const;
141
142   scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
143   UserList user_list_;
144   UserList logged_in_users_;
145   std::string owner_email_;
146   User* primary_user_;
147   std::map<const User*, Profile*> user_to_profile_;
148
149   // If set this is the active user. If empty, the first created user is the
150   // active user.
151   std::string active_user_id_;
152
153   DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
154 };
155
156 }  // namespace chromeos
157
158 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_