1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/test/test_session_state_delegate.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/shell.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/system/user/login_status.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace test { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestSessionStateDelegate::TestSessionStateDelegate() 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : has_active_user_(false), 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch active_user_session_started_(false), 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) can_lock_screen_(true), 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) screen_locked_(false), 20bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch user_adding_screen_running_(false), 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) logged_in_users_(1) { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestSessionStateDelegate::~TestSessionStateDelegate() { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int TestSessionStateDelegate::GetMaximumNumberOfLoggedInUsers() const { 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return 3; 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int TestSessionStateDelegate::NumberOfLoggedInUsers() const { 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // TODO(skuhne): Add better test framework to test multiple profiles. 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return has_active_user_ ? logged_in_users_ : 0; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool TestSessionStateDelegate::IsActiveUserSessionStarted() const { 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return active_user_session_started_; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool TestSessionStateDelegate::CanLockScreen() const { 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return has_active_user_ && can_lock_screen_; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool TestSessionStateDelegate::IsScreenLocked() const { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return screen_locked_; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestSessionStateDelegate::LockScreen() { 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CanLockScreen()) 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) screen_locked_ = true; 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestSessionStateDelegate::UnlockScreen() { 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) screen_locked_ = false; 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochbool TestSessionStateDelegate::IsUserSessionBlocked() const { 58bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return !IsActiveUserSessionStarted() || IsScreenLocked() || 59bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch user_adding_screen_running_; 60bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 61bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestSessionStateDelegate::SetHasActiveUser(bool has_active_user) { 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) has_active_user_ = has_active_user; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!has_active_user) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) active_user_session_started_ = false; 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch else 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->ShowLauncher(); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestSessionStateDelegate::SetActiveUserSessionStarted( 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool active_user_session_started) { 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) active_user_session_started_ = active_user_session_started; 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (active_user_session_started) { 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) has_active_user_ = true; 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->CreateLauncher(); 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->UpdateAfterLoginStatusChange( 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch user::LOGGED_IN_USER); 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestSessionStateDelegate::SetCanLockScreen(bool can_lock_screen) { 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) can_lock_screen_ = can_lock_screen; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 85bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochvoid TestSessionStateDelegate::SetUserAddingScreenRunning( 86bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool user_adding_screen_running) { 87bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch user_adding_screen_running_ = user_adding_screen_running; 88bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 89bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const base::string16 TestSessionStateDelegate::GetUserDisplayName( 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MultiProfileIndex index) const { 9290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return UTF8ToUTF16("Über tray Über tray Über tray Über tray"); 9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 9590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const std::string TestSessionStateDelegate::GetUserEmail( 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MultiProfileIndex index) const { 9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) switch (index) { 9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case 0: return "first@tray"; 9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case 1: return "second@tray"; 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case 2: return "third@tray"; 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) default: return "someone@tray"; 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const gfx::ImageSkia& TestSessionStateDelegate::GetUserImage( 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MultiProfileIndex index) const { 10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return null_image_; 10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 110868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestSessionStateDelegate::GetLoggedInUsers(UserIdList* users) { 11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 11290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 11390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void TestSessionStateDelegate::SwitchActiveUser(const std::string& email) { 11490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) activated_user_ = email; 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 11690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 117868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestSessionStateDelegate::AddSessionStateObserver( 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SessionStateObserver* observer) { 119868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 120868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 121868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestSessionStateDelegate::RemoveSessionStateObserver( 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SessionStateObserver* observer) { 123868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace test 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ash 127