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)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h"
88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)MockUserManager::MockUserManager()
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    : user_flow_(new DefaultUserFlow()),
138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      supervised_user_manager_(new FakeSupervisedUserManager()) {}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockUserManager::~MockUserManager() {
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ClearUserList();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)const UserList& MockUserManager::GetUsers() const {
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return user_list_;
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const User* MockUserManager::GetLoggedInUser() const {
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return user_list_.empty() ? NULL : user_list_.front();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)User* MockUserManager::GetLoggedInUser() {
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return user_list_.empty() ? NULL : user_list_.front();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)UserList MockUserManager::GetUnlockUsers() const {
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return user_list_;
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)const std::string& MockUserManager::GetOwnerEmail() {
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return GetLoggedInUser()->email();
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const User* MockUserManager::GetActiveUser() const {
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return GetLoggedInUser();
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)User* MockUserManager::GetActiveUser() {
441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return GetLoggedInUser();
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)const User* MockUserManager::GetPrimaryUser() const {
481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return GetLoggedInUser();
49d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
50d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)User* MockUserManager::GetUserByProfile(Profile* profile) const {
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return user_list_.empty() ? NULL : user_list_.front();
534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MultiProfileUserController* MockUserManager::GetMultiProfileUserController() {
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return NULL;
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UserImageManager* MockUserManager::GetUserImageManager(
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    const std::string& user_id) {
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return NULL;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)SupervisedUserManager* MockUserManager::GetSupervisedUserManager() {
658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  return supervised_user_manager_.get();
668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates a new User instance.
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockUserManager::SetActiveUser(const std::string& email) {
701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ClearUserList();
711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AddUser(email);
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserFlow* MockUserManager::GetCurrentUserFlow() const {
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return user_flow_.get();
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserFlow* MockUserManager::GetUserFlow(const std::string&) const {
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return user_flow_.get();
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)User* MockUserManager::CreatePublicAccountUser(const std::string& email) {
831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ClearUserList();
841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  user_list_.push_back(User::CreatePublicAccountUser(email));
851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return user_list_.back();
861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void MockUserManager::AddUser(const std::string& email) {
891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  user_list_.push_back(User::CreateRegularUser(email));
901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void MockUserManager::ClearUserList() {
931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Can't use STLDeleteElements because of the protected destructor of User.
941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  UserList::iterator user;
951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  for (user = user_list_.begin(); user != user_list_.end(); ++user)
961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    delete *user;
9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  user_list_.clear();
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool MockUserManager::RespectLocalePreference(
101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    Profile* profile,
102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const User* user,
103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    scoped_ptr<locale_util::SwitchLanguageCallback> callback) const {
104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return false;
1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
108