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/chrome_user_manager.h"
     14 #include "components/user_manager/user.h"
     15 #include "components/user_manager/user_image/user_image.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 ChromeUserManager {
     24  public:
     25   FakeUserManager();
     26   virtual ~FakeUserManager();
     27 
     28   // Create and add a new user.
     29   const user_manager::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   // Create and add a public account user.
     35   const user_manager::User* AddPublicAccountUser(const std::string& email);
     36 
     37   // Calculates the user name hash and calls UserLoggedIn to login a user.
     38   void LoginUser(const std::string& email);
     39 
     40   // ChromeUserManager overrides.
     41   virtual MultiProfileUserController* GetMultiProfileUserController() OVERRIDE;
     42   virtual UserImageManager* GetUserImageManager(
     43       const std::string& user_id) OVERRIDE;
     44   virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE;
     45   virtual void SetUserFlow(const std::string& email, UserFlow* flow) OVERRIDE {}
     46   virtual UserFlow* GetCurrentUserFlow() const OVERRIDE;
     47   virtual UserFlow* GetUserFlow(const std::string& email) const OVERRIDE;
     48   virtual void ResetUserFlow(const std::string& email) OVERRIDE {}
     49 
     50   // UserManager overrides.
     51   virtual const user_manager::UserList& GetUsers() const OVERRIDE;
     52   virtual user_manager::UserList GetUsersAdmittedForMultiProfile()
     53       const OVERRIDE;
     54   virtual const user_manager::UserList& GetLoggedInUsers() const OVERRIDE;
     55 
     56   // Set the user as logged in.
     57   virtual void UserLoggedIn(const std::string& email,
     58                             const std::string& username_hash,
     59                             bool browser_restart) OVERRIDE;
     60 
     61   virtual const user_manager::User* GetActiveUser() const OVERRIDE;
     62   virtual user_manager::User* GetActiveUser() OVERRIDE;
     63   virtual void SwitchActiveUser(const std::string& email) OVERRIDE;
     64   virtual void SaveUserDisplayName(const std::string& username,
     65       const base::string16& display_name) OVERRIDE;
     66 
     67   // Not implemented.
     68   virtual void UpdateUserAccountData(
     69       const std::string& user_id,
     70       const UserAccountData& account_data) OVERRIDE {}
     71   virtual void Shutdown() OVERRIDE {}
     72   virtual const user_manager::UserList& GetLRULoggedInUsers() const OVERRIDE;
     73   virtual user_manager::UserList GetUnlockUsers() const OVERRIDE;
     74   virtual const std::string& GetOwnerEmail() const OVERRIDE;
     75   virtual void SessionStarted() OVERRIDE {}
     76   virtual void RemoveUser(const std::string& email,
     77                           user_manager::RemoveUserDelegate* delegate) OVERRIDE {
     78   }
     79   virtual void RemoveUserFromList(const std::string& email) OVERRIDE;
     80   virtual bool IsKnownUser(const std::string& email) const OVERRIDE;
     81   virtual const user_manager::User* FindUser(
     82       const std::string& email) const OVERRIDE;
     83   virtual user_manager::User* FindUserAndModify(
     84       const std::string& email) OVERRIDE;
     85   virtual const user_manager::User* GetLoggedInUser() const OVERRIDE;
     86   virtual user_manager::User* GetLoggedInUser() OVERRIDE;
     87   virtual const user_manager::User* GetPrimaryUser() const OVERRIDE;
     88   virtual void SaveUserOAuthStatus(
     89       const std::string& username,
     90       user_manager::User::OAuthTokenStatus oauth_token_status) OVERRIDE {}
     91   virtual void SaveForceOnlineSignin(const std::string& user_id,
     92                                      bool force_online_signin) OVERRIDE {}
     93   virtual base::string16 GetUserDisplayName(
     94       const std::string& username) const OVERRIDE;
     95   virtual void SaveUserDisplayEmail(const std::string& username,
     96       const std::string& display_email) OVERRIDE {}
     97   virtual std::string GetUserDisplayEmail(
     98       const std::string& username) const OVERRIDE;
     99   virtual bool IsCurrentUserOwner() const OVERRIDE;
    100   virtual bool IsCurrentUserNew() const OVERRIDE;
    101   virtual bool IsCurrentUserNonCryptohomeDataEphemeral() const OVERRIDE;
    102   virtual bool CanCurrentUserLock() const OVERRIDE;
    103   virtual bool IsUserLoggedIn() const OVERRIDE;
    104   virtual bool IsLoggedInAsRegularUser() const OVERRIDE;
    105   virtual bool IsLoggedInAsDemoUser() const OVERRIDE;
    106   virtual bool IsLoggedInAsPublicAccount() const OVERRIDE;
    107   virtual bool IsLoggedInAsGuest() const OVERRIDE;
    108   virtual bool IsLoggedInAsSupervisedUser() const OVERRIDE;
    109   virtual bool IsLoggedInAsKioskApp() const OVERRIDE;
    110   virtual bool IsLoggedInAsStub() const OVERRIDE;
    111   virtual bool IsSessionStarted() const OVERRIDE;
    112   virtual bool IsUserNonCryptohomeDataEphemeral(
    113       const std::string& email) const OVERRIDE;
    114   virtual void AddObserver(Observer* obs) OVERRIDE {}
    115   virtual void RemoveObserver(Observer* obs) OVERRIDE {}
    116   virtual void AddSessionStateObserver(
    117       UserSessionStateObserver* obs) OVERRIDE {}
    118   virtual void RemoveSessionStateObserver(
    119       UserSessionStateObserver* obs) OVERRIDE {}
    120   virtual void NotifyLocalStateChanged() OVERRIDE {}
    121   virtual bool AreSupervisedUsersAllowed() const OVERRIDE;
    122 
    123   // UserManagerBase overrides:
    124   virtual bool AreEphemeralUsersEnabled() const OVERRIDE;
    125   virtual const std::string& GetApplicationLocale() const OVERRIDE;
    126   virtual PrefService* GetLocalState() const OVERRIDE;
    127   virtual void HandleUserOAuthTokenStatusChange(
    128       const std::string& user_id,
    129       user_manager::User::OAuthTokenStatus status) const OVERRIDE {}
    130   virtual bool IsEnterpriseManaged() const OVERRIDE;
    131   virtual void LoadPublicAccounts(
    132       std::set<std::string>* public_sessions_set) OVERRIDE {}
    133   virtual void PerformPreUserListLoadingActions() OVERRIDE {}
    134   virtual void PerformPostUserListLoadingActions() OVERRIDE {}
    135   virtual void PerformPostUserLoggedInActions(bool browser_restart) OVERRIDE {}
    136   virtual bool IsDemoApp(const std::string& user_id) const OVERRIDE;
    137   virtual bool IsKioskApp(const std::string& user_id) const OVERRIDE;
    138   virtual bool IsPublicAccountMarkedForRemoval(
    139       const std::string& user_id) const OVERRIDE;
    140   virtual void DemoAccountLoggedIn() OVERRIDE {}
    141   virtual void KioskAppLoggedIn(const std::string& app_id) OVERRIDE {}
    142   virtual void PublicAccountUserLoggedIn(user_manager::User* user) OVERRIDE {}
    143   virtual void RetailModeUserLoggedIn() OVERRIDE {}
    144   virtual void SupervisedUserLoggedIn(const std::string& user_id) OVERRIDE {}
    145 
    146   void set_owner_email(const std::string& owner_email) {
    147     owner_email_ = owner_email;
    148   }
    149 
    150   void set_multi_profile_user_controller(
    151       MultiProfileUserController* controller) {
    152     multi_profile_user_controller_ = controller;
    153   }
    154 
    155  private:
    156   // We use this internal function for const-correctness.
    157   user_manager::User* GetActiveUserInternal() const;
    158 
    159   scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_;
    160   user_manager::UserList user_list_;
    161   user_manager::UserList logged_in_users_;
    162   std::string owner_email_;
    163   user_manager::User* primary_user_;
    164 
    165   // If set this is the active user. If empty, the first created user is the
    166   // active user.
    167   std::string active_user_id_;
    168   MultiProfileUserController* multi_profile_user_controller_;
    169 
    170   DISALLOW_COPY_AND_ASSIGN(FakeUserManager);
    171 };
    172 
    173 }  // namespace chromeos
    174 
    175 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_FAKE_USER_MANAGER_H_
    176