Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: ash/system/session_length_limit/tray_session_length_limit.h

Issue 178183005: Add LogoutConfirmationController to show LogoutConfirmationDialogs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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_SYSTEM_SESSION_LENGTH_LIMIT_TRAY_SESSION_LENGTH_LIMIT_H_
6 #define ASH_SYSTEM_SESSION_LENGTH_LIMIT_TRAY_SESSION_LENGTH_LIMIT_H_
7
8 #include "ash/system/session_length_limit/session_length_limit_observer.h"
9 #include "ash/system/tray/system_tray_item.h"
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/time/time.h"
14 #include "base/timer/timer.h"
15
16 namespace ash {
17
18 namespace test {
19 class TraySessionLengthLimitTest;
20 }
21
22 namespace internal {
23
24 namespace tray {
25 class RemainingSessionTimeTrayView;
26 }
27
28 // Adds a countdown timer to the system tray if the session length is limited.
29 class ASH_EXPORT TraySessionLengthLimit : public SystemTrayItem,
30 public SessionLengthLimitObserver {
31 public:
32 enum LimitState {
33 LIMIT_NONE,
34 LIMIT_SET,
35 LIMIT_EXPIRING_SOON
36 };
37
38 explicit TraySessionLengthLimit(SystemTray* system_tray);
39 virtual ~TraySessionLengthLimit();
40
41 // SystemTrayItem:
42 virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
43 virtual void DestroyTrayView() OVERRIDE;
44 virtual void UpdateAfterShelfAlignmentChange(
45 ShelfAlignment alignment) OVERRIDE;
46
47 // SessionLengthLimitObserver:
48 virtual void OnSessionStartTimeChanged() OVERRIDE;
49 virtual void OnSessionLengthLimitChanged() OVERRIDE;
50
51 LimitState GetLimitState() const;
52 base::TimeDelta GetRemainingSessionTime() const;
53
54 private:
55 friend class test::TraySessionLengthLimitTest;
56
57 static const char kNotificationId[];
58
59 void Update();
60
61 bool IsTrayViewVisibleForTest();
62
63 tray::RemainingSessionTimeTrayView* tray_view_;
64
65 LimitState limit_state_;
66 base::TimeTicks session_start_time_;
67 base::TimeDelta limit_;
68 base::TimeDelta remaining_session_time_;
69 scoped_ptr<base::RepeatingTimer<TraySessionLengthLimit> > timer_;
70
71 DISALLOW_COPY_AND_ASSIGN(TraySessionLengthLimit);
72 };
73
74 } // namespace internal
75 } // namespace ash
76
77 #endif // ASH_SYSTEM_SESSION_LENGTH_LIMIT_TRAY_SESSION_LENGTH_LIMIT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698