| OLD | NEW |
| (Empty) |
| 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/common/test/test_system_tray_delegate.h" | |
| 6 | |
| 7 #include <string> | |
| 8 | |
| 9 #include "ash/common/login_status.h" | |
| 10 #include "ash/common/session/session_state_delegate.h" | |
| 11 #include "ash/common/wm_shell.h" | |
| 12 #include "base/time/time.h" | |
| 13 | |
| 14 namespace ash { | |
| 15 namespace test { | |
| 16 | |
| 17 namespace { | |
| 18 | |
| 19 LoginStatus g_initial_status = LoginStatus::USER; | |
| 20 | |
| 21 } // namespace | |
| 22 | |
| 23 TestSystemTrayDelegate::TestSystemTrayDelegate() | |
| 24 : login_status_(g_initial_status), session_length_limit_set_(false) {} | |
| 25 | |
| 26 TestSystemTrayDelegate::~TestSystemTrayDelegate() {} | |
| 27 | |
| 28 void TestSystemTrayDelegate::SetLoginStatus(LoginStatus login_status) { | |
| 29 login_status_ = login_status; | |
| 30 WmShell::Get()->UpdateAfterLoginStatusChange(login_status); | |
| 31 } | |
| 32 | |
| 33 void TestSystemTrayDelegate::SetSessionLengthLimitForTest( | |
| 34 const base::TimeDelta& new_limit) { | |
| 35 session_length_limit_ = new_limit; | |
| 36 session_length_limit_set_ = true; | |
| 37 } | |
| 38 | |
| 39 void TestSystemTrayDelegate::ClearSessionLengthLimit() { | |
| 40 session_length_limit_set_ = false; | |
| 41 } | |
| 42 | |
| 43 void TestSystemTrayDelegate::SetCurrentIME(const IMEInfo& info) { | |
| 44 current_ime_ = info; | |
| 45 } | |
| 46 | |
| 47 void TestSystemTrayDelegate::SetAvailableIMEList(const IMEInfoList& list) { | |
| 48 ime_list_ = list; | |
| 49 } | |
| 50 | |
| 51 LoginStatus TestSystemTrayDelegate::GetUserLoginStatus() const { | |
| 52 // Initial login status has been changed for testing. | |
| 53 if (g_initial_status != LoginStatus::USER && | |
| 54 g_initial_status == login_status_) { | |
| 55 return login_status_; | |
| 56 } | |
| 57 | |
| 58 // At new user image screen manager->IsUserLoggedIn() would return true | |
| 59 // but there's no browser session available yet so use SessionStarted(). | |
| 60 SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); | |
| 61 | |
| 62 if (!delegate->IsActiveUserSessionStarted()) | |
| 63 return LoginStatus::NOT_LOGGED_IN; | |
| 64 if (delegate->IsScreenLocked()) | |
| 65 return LoginStatus::LOCKED; | |
| 66 return login_status_; | |
| 67 } | |
| 68 | |
| 69 bool TestSystemTrayDelegate::IsUserSupervised() const { | |
| 70 return login_status_ == LoginStatus::SUPERVISED; | |
| 71 } | |
| 72 | |
| 73 bool TestSystemTrayDelegate::GetSessionStartTime( | |
| 74 base::TimeTicks* session_start_time) { | |
| 75 // Just returns TimeTicks::Now(), so the remaining time is always the | |
| 76 // specified limit. This is useful for testing. | |
| 77 if (session_length_limit_set_) | |
| 78 *session_start_time = base::TimeTicks::Now(); | |
| 79 return session_length_limit_set_; | |
| 80 } | |
| 81 | |
| 82 bool TestSystemTrayDelegate::GetSessionLengthLimit( | |
| 83 base::TimeDelta* session_length_limit) { | |
| 84 if (session_length_limit_set_) | |
| 85 *session_length_limit = session_length_limit_; | |
| 86 return session_length_limit_set_; | |
| 87 } | |
| 88 | |
| 89 void TestSystemTrayDelegate::GetCurrentIME(IMEInfo* info) { | |
| 90 *info = current_ime_; | |
| 91 } | |
| 92 | |
| 93 void TestSystemTrayDelegate::GetAvailableIMEList(IMEInfoList* list) { | |
| 94 *list = ime_list_; | |
| 95 } | |
| 96 | |
| 97 //////////////////////////////////////////////////////////////////////////////// | |
| 98 | |
| 99 ScopedInitialLoginStatus::ScopedInitialLoginStatus(LoginStatus new_status) | |
| 100 : old_status_(g_initial_status) { | |
| 101 g_initial_status = new_status; | |
| 102 } | |
| 103 | |
| 104 ScopedInitialLoginStatus::~ScopedInitialLoginStatus() { | |
| 105 g_initial_status = old_status_; | |
| 106 } | |
| 107 | |
| 108 } // namespace test | |
| 109 } // namespace ash | |
| OLD | NEW |