OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_SYSTEM_MONITOR_H_ | 5 #ifndef BASE_SYSTEM_MONITOR_H_ |
6 #define BASE_SYSTEM_MONITOR_H_ | 6 #define BASE_SYSTEM_MONITOR_H_ |
7 | 7 |
8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
9 | 9 |
10 // Windows HiRes timers drain the battery faster so we need to know the battery | 10 // Windows HiRes timers drain the battery faster so we need to know the battery |
11 // status. This isn't true for other platforms. | 11 // status. This isn't true for other platforms. |
12 #if defined(OS_WIN) | 12 #if defined(OS_WIN) |
13 #define ENABLE_BATTERY_MONITORING 1 | 13 #define ENABLE_BATTERY_MONITORING 1 |
14 #else | 14 #else |
15 #undef ENABLE_BATTERY_MONITORING | 15 #undef ENABLE_BATTERY_MONITORING |
16 #endif // !OS_WIN | 16 #endif // !OS_WIN |
17 | 17 |
18 #include "base/observer_list_threadsafe.h" | 18 #include "base/observer_list_threadsafe.h" |
19 #include "base/singleton.h" | |
20 #if defined(ENABLE_BATTERY_MONITORING) | 19 #if defined(ENABLE_BATTERY_MONITORING) |
21 #include "base/timer.h" | 20 #include "base/timer.h" |
22 #endif // defined(ENABLE_BATTERY_MONITORING) | 21 #endif // defined(ENABLE_BATTERY_MONITORING) |
23 | 22 |
24 namespace base { | 23 namespace base { |
25 | 24 |
26 // Class for monitoring various system-related subsystems | 25 // Class for monitoring various system-related subsystems |
27 // such as power management, network status, etc. | 26 // such as power management, network status, etc. |
28 // TODO(mbelshe): Add support beyond just power management. | 27 // TODO(mbelshe): Add support beyond just power management. |
29 class SystemMonitor { | 28 class SystemMonitor { |
30 public: | 29 public: |
31 // Access to the Singleton | 30 // Retrieves the Singleton. |
32 static SystemMonitor* Get() { | 31 static SystemMonitor* Get(); |
33 // Uses the LeakySingletonTrait because cleanup is optional. | |
34 return | |
35 Singleton<SystemMonitor, LeakySingletonTraits<SystemMonitor> >::get(); | |
36 } | |
37 | 32 |
38 // Start the System Monitor within a process. This method | 33 // Start the System Monitor within a process. This method |
39 // is provided so that the battery check can be deferred. | 34 // is provided so that the battery check can be deferred. |
40 // The MessageLoop must be started before calling this | 35 // The MessageLoop must be started before calling this |
41 // method. | 36 // method. |
42 // This is a no-op on platforms for which ENABLE_BATTERY_MONITORING is | 37 // This is a no-op on platforms for which ENABLE_BATTERY_MONITORING is |
43 // disabled. | 38 // disabled. |
44 static void Start(); | 39 static void Start(); |
45 | 40 |
46 // | 41 // |
(...skipping 13 matching lines...) Expand all Loading... |
60 SUSPEND_EVENT, // The system is being suspended. | 55 SUSPEND_EVENT, // The system is being suspended. |
61 RESUME_EVENT // The system is being resumed. | 56 RESUME_EVENT // The system is being resumed. |
62 }; | 57 }; |
63 | 58 |
64 // Callbacks will be called on the thread which creates the SystemMonitor. | 59 // Callbacks will be called on the thread which creates the SystemMonitor. |
65 // During the callback, Add/RemoveObserver will block until the callbacks | 60 // During the callback, Add/RemoveObserver will block until the callbacks |
66 // are finished. Observers should implement quick callback functions; if | 61 // are finished. Observers should implement quick callback functions; if |
67 // lengthy operations are needed, the observer should take care to invoke | 62 // lengthy operations are needed, the observer should take care to invoke |
68 // the operation on an appropriate thread. | 63 // the operation on an appropriate thread. |
69 class PowerObserver { | 64 class PowerObserver { |
70 public: | 65 public: |
71 // Notification of a change in power status of the computer, such | 66 // Notification of a change in power status of the computer, such |
72 // as from switching between battery and A/C power. | 67 // as from switching between battery and A/C power. |
73 virtual void OnPowerStateChange(SystemMonitor*) = 0; | 68 virtual void OnPowerStateChange(SystemMonitor*) = 0; |
74 | 69 |
75 // Notification that the system is suspending. | 70 // Notification that the system is suspending. |
76 virtual void OnSuspend(SystemMonitor*) = 0; | 71 virtual void OnSuspend(SystemMonitor*) = 0; |
77 | 72 |
78 // Notification that the system is resuming. | 73 // Notification that the system is resuming. |
79 virtual void OnResume(SystemMonitor*) = 0; | 74 virtual void OnResume(SystemMonitor*) = 0; |
80 }; | 75 }; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 #if defined(ENABLE_BATTERY_MONITORING) | 120 #if defined(ENABLE_BATTERY_MONITORING) |
126 base::OneShotTimer<SystemMonitor> delayed_battery_check_; | 121 base::OneShotTimer<SystemMonitor> delayed_battery_check_; |
127 #endif | 122 #endif |
128 | 123 |
129 DISALLOW_COPY_AND_ASSIGN(SystemMonitor); | 124 DISALLOW_COPY_AND_ASSIGN(SystemMonitor); |
130 }; | 125 }; |
131 | 126 |
132 } | 127 } |
133 | 128 |
134 #endif // BASE_SYSTEM_MONITOR_H_ | 129 #endif // BASE_SYSTEM_MONITOR_H_ |
OLD | NEW |