Upstream version 5.34.92.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 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
127       OVERRIDE;
128   virtual bool RespectLocalePreference(
129       Profile* profile,
130       const User* user,
131       scoped_ptr<locale_util::SwitchLanguageCallback> callback) const OVERRIDE;
132
133   void set_owner_email(const std::string& owner_email) {
134     owner_email_ = owner_email;
135   }
136
137  private:
138   // We use this internal function for const-correctness.
139   User* GetActiveUserInternal() const;
140
141   scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
142   UserList user_list_;
143   UserList logged_in_users_;
144   std::string owner_email_;
145   User* primary_user_;
146   std::map<const User*, Profile*> user_to_profile_;
147
148   // If set this is the active user. If empty, the first created user is the
149   // active user.
150   std::string active_user_id_;
151
152   DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
153 };
154
155 }  // namespace chromeos
156
157 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_FAKE_USER_MANAGER_H_