1// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_MODE_IDLE_APP_NAME_NOTIFICATION_H_
6#define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_MODE_IDLE_APP_NAME_NOTIFICATION_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/timer/timer.h"
12#include "chromeos/dbus/power_manager_client.h"
13#include "ui/wm/core/user_activity_observer.h"
14
15namespace chromeos {
16class IdleAppNameNotificationView;
17
18class KioskModeIdleAppNameNotification : public wm::UserActivityObserver,
19                                         public PowerManagerClient::Observer {
20 public:
21  static void Initialize();
22
23  static void Shutdown();
24
25  KioskModeIdleAppNameNotification();
26  virtual ~KioskModeIdleAppNameNotification();
27
28 private:
29  // Initialize idle app message when KioskModeHelper is initialized.
30  void Setup();
31
32  // wm::UserActivityObserver overrides:
33  virtual void OnUserActivity(const ui::Event* event) OVERRIDE;
34
35  // PowerManagerClient::Observer overrides:
36  virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
37
38  // Begins listening for user activity and calls ResetTimer().
39  void Start();
40
41  // Resets |timer_| to fire when the application idle message should be shown.
42  void ResetTimer();
43
44  // Invoked by |timer_| to display the application idle message.
45  void OnTimeout();
46
47  base::OneShotTimer<KioskModeIdleAppNameNotification> timer_;
48
49  // If set the notification should get shown upon next user activity.
50  bool show_notification_upon_next_user_activity_;
51
52  // The notification object which owns and shows the notification.
53  scoped_ptr<IdleAppNameNotificationView> notification_;
54
55  DISALLOW_COPY_AND_ASSIGN(KioskModeIdleAppNameNotification);
56};
57
58}  // namespace chromeos
59
60#endif  // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_MODE_IDLE_APP_NAME_NOTIFICATION_H_
61