replace OVERRIDE and FINAL with override and final in ash/
[chromium-blink-merge.git] / ash / test / test_session_state_delegate.cc
blobc583763fbd5021c441bb7a7262744acbfe3afce6
1 // Copyright (c) 2013 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.
5 #include "ash/test/test_session_state_delegate.h"
7 #include <algorithm>
8 #include <string>
10 #include "ash/shell.h"
11 #include "ash/system/user/login_status.h"
12 #include "base/stl_util.h"
13 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h"
15 #include "components/user_manager/user_info.h"
16 #include "testing/gtest/include/gtest/gtest.h"
18 namespace ash {
19 namespace test {
21 namespace {
23 // The the "canonicalized" user ID from a given |email| address.
24 std::string GetUserIDFromEmail(const std::string& email) {
25 std::string user_id = email;
26 std::transform(user_id.begin(), user_id.end(), user_id.begin(), ::tolower);
27 return user_id;
30 } // namespace
32 class MockUserInfo : public user_manager::UserInfo {
33 public:
34 explicit MockUserInfo(const std::string& id) : email_(id) {}
35 virtual ~MockUserInfo() {}
37 void SetUserImage(const gfx::ImageSkia& user_image) {
38 user_image_ = user_image;
41 virtual base::string16 GetDisplayName() const override {
42 return base::UTF8ToUTF16("Über tray Über tray Über tray Über tray");
45 virtual base::string16 GetGivenName() const override {
46 return base::UTF8ToUTF16("Über Über Über Über");
49 virtual std::string GetEmail() const override { return email_; }
51 virtual std::string GetUserID() const override {
52 return GetUserIDFromEmail(GetEmail());
55 virtual const gfx::ImageSkia& GetImage() const override {
56 return user_image_;
59 // A test user image.
60 gfx::ImageSkia user_image_;
62 std::string email_;
64 DISALLOW_COPY_AND_ASSIGN(MockUserInfo);
67 TestSessionStateDelegate::TestSessionStateDelegate()
68 : has_active_user_(false),
69 active_user_session_started_(false),
70 can_lock_screen_(true),
71 should_lock_screen_before_suspending_(false),
72 screen_locked_(false),
73 user_adding_screen_running_(false),
74 logged_in_users_(1),
75 active_user_index_(0) {
76 user_list_.push_back(
77 new MockUserInfo("First@tray")); // This is intended to be capitalized.
78 user_list_.push_back(
79 new MockUserInfo("Second@tray")); // This is intended to be capitalized.
80 user_list_.push_back(new MockUserInfo("third@tray"));
81 user_list_.push_back(new MockUserInfo("someone@tray"));
84 TestSessionStateDelegate::~TestSessionStateDelegate() {
85 STLDeleteElements(&user_list_);
88 void TestSessionStateDelegate::AddUser(const std::string user_id) {
89 user_list_.push_back(new MockUserInfo(user_id));
92 const user_manager::UserInfo* TestSessionStateDelegate::GetActiveUserInfo()
93 const {
94 return user_list_[active_user_index_];
97 content::BrowserContext*
98 TestSessionStateDelegate::GetBrowserContextByIndex(
99 MultiProfileIndex index) {
100 return NULL;
103 content::BrowserContext*
104 TestSessionStateDelegate::GetBrowserContextForWindow(
105 aura::Window* window) {
106 return NULL;
109 int TestSessionStateDelegate::GetMaximumNumberOfLoggedInUsers() const {
110 return 3;
113 int TestSessionStateDelegate::NumberOfLoggedInUsers() const {
114 // TODO(skuhne): Add better test framework to test multiple profiles.
115 return has_active_user_ ? logged_in_users_ : 0;
118 bool TestSessionStateDelegate::IsActiveUserSessionStarted() const {
119 return active_user_session_started_;
122 bool TestSessionStateDelegate::CanLockScreen() const {
123 return has_active_user_ && can_lock_screen_;
126 bool TestSessionStateDelegate::IsScreenLocked() const {
127 return screen_locked_;
130 bool TestSessionStateDelegate::ShouldLockScreenBeforeSuspending() const {
131 return should_lock_screen_before_suspending_;
134 void TestSessionStateDelegate::LockScreen() {
135 if (CanLockScreen())
136 screen_locked_ = true;
139 void TestSessionStateDelegate::UnlockScreen() {
140 screen_locked_ = false;
143 bool TestSessionStateDelegate::IsUserSessionBlocked() const {
144 return !IsActiveUserSessionStarted() || IsScreenLocked() ||
145 user_adding_screen_running_;
148 SessionStateDelegate::SessionState TestSessionStateDelegate::GetSessionState()
149 const {
150 if (user_adding_screen_running_)
151 return SESSION_STATE_LOGIN_SECONDARY;
153 // Assuming that if session is not active we're at login.
154 return IsActiveUserSessionStarted() ?
155 SESSION_STATE_ACTIVE : SESSION_STATE_LOGIN_PRIMARY;
158 void TestSessionStateDelegate::SetHasActiveUser(bool has_active_user) {
159 has_active_user_ = has_active_user;
160 if (!has_active_user)
161 active_user_session_started_ = false;
162 else
163 Shell::GetInstance()->ShowShelf();
166 void TestSessionStateDelegate::SetActiveUserSessionStarted(
167 bool active_user_session_started) {
168 active_user_session_started_ = active_user_session_started;
169 if (active_user_session_started) {
170 has_active_user_ = true;
171 Shell::GetInstance()->CreateShelf();
172 Shell::GetInstance()->UpdateAfterLoginStatusChange(
173 user::LOGGED_IN_USER);
177 void TestSessionStateDelegate::SetCanLockScreen(bool can_lock_screen) {
178 can_lock_screen_ = can_lock_screen;
181 void TestSessionStateDelegate::SetShouldLockScreenBeforeSuspending(
182 bool should_lock) {
183 should_lock_screen_before_suspending_ = should_lock;
186 void TestSessionStateDelegate::SetUserAddingScreenRunning(
187 bool user_adding_screen_running) {
188 user_adding_screen_running_ = user_adding_screen_running;
191 void TestSessionStateDelegate::SetUserImage(
192 const gfx::ImageSkia& user_image) {
193 user_list_[active_user_index_]->SetUserImage(user_image);
196 const user_manager::UserInfo* TestSessionStateDelegate::GetUserInfo(
197 MultiProfileIndex index) const {
198 int max = static_cast<int>(user_list_.size());
199 return user_list_[index < max ? index : max - 1];
202 const user_manager::UserInfo* TestSessionStateDelegate::GetUserInfo(
203 content::BrowserContext* context) const {
204 return user_list_[active_user_index_];
207 bool TestSessionStateDelegate::ShouldShowAvatar(aura::Window* window) const {
208 return !GetActiveUserInfo()->GetImage().isNull();
211 void TestSessionStateDelegate::SwitchActiveUser(const std::string& user_id) {
212 // Make sure this is a user id and not an email address.
213 EXPECT_EQ(user_id, GetUserIDFromEmail(user_id));
214 active_user_index_ = 0;
215 for (std::vector<MockUserInfo*>::iterator iter = user_list_.begin();
216 iter != user_list_.end();
217 ++iter) {
218 if ((*iter)->GetUserID() == user_id) {
219 active_user_index_ = iter - user_list_.begin();
220 return;
223 NOTREACHED() << "Unknown user:" << user_id;
226 void TestSessionStateDelegate::CycleActiveUser(CycleUser cycle_user) {
227 SwitchActiveUser("someone@tray");
230 bool TestSessionStateDelegate::IsMultiProfileAllowedByPrimaryUserPolicy()
231 const {
232 return true;
235 void TestSessionStateDelegate::AddSessionStateObserver(
236 SessionStateObserver* observer) {
239 void TestSessionStateDelegate::RemoveSessionStateObserver(
240 SessionStateObserver* observer) {
243 } // namespace test
244 } // namespace ash