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. 4 5#include "ash/test/test_session_state_delegate.h" 6 7#include <algorithm> 8#include <string> 9 10#include "ash/shell.h" 11#include "ash/system/user/login_status.h" 12#include "base/strings/string16.h" 13#include "base/strings/utf_string_conversions.h" 14#include "testing/gtest/include/gtest/gtest.h" 15 16namespace { 17 18// The the "canonicalized" user ID from a given |email| address. 19std::string GetUserIDFromEmail(const std::string& email) { 20 std::string user_id = email; 21 std::transform(user_id.begin(), user_id.end(), user_id.begin(), ::tolower); 22 return user_id; 23} 24 25} // namespace 26 27namespace ash { 28namespace test { 29 30TestSessionStateDelegate::TestSessionStateDelegate() 31 : has_active_user_(false), 32 active_user_session_started_(false), 33 can_lock_screen_(true), 34 should_lock_screen_before_suspending_(false), 35 screen_locked_(false), 36 user_adding_screen_running_(false), 37 logged_in_users_(1), 38 num_transfer_to_desktop_of_user_calls_(0) { 39} 40 41TestSessionStateDelegate::~TestSessionStateDelegate() { 42} 43 44int TestSessionStateDelegate::GetMaximumNumberOfLoggedInUsers() const { 45 return 3; 46} 47 48int TestSessionStateDelegate::NumberOfLoggedInUsers() const { 49 // TODO(skuhne): Add better test framework to test multiple profiles. 50 return has_active_user_ ? logged_in_users_ : 0; 51} 52 53bool TestSessionStateDelegate::IsActiveUserSessionStarted() const { 54 return active_user_session_started_; 55} 56 57bool TestSessionStateDelegate::CanLockScreen() const { 58 return has_active_user_ && can_lock_screen_; 59} 60 61bool TestSessionStateDelegate::IsScreenLocked() const { 62 return screen_locked_; 63} 64 65bool TestSessionStateDelegate::ShouldLockScreenBeforeSuspending() const { 66 return should_lock_screen_before_suspending_; 67} 68 69void TestSessionStateDelegate::LockScreen() { 70 if (CanLockScreen()) 71 screen_locked_ = true; 72} 73 74void TestSessionStateDelegate::UnlockScreen() { 75 screen_locked_ = false; 76} 77 78bool TestSessionStateDelegate::IsUserSessionBlocked() const { 79 return !IsActiveUserSessionStarted() || IsScreenLocked() || 80 user_adding_screen_running_; 81} 82 83void TestSessionStateDelegate::SetHasActiveUser(bool has_active_user) { 84 has_active_user_ = has_active_user; 85 if (!has_active_user) 86 active_user_session_started_ = false; 87 else 88 Shell::GetInstance()->ShowLauncher(); 89} 90 91void TestSessionStateDelegate::SetActiveUserSessionStarted( 92 bool active_user_session_started) { 93 active_user_session_started_ = active_user_session_started; 94 if (active_user_session_started) { 95 has_active_user_ = true; 96 Shell::GetInstance()->CreateLauncher(); 97 Shell::GetInstance()->UpdateAfterLoginStatusChange( 98 user::LOGGED_IN_USER); 99 } 100} 101 102void TestSessionStateDelegate::SetCanLockScreen(bool can_lock_screen) { 103 can_lock_screen_ = can_lock_screen; 104} 105 106void TestSessionStateDelegate::SetShouldLockScreenBeforeSuspending( 107 bool should_lock) { 108 should_lock_screen_before_suspending_ = should_lock; 109} 110 111void TestSessionStateDelegate::SetUserAddingScreenRunning( 112 bool user_adding_screen_running) { 113 user_adding_screen_running_ = user_adding_screen_running; 114} 115 116const base::string16 TestSessionStateDelegate::GetUserDisplayName( 117 MultiProfileIndex index) const { 118 return UTF8ToUTF16("Über tray Über tray Über tray Über tray"); 119} 120 121const std::string TestSessionStateDelegate::GetUserEmail( 122 MultiProfileIndex index) const { 123 switch (index) { 124 case 0: return "First@tray"; // This is intended to be capitalized. 125 case 1: return "Second@tray"; // This is intended to be capitalized. 126 case 2: return "third@tray"; 127 default: return "someone@tray"; 128 } 129} 130 131const std::string TestSessionStateDelegate::GetUserID( 132 MultiProfileIndex index) const { 133 return GetUserIDFromEmail(GetUserEmail(index)); 134} 135 136const gfx::ImageSkia& TestSessionStateDelegate::GetUserImage( 137 MultiProfileIndex index) const { 138 return null_image_; 139} 140 141void TestSessionStateDelegate::GetLoggedInUsers(UserIdList* users) { 142} 143 144void TestSessionStateDelegate::SwitchActiveUser(const std::string& user_id) { 145 // Make sure this is a user id and not an email address. 146 EXPECT_EQ(user_id, GetUserIDFromEmail(user_id)); 147 activated_user_ = user_id; 148} 149 150void TestSessionStateDelegate::CycleActiveUser(CycleUser cycle_user) { 151 activated_user_ = "someone@tray"; 152} 153 154void TestSessionStateDelegate::AddSessionStateObserver( 155 SessionStateObserver* observer) { 156} 157 158void TestSessionStateDelegate::RemoveSessionStateObserver( 159 SessionStateObserver* observer) { 160} 161 162bool TestSessionStateDelegate::TransferWindowToDesktopOfUser( 163 aura::Window* window, 164 ash::MultiProfileIndex index) { 165 num_transfer_to_desktop_of_user_calls_++; 166 return false; 167} 168 169} // namespace test 170} // namespace ash 171