Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / app_mode / kiosk_mode_idle_app_name_notification.h
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
15 namespace chromeos {
16 class IdleAppNameNotificationView;
17
18 class 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_