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

Side by Side Diff: base/system_monitor.h

Issue 21187: Disable battery power detection on POSIX since we don't currently use it. (Closed)
Patch Set: Fixes for jrg's comments Created 11 years, 10 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
« no previous file with comments | « no previous file | base/system_monitor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/observer_list_threadsafe.h" 8 #include "base/observer_list_threadsafe.h"
9 #include "base/singleton.h" 9 #include "base/singleton.h"
10 10
11 // Windows HiRes timers drain the battery faster so we need to know the battery
12 // status. This isn't true for other platforms.
13 #if defined(OS_WIN)
14 #define ENABLE_BATTERY_MONITORING 1
15 #else
16 #undef ENABLE_BATTERY_MONITORING
17 #endif // !OS_WIN
18
11 namespace base { 19 namespace base {
12 20
13 // Class for monitoring various system-related subsystems 21 // Class for monitoring various system-related subsystems
14 // such as power management, network status, etc. 22 // such as power management, network status, etc.
15 // TODO(mbelshe): Add support beyond just power management. 23 // TODO(mbelshe): Add support beyond just power management.
16 class SystemMonitor { 24 class SystemMonitor {
17 public: 25 public:
18 // Access to the Singleton 26 // Access to the Singleton
19 static SystemMonitor* Get() { 27 static SystemMonitor* Get() {
20 // Uses the LeakySingletonTrait because cleanup is optional. 28 // Uses the LeakySingletonTrait because cleanup is optional.
21 return 29 return
22 Singleton<SystemMonitor, LeakySingletonTraits<SystemMonitor> >::get(); 30 Singleton<SystemMonitor, LeakySingletonTraits<SystemMonitor> >::get();
23 } 31 }
24 32
25 // Start the System Monitor within a process. This method 33 // Start the System Monitor within a process. This method
26 // is provided so that the battery check can be deferred. 34 // is provided so that the battery check can be deferred.
27 // The MessageLoop must be started before calling this 35 // The MessageLoop must be started before calling this
28 // method. 36 // method.
37 // This is a no-op on platforms for which ENABLE_BATTERY_MONITORING is
38 // disabled.
29 static void Start(); 39 static void Start();
30 40
31 // 41 //
32 // Power-related APIs 42 // Power-related APIs
33 // 43 //
34 44
35 // Is the computer currently on battery power. 45 // Is the computer currently on battery power.
36 // Can be called on any thread. 46 // Can be called on any thread.
37 bool BatteryPower() { 47 bool BatteryPower() {
38 // Using a lock here is not necessary for just a bool. 48 // Using a lock here is not necessary for just a bool.
39 return battery_in_use_; 49 return battery_in_use_;
40 } 50 }
41 51
42 // Normalized list of power events. 52 // Normalized list of power events.
43 enum PowerEvent { 53 enum PowerEvent {
44 POWER_STATE_EVENT, // The Power status of the system has changed. 54 POWER_STATE_EVENT, // The Power status of the system has changed.
45 SUSPEND_EVENT, // The system is being suspended. 55 SUSPEND_EVENT, // The system is being suspended.
46 RESUME_EVENT // The system is being resumed. 56 RESUME_EVENT // The system is being resumed.
47 }; 57 };
(...skipping 29 matching lines...) Expand all
77 #if defined(OS_WIN) 87 #if defined(OS_WIN)
78 // Windows-specific handling of a WM_POWERBROADCAST message. 88 // Windows-specific handling of a WM_POWERBROADCAST message.
79 // Embedders of this API should hook their top-level window 89 // Embedders of this API should hook their top-level window
80 // message loop and forward WM_POWERBROADCAST through this call. 90 // message loop and forward WM_POWERBROADCAST through this call.
81 void ProcessWmPowerBroadcastMessage(int event_id); 91 void ProcessWmPowerBroadcastMessage(int event_id);
82 #endif 92 #endif
83 93
84 // Cross-platform handling of a power event. 94 // Cross-platform handling of a power event.
85 void ProcessPowerMessage(PowerEvent event_id); 95 void ProcessPowerMessage(PowerEvent event_id);
86 96
87 // Constructor. 97 // Constructor.
88 // Don't use this; access SystemMonitor via the Singleton. 98 // Don't use this; access SystemMonitor via the Singleton.
89 SystemMonitor(); 99 SystemMonitor();
90 100
91 private: 101 private:
92 // Platform-specific method to check whether the system is currently 102 // Platform-specific method to check whether the system is currently
93 // running on battery power. Returns true if running on batteries, 103 // running on battery power. Returns true if running on batteries,
94 // false otherwise. 104 // false otherwise.
95 bool IsBatteryPower(); 105 bool IsBatteryPower();
96 106
97 // Checks the battery status and notifies observers if the battery 107 // Checks the battery status and notifies observers if the battery
98 // status has changed. 108 // status has changed.
99 void BatteryCheck(); 109 void BatteryCheck();
100 110
101 // Functions to trigger notifications. 111 // Functions to trigger notifications.
102 void NotifyPowerStateChange(); 112 void NotifyPowerStateChange();
103 void NotifySuspend(); 113 void NotifySuspend();
104 void NotifyResume(); 114 void NotifyResume();
105 115
106 scoped_refptr<ObserverListThreadSafe<PowerObserver> > observer_list_; 116 scoped_refptr<ObserverListThreadSafe<PowerObserver> > observer_list_;
107 bool battery_in_use_; 117 bool battery_in_use_;
108 bool suspended_; 118 bool suspended_;
109 119
120 #if defined(ENABLE_BATTERY_MONITORING)
110 base::OneShotTimer<SystemMonitor> delayed_battery_check_; 121 base::OneShotTimer<SystemMonitor> delayed_battery_check_;
122 #endif
111 123
112 DISALLOW_COPY_AND_ASSIGN(SystemMonitor); 124 DISALLOW_COPY_AND_ASSIGN(SystemMonitor);
113 }; 125 };
114 126
115 } 127 }
116 128
117 #endif // BASE_SYSTEM_MONITOR_H_ 129 #endif // BASE_SYSTEM_MONITOR_H_
118 130
OLDNEW
« no previous file with comments | « no previous file | base/system_monitor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698