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)#include "chrome/browser/chromeos/login/users/mock_user_manager.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/task_runner.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/profiles/profile_helper.h" 108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace { 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class FakeTaskRunner : public base::TaskRunner { 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public: 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool PostDelayedTask(const tracked_objects::Location& from_here, 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::Closure& task, 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::TimeDelta delay) OVERRIDE { 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) task.Run(); 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool RunsTasksOnCurrentThread() const OVERRIDE { return true; } 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) protected: 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual ~FakeTaskRunner() {} 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)MockUserManager::MockUserManager() 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) : ChromeUserManager(new FakeTaskRunner(), new FakeTaskRunner()), 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_flow_(new DefaultUserFlow()), 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch supervised_user_manager_(new FakeSupervisedUserManager()) { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProfileHelper::SetProfileToUserForTestingEnabled(true); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockUserManager::~MockUserManager() { 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProfileHelper::SetProfileToUserForTestingEnabled(false); 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ClearUserList(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const user_manager::UserList& MockUserManager::GetUsers() const { 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return user_list_; 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const user_manager::User* MockUserManager::GetLoggedInUser() const { 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return user_list_.empty() ? NULL : user_list_.front(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)user_manager::User* MockUserManager::GetLoggedInUser() { 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return user_list_.empty() ? NULL : user_list_.front(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)user_manager::UserList MockUserManager::GetUnlockUsers() const { 56d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return user_list_; 57d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const std::string& MockUserManager::GetOwnerEmail() const { 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return GetLoggedInUser()->email(); 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const user_manager::User* MockUserManager::GetActiveUser() const { 641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return GetLoggedInUser(); 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)user_manager::User* MockUserManager::GetActiveUser() { 681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return GetLoggedInUser(); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const user_manager::User* MockUserManager::GetPrimaryUser() const { 721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return GetLoggedInUser(); 73d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 74d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MultiProfileUserController* MockUserManager::GetMultiProfileUserController() { 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return NULL; 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UserImageManager* MockUserManager::GetUserImageManager( 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& user_id) { 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return NULL; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)SupervisedUserManager* MockUserManager::GetSupervisedUserManager() { 858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return supervised_user_manager_.get(); 868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates a new User instance. 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockUserManager::SetActiveUser(const std::string& email) { 901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ClearUserList(); 911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) AddUser(email); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserFlow* MockUserManager::GetCurrentUserFlow() const { 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return user_flow_.get(); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserFlow* MockUserManager::GetUserFlow(const std::string&) const { 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return user_flow_.get(); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)user_manager::User* MockUserManager::CreatePublicAccountUser( 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& email) { 1041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ClearUserList(); 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::User* user = user_manager::User::CreatePublicAccountUser(email); 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch user_list_.push_back(user); 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProfileHelper::Get()->SetProfileToUserMappingForTesting(user); 1081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return user_list_.back(); 1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void MockUserManager::AddUser(const std::string& email) { 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::User* user = user_manager::User::CreateRegularUser(email); 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch user_list_.push_back(user); 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProfileHelper::Get()->SetProfileToUserMappingForTesting(user); 1151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 1161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void MockUserManager::ClearUserList() { 1181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Can't use STLDeleteElements because of the protected destructor of User. 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::UserList::iterator user; 1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) for (user = user_list_.begin(); user != user_list_.end(); ++user) 1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) delete *user; 12258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) user_list_.clear(); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 126