Chromium Code Reviews| Index: chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc |
| diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..099a105f7657ee7027292f6becea0c39ea511c40 |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc |
| @@ -0,0 +1,148 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
| + |
| +#include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h" |
| +#include "chrome/browser/chromeos/profiles/profile_helper.h" |
| +#include "chrome/browser/chromeos/settings/cros_settings.h" |
| +#include "chrome/grit/theme_resources.h" |
| +#include "components/user_manager/user_image/user_image.h" |
| +#include "components/user_manager/user_type.h" |
| +#include "ui/base/resource/resource_bundle.h" |
| + |
| +namespace chromeos { |
| + |
| +class FakeSupervisedUserManager; |
| + |
| +FakeChromeUserManager::FakeChromeUserManager() |
| + : supervised_user_manager_(new FakeSupervisedUserManager), |
| + multi_profile_user_controller_(NULL) { |
| +} |
| + |
| +FakeChromeUserManager::~FakeChromeUserManager() { |
| + // Can't use STLDeleteElements because of the private destructor of User. |
|
ygorshenin1
2015/01/20 18:33:40
Feel free to mark User::~User() as public. BTW, wh
merkulova
2015/01/21 14:10:33
Removed the d-tor.
|
| + for (user_manager::UserList::iterator it = user_list_.begin(); |
| + it != user_list_.end(); |
| + it = user_list_.erase(it)) { |
| + delete *it; |
| + } |
| +} |
| + |
| +const user_manager::User* |
| +FakeChromeUserManager::AddUser(const std::string& email) { |
| + user_manager::User* user = user_manager::User::CreateRegularUser(email); |
| + user->set_username_hash( |
| + ProfileHelper::GetUserIdHashByUserIdForTesting(email)); |
| + user->SetStubImage(user_manager::UserImage( |
| + *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
| + IDR_PROFILE_PICTURE_LOADING)), |
| + user_manager::User::USER_IMAGE_PROFILE, |
| + false); |
| + user_list_.push_back(user); |
| + return user; |
| +} |
| + |
| +const user_manager::User* FakeChromeUserManager::AddPublicAccountUser( |
| + const std::string& email) { |
| + user_manager::User* user = user_manager::User::CreatePublicAccountUser(email); |
| + user->set_username_hash( |
| + ProfileHelper::GetUserIdHashByUserIdForTesting(email)); |
| + user->SetStubImage(user_manager::UserImage( |
| + *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
| + IDR_PROFILE_PICTURE_LOADING)), |
| + user_manager::User::USER_IMAGE_PROFILE, |
| + false); |
| + user_list_.push_back(user); |
| + return user; |
| +} |
| + |
| +void FakeChromeUserManager::AddKioskAppUser( |
| + const std::string& kiosk_app_username) { |
| + user_manager::User* user = |
| + user_manager::User::CreateKioskAppUser(kiosk_app_username); |
| + user->set_username_hash( |
| + ProfileHelper::GetUserIdHashByUserIdForTesting(kiosk_app_username)); |
| + user_list_.push_back(user); |
| +} |
| + |
| +void FakeChromeUserManager::LoginUser(const std::string& email) { |
| + UserLoggedIn( |
| + email, ProfileHelper::GetUserIdHashByUserIdForTesting(email), false); |
|
ygorshenin1
2015/01/20 18:33:40
Could you please add /* browser_restart */ after f
merkulova
2015/01/21 14:10:33
Done.
|
| +} |
| + |
| +MultiProfileUserController* |
| +FakeChromeUserManager::GetMultiProfileUserController() { |
| + return multi_profile_user_controller_; |
| +} |
| + |
| +SupervisedUserManager* FakeChromeUserManager::GetSupervisedUserManager() { |
| + return supervised_user_manager_.get(); |
| +} |
| + |
| +UserImageManager* FakeChromeUserManager::GetUserImageManager( |
| + const std::string& /* user_id */) { |
| + return NULL; |
|
ygorshenin1
2015/01/20 18:33:40
Modern fancy approach is to use nullptr instead of
merkulova
2015/01/21 14:10:33
Done.
|
| +} |
| + |
| +UserFlow* FakeChromeUserManager::GetCurrentUserFlow() const { |
| + return NULL; |
| +} |
| + |
| +UserFlow* FakeChromeUserManager::GetUserFlow(const std::string& email) const { |
| + return NULL; |
| +} |
| + |
| +void FakeChromeUserManager::SwitchActiveUser(const std::string& email) { |
| + active_user_id_ = email; |
| + ProfileHelper::Get()->ActiveUserHashChanged( |
| + ProfileHelper::GetUserIdHashByUserIdForTesting(email)); |
| + if (user_list_.size() && !active_user_id_.empty()) { |
| + for (user_manager::UserList::const_iterator it = user_list_.begin(); |
|
ygorshenin1
2015/01/20 18:33:40
for (User* user : user_list_)
user->set_is_activ
merkulova
2015/01/21 14:10:33
Done.
|
| + it != user_list_.end(); ++it) { |
| + (*it)->set_is_active((*it)->email() == active_user_id_); |
| + } |
| + } |
| +} |
| + |
| +const std::string& FakeChromeUserManager::GetOwnerEmail() const { |
| + return owner_email_; |
| +} |
| + |
| +user_manager::UserList |
| +FakeChromeUserManager::GetUsersAllowedForSupervisedUsersCreation() const { |
| + CrosSettings* cros_settings = CrosSettings::Get(); |
| + bool allow_new_user = true; |
| + cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); |
| + bool supervised_users_allowed = AreSupervisedUsersAllowed(); |
| + |
| + // Restricted either by policy or by owner. |
| + if (!allow_new_user || !supervised_users_allowed) |
| + return user_manager::UserList(); |
| + |
| + return GetUsersAllowedAsSupervisedUserManagers(GetUsers()); |
| +} |
| + |
| +user_manager::UserList |
| +FakeChromeUserManager::GetUsersAllowedForMultiProfile() const { |
| + // Supervised users are not allowed to use multi-profiles. |
| + if (GetLoggedInUsers().size() == 1 && |
| + GetPrimaryUser()->GetType() != user_manager::USER_TYPE_REGULAR) { |
| + return user_manager::UserList(); |
| + } |
| + |
| + user_manager::UserList result; |
| + const user_manager::UserList& users = GetUsers(); |
| + for (user_manager::UserList::const_iterator it = users.begin(); |
| + it != users.end(); |
| + ++it) { |
| + if ((*it)->GetType() == user_manager::USER_TYPE_REGULAR && |
| + !(*it)->is_logged_in()) |
| + result.push_back(*it); |
|
ygorshenin1
2015/01/20 18:33:40
Could you please add curly braces around branch?
merkulova
2015/01/21 14:10:33
Done.
|
| + } |
| + |
| + return result; |
| +} |
| + |
| +} // namespace chromeos |