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