1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/login/user_flow.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/avatar/mock_user_image_manager.h" 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/chrome_user_manager.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/user_manager/user_image/user_image.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class FakeSupervisedUserManager; 228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class MockUserManager : public ChromeUserManager { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockUserManager(); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockUserManager(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD0(Shutdown, void(void)); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD0(GetUsersAdmittedForMultiProfile, 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::UserList(void)); 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD0(GetLoggedInUsers, const user_manager::UserList&(void)); 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD0(GetLRULoggedInUsers, const user_manager::UserList&(void)); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD3(UserLoggedIn, void( 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string&, const std::string&, bool)); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(SwitchActiveUser, void(const std::string& email)); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(SessionStarted, void(void)); 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD2(RemoveUser, 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void(const std::string&, user_manager::RemoveUserDelegate*)); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(RemoveUserFromList, void(const std::string&)); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD1(IsKnownUser, bool(const std::string&)); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD1(FindUser, const user_manager::User*(const std::string&)); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_METHOD1(FindUserAndModify, user_manager::User*(const std::string&)); 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_METHOD2(SaveUserOAuthStatus, 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void(const std::string&, user_manager::User::OAuthTokenStatus)); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MOCK_METHOD2(SaveForceOnlineSignin, void(const std::string&, bool)); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(SaveUserDisplayName, void(const std::string&, 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16&)); 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) MOCK_METHOD2(UpdateUserAccountData, 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void(const std::string&, const UserAccountData&)); 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) MOCK_CONST_METHOD1(GetUserDisplayName, base::string16(const std::string&)); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(SaveUserDisplayEmail, void(const std::string&, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string&)); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD1(GetUserDisplayEmail, std::string(const std::string&)); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsCurrentUserOwner, bool(void)); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsCurrentUserNew, bool(void)); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(IsCurrentUserNonCryptohomeDataEphemeral, bool(void)); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(CanCurrentUserLock, bool(void)); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsUserLoggedIn, bool(void)); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsRegularUser, bool(void)); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsDemoUser, bool(void)); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsPublicAccount, bool(void)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsGuest, bool(void)); 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsSupervisedUser, bool(void)); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsKioskApp, bool(void)); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsLoggedInAsStub, bool(void)); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_CONST_METHOD0(IsSessionStarted, bool(void)); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_CONST_METHOD1(IsUserNonCryptohomeDataEphemeral, 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool(const std::string&)); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(AddObserver, void(UserManager::Observer*)); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(RemoveObserver, void(UserManager::Observer*)); 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(AddSessionStateObserver, 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void(UserManager::UserSessionStateObserver*)); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(RemoveSessionStateObserver, 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void(UserManager::UserSessionStateObserver*)); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(NotifyLocalStateChanged, void(void)); 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MOCK_CONST_METHOD0(AreSupervisedUsersAllowed, bool(void)); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // UserManagerBase overrides: 796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD0(AreEphemeralUsersEnabled, bool(void)); 806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD0(GetApplicationLocale, const std::string&(void)); 816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD0(GetLocalState, PrefService*(void)); 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD2(HandleUserOAuthTokenStatusChange, 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void(const std::string&, 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::User::OAuthTokenStatus status)); 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD0(IsEnterpriseManaged, bool(void)); 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(LoadPublicAccounts, void(std::set<std::string>*)); 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD0(PerformPreUserListLoadingActions, void(void)); 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD0(PerformPostUserListLoadingActions, void(void)); 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(PerformPostUserLoggedInActions, void(bool)); 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD1(IsDemoApp, bool(const std::string&)); 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD1(IsKioskApp, bool(const std::string&)); 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_CONST_METHOD1(IsPublicAccountMarkedForRemoval, bool(const std::string&)); 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD0(DemoAccountLoggedIn, void(void)); 946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(KioskAppLoggedIn, void(const std::string&)); 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(PublicAccountUserLoggedIn, void(user_manager::User*)); 966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD0(RetailModeUserLoggedIn, void(void)); 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(SupervisedUserLoggedIn, void(const std::string&)); 986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // You can't mock these functions easily because nobody can create 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // User objects but the ChromeUserManager and us. 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const user_manager::UserList& GetUsers() const OVERRIDE; 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const user_manager::User* GetLoggedInUser() const OVERRIDE; 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual user_manager::UserList GetUnlockUsers() const OVERRIDE; 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const std::string& GetOwnerEmail() const OVERRIDE; 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual user_manager::User* GetLoggedInUser() OVERRIDE; 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const user_manager::User* GetActiveUser() const OVERRIDE; 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual user_manager::User* GetActiveUser() OVERRIDE; 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual const user_manager::User* GetPrimaryUser() const OVERRIDE; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ChromeUserManager overrides: 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual MultiProfileUserController* GetMultiProfileUserController() OVERRIDE; 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual UserImageManager* GetUserImageManager( 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& user_id) OVERRIDE; 1148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE; 1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD2(SetUserFlow, void(const std::string&, UserFlow*)); 1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MOCK_METHOD1(ResetUserFlow, void(const std::string&)); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual UserFlow* GetCurrentUserFlow() const OVERRIDE; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual UserFlow* GetUserFlow(const std::string&) const OVERRIDE; 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Sets a new User instance. Users previously created by this MockUserManager 1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // become invalid. 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetActiveUser(const std::string& email); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates a new public session user. Users previously created by this 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // MockUserManager become invalid. 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::User* CreatePublicAccountUser(const std::string& email); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Adds a new User instance to the back of the user list. Users previously 1291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // created by this MockUserManager remain valid. 1301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void AddUser(const std::string& email); 1311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Clears the user list and the active user. Users previously created by this 1331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // MockUserManager become invalid. 1341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void ClearUserList(); 1351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<UserFlow> user_flow_; 1378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<MockUserImageManager> user_image_manager_; 1388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_; 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::UserList user_list_; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 145