Home | History | Annotate | Download | only in users
      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/avatar/user_image.h"
     14 #include "chrome/browser/chromeos/login/users/user.h"
     15 #include "chrome/browser/chromeos/login/users/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   void set_multi_profile_user_controller(
    139       MultiProfileUserController* controller) {
    140     multi_profile_user_controller_ = controller;
    141   }
    142 
    143  private:
    144   // We use this internal function for const-correctness.
    145   User* GetActiveUserInternal() const;
    146 
    147   scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
    148   UserList user_list_;
    149   UserList logged_in_users_;
    150   std::string owner_email_;
    151   User* primary_user_;
    152   std::map<const User*, Profile*> user_to_profile_;
    153 
    154   // If set this is the active user. If empty, the first created user is the
    155   // active user.
    156   std::string active_user_id_;
    157   MultiProfileUserController* multi_profile_user_controller_;
    158 
    159   DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
    160 };
    161 
    162 }  // namespace chromeos
    163 
    164 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_FAKE_USER_MANAGER_H_
    165