blob: 60fb4b31e1fc4fc81fba6b930baad00985792c7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
// Copyright 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_system_tray_delegate.h"
#include <string>
#include "ash/session/session_state_delegate.h"
#include "ash/shell.h"
#include "ash/system/user/login_status.h"
#include "base/message_loop/message_loop.h"
#include "base/time/time.h"
namespace ash {
namespace test {
namespace {
user::LoginStatus g_initial_status = user::LOGGED_IN_USER;
} // namespace
TestSystemTrayDelegate::TestSystemTrayDelegate()
: should_show_display_notification_(false),
login_status_(g_initial_status),
session_length_limit_set_(false) {
}
TestSystemTrayDelegate::~TestSystemTrayDelegate() {
}
// static
void TestSystemTrayDelegate::SetInitialLoginStatus(
user::LoginStatus login_status) {
g_initial_status = login_status;
}
void TestSystemTrayDelegate::SetLoginStatus(user::LoginStatus login_status) {
login_status_ = login_status;
Shell::GetInstance()->UpdateAfterLoginStatusChange(login_status);
}
void TestSystemTrayDelegate::SetSessionLengthLimitForTest(
const base::TimeDelta& new_limit) {
session_length_limit_ = new_limit;
session_length_limit_set_ = true;
}
void TestSystemTrayDelegate::ClearSessionLengthLimit() {
session_length_limit_set_ = false;
}
user::LoginStatus TestSystemTrayDelegate::GetUserLoginStatus() const {
// Initial login status has been changed for testing.
if (g_initial_status != user::LOGGED_IN_USER &&
g_initial_status == login_status_) {
return login_status_;
}
// At new user image screen manager->IsUserLoggedIn() would return true
// but there's no browser session available yet so use SessionStarted().
SessionStateDelegate* delegate =
Shell::GetInstance()->session_state_delegate();
if (!delegate->IsActiveUserSessionStarted())
return ash::user::LOGGED_IN_NONE;
if (delegate->IsScreenLocked())
return user::LOGGED_IN_LOCKED;
return login_status_;
}
bool TestSystemTrayDelegate::IsUserSupervised() const {
return login_status_ == ash::user::LOGGED_IN_SUPERVISED;
}
bool TestSystemTrayDelegate::ShouldShowDisplayNotification() {
return should_show_display_notification_;
}
bool TestSystemTrayDelegate::GetSessionStartTime(
base::TimeTicks* session_start_time) {
// Just returns TimeTicks::Now(), so the remaining time is always the
// specified limit. This is useful for testing.
if (session_length_limit_set_)
*session_start_time = base::TimeTicks::Now();
return session_length_limit_set_;
}
bool TestSystemTrayDelegate::GetSessionLengthLimit(
base::TimeDelta* session_length_limit) {
if (session_length_limit_set_)
*session_length_limit = session_length_limit_;
return session_length_limit_set_;
}
void TestSystemTrayDelegate::ShutDown() {
base::MessageLoop::current()->Quit();
}
void TestSystemTrayDelegate::SignOut() {
base::MessageLoop::current()->Quit();
}
} // namespace test
} // namespace ash
|