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#ifndef ASH_TEST_TEST_SYSTEM_TRAY_DELEGATE_H_
6#define ASH_TEST_TEST_SYSTEM_TRAY_DELEGATE_H_
7
8#include "ash/system/tray/default_system_tray_delegate.h"
9#include "base/time/time.h"
10
11namespace ash {
12namespace test {
13
14class TestSystemTrayDelegate : public DefaultSystemTrayDelegate {
15 public:
16  TestSystemTrayDelegate();
17  virtual ~TestSystemTrayDelegate();
18
19  // Changes the login status when initially the delegate is created. This will
20  // be called before AshTestBase::SetUp() to test the case when chrome is
21  // restarted right after the login (such like a flag is set).
22  // This value will be reset in AshTestHelper::TearDown,  most test fixtures
23  // don't need to care its lifecycle.
24  static void SetInitialLoginStatus(user::LoginStatus login_status);
25
26  // Changes the current login status in the test. This also invokes
27  // UpdateAfterLoginStatusChange(). Usually this is called in the test code to
28  // set up a login status. This will fit to most of the test cases, but this
29  // cannot be set during the initialization. To test the initialization,
30  // consider using SetInitialLoginStatus() instead.
31  void SetLoginStatus(user::LoginStatus login_status);
32
33  void set_should_show_display_notification(bool should_show) {
34    should_show_display_notification_ = should_show;
35  }
36
37  // Updates the session length limit so that the limit will come from now in
38  // |new_limit|.
39  void SetSessionLengthLimitForTest(const base::TimeDelta& new_limit);
40
41  // Clears the session length limit.
42  void ClearSessionLengthLimit();
43
44  // Overridden from SystemTrayDelegate:
45  virtual user::LoginStatus GetUserLoginStatus() const OVERRIDE;
46  virtual bool IsUserSupervised() const OVERRIDE;
47  virtual bool ShouldShowDisplayNotification() OVERRIDE;
48  virtual bool GetSessionStartTime(
49      base::TimeTicks* session_start_time) OVERRIDE;
50  virtual bool GetSessionLengthLimit(
51      base::TimeDelta* session_length_limit) OVERRIDE;
52  virtual void ShutDown() OVERRIDE;
53  virtual void SignOut() OVERRIDE;
54
55 private:
56  bool should_show_display_notification_;
57  user::LoginStatus login_status_;
58  base::TimeDelta session_length_limit_;
59  bool session_length_limit_set_;
60
61  DISALLOW_COPY_AND_ASSIGN(TestSystemTrayDelegate);
62};
63
64}  // namespace test
65}  // namespace ash
66
67#endif  // ASH_TEST_TEST_SYSTEM_TRAY_DELEGATE_H_
68