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 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" 6 7 #include "base/task_runner.h" 8 #include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h" 9 #include "chrome/browser/chromeos/profiles/profile_helper.h" 10 11 namespace { 12 13 class FakeTaskRunner : public base::TaskRunner { 14 public: 15 virtual bool PostDelayedTask(const tracked_objects::Location& from_here, 16 const base::Closure& task, 17 base::TimeDelta delay) OVERRIDE { 18 task.Run(); 19 return true; 20 } 21 virtual bool RunsTasksOnCurrentThread() const OVERRIDE { return true; } 22 23 protected: 24 virtual ~FakeTaskRunner() {} 25 }; 26 27 } // namespace 28 29 namespace chromeos { 30 31 MockUserManager::MockUserManager() 32 : ChromeUserManager(new FakeTaskRunner(), new FakeTaskRunner()), 33 user_flow_(new DefaultUserFlow()), 34 supervised_user_manager_(new FakeSupervisedUserManager()) { 35 ProfileHelper::SetProfileToUserForTestingEnabled(true); 36 } 37 38 MockUserManager::~MockUserManager() { 39 ProfileHelper::SetProfileToUserForTestingEnabled(false); 40 ClearUserList(); 41 } 42 43 const user_manager::UserList& MockUserManager::GetUsers() const { 44 return user_list_; 45 } 46 47 const user_manager::User* MockUserManager::GetLoggedInUser() const { 48 return user_list_.empty() ? NULL : user_list_.front(); 49 } 50 51 user_manager::User* MockUserManager::GetLoggedInUser() { 52 return user_list_.empty() ? NULL : user_list_.front(); 53 } 54 55 user_manager::UserList MockUserManager::GetUnlockUsers() const { 56 return user_list_; 57 } 58 59 const std::string& MockUserManager::GetOwnerEmail() const { 60 return GetLoggedInUser()->email(); 61 } 62 63 const user_manager::User* MockUserManager::GetActiveUser() const { 64 return GetLoggedInUser(); 65 } 66 67 user_manager::User* MockUserManager::GetActiveUser() { 68 return GetLoggedInUser(); 69 } 70 71 const user_manager::User* MockUserManager::GetPrimaryUser() const { 72 return GetLoggedInUser(); 73 } 74 75 MultiProfileUserController* MockUserManager::GetMultiProfileUserController() { 76 return NULL; 77 } 78 79 UserImageManager* MockUserManager::GetUserImageManager( 80 const std::string& user_id) { 81 return NULL; 82 } 83 84 SupervisedUserManager* MockUserManager::GetSupervisedUserManager() { 85 return supervised_user_manager_.get(); 86 } 87 88 // Creates a new User instance. 89 void MockUserManager::SetActiveUser(const std::string& email) { 90 ClearUserList(); 91 AddUser(email); 92 } 93 94 UserFlow* MockUserManager::GetCurrentUserFlow() const { 95 return user_flow_.get(); 96 } 97 98 UserFlow* MockUserManager::GetUserFlow(const std::string&) const { 99 return user_flow_.get(); 100 } 101 102 user_manager::User* MockUserManager::CreatePublicAccountUser( 103 const std::string& email) { 104 ClearUserList(); 105 user_manager::User* user = user_manager::User::CreatePublicAccountUser(email); 106 user_list_.push_back(user); 107 ProfileHelper::Get()->SetProfileToUserMappingForTesting(user); 108 return user_list_.back(); 109 } 110 111 void MockUserManager::AddUser(const std::string& email) { 112 user_manager::User* user = user_manager::User::CreateRegularUser(email); 113 user_list_.push_back(user); 114 ProfileHelper::Get()->SetProfileToUserMappingForTesting(user); 115 } 116 117 void MockUserManager::ClearUserList() { 118 // Can't use STLDeleteElements because of the protected destructor of User. 119 user_manager::UserList::iterator user; 120 for (user = user_list_.begin(); user != user_list_.end(); ++user) 121 delete *user; 122 user_list_.clear(); 123 } 124 125 } // namespace chromeos 126