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