// Copyright (c) 2013 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 "ash/test/test_session_state_delegate.h" #include "ash/shell.h" #include "ash/system/user/login_status.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" namespace ash { namespace test { TestSessionStateDelegate::TestSessionStateDelegate() : has_active_user_(false), active_user_session_started_(false), can_lock_screen_(true), screen_locked_(false), user_adding_screen_running_(false), logged_in_users_(1) { } TestSessionStateDelegate::~TestSessionStateDelegate() { } int TestSessionStateDelegate::GetMaximumNumberOfLoggedInUsers() const { return 3; } int TestSessionStateDelegate::NumberOfLoggedInUsers() const { // TODO(skuhne): Add better test framework to test multiple profiles. return has_active_user_ ? logged_in_users_ : 0; } bool TestSessionStateDelegate::IsActiveUserSessionStarted() const { return active_user_session_started_; } bool TestSessionStateDelegate::CanLockScreen() const { return has_active_user_ && can_lock_screen_; } bool TestSessionStateDelegate::IsScreenLocked() const { return screen_locked_; } void TestSessionStateDelegate::LockScreen() { if (CanLockScreen()) screen_locked_ = true; } void TestSessionStateDelegate::UnlockScreen() { screen_locked_ = false; } bool TestSessionStateDelegate::IsUserSessionBlocked() const { return !IsActiveUserSessionStarted() || IsScreenLocked() || user_adding_screen_running_; } void TestSessionStateDelegate::SetHasActiveUser(bool has_active_user) { has_active_user_ = has_active_user; if (!has_active_user) active_user_session_started_ = false; else Shell::GetInstance()->ShowLauncher(); } void TestSessionStateDelegate::SetActiveUserSessionStarted( bool active_user_session_started) { active_user_session_started_ = active_user_session_started; if (active_user_session_started) { has_active_user_ = true; Shell::GetInstance()->CreateLauncher(); Shell::GetInstance()->UpdateAfterLoginStatusChange( user::LOGGED_IN_USER); } } void TestSessionStateDelegate::SetCanLockScreen(bool can_lock_screen) { can_lock_screen_ = can_lock_screen; } void TestSessionStateDelegate::SetUserAddingScreenRunning( bool user_adding_screen_running) { user_adding_screen_running_ = user_adding_screen_running; } const base::string16 TestSessionStateDelegate::GetUserDisplayName( MultiProfileIndex index) const { return UTF8ToUTF16("Über tray Über tray Über tray Über tray"); } const std::string TestSessionStateDelegate::GetUserEmail( MultiProfileIndex index) const { switch (index) { case 0: return "first@tray"; case 1: return "second@tray"; case 2: return "third@tray"; default: return "someone@tray"; } } const gfx::ImageSkia& TestSessionStateDelegate::GetUserImage( MultiProfileIndex index) const { return null_image_; } void TestSessionStateDelegate::GetLoggedInUsers(UserIdList* users) { } void TestSessionStateDelegate::SwitchActiveUser(const std::string& email) { activated_user_ = email; } void TestSessionStateDelegate::AddSessionStateObserver( SessionStateObserver* observer) { } void TestSessionStateDelegate::RemoveSessionStateObserver( SessionStateObserver* observer) { } } // namespace test } // namespace ash