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

Side by Side Diff: app/system_monitor.h

Issue 431008: Make SystemMonitor not a Singleton and move it out of base (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: fix ChromeFrame build Created 11 years, 1 month 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
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 APP_SYSTEM_MONITOR_H_
6 #define BASE_SYSTEM_MONITOR_H_ 6 #define APP_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 #if defined(ENABLE_BATTERY_MONITORING) 19 #if defined(ENABLE_BATTERY_MONITORING)
20 #include "base/timer.h" 20 #include "base/timer.h"
21 #endif // defined(ENABLE_BATTERY_MONITORING) 21 #endif // defined(ENABLE_BATTERY_MONITORING)
22 22
23 namespace base {
24
25 // Class for monitoring various system-related subsystems 23 // Class for monitoring various system-related subsystems
26 // such as power management, network status, etc. 24 // such as power management, network status, etc.
27 // TODO(mbelshe): Add support beyond just power management. 25 // TODO(mbelshe): Add support beyond just power management.
28 class SystemMonitor { 26 class SystemMonitor {
29 public: 27 public:
30 // Retrieves the Singleton. 28 // Create SystemMonitor. Only one SystemMonitor instance per application
29 // is allowed.
30 SystemMonitor();
31 ~SystemMonitor();
32
33 // Get the application-wide SystemMonitor (if not present, returns NULL).
31 static SystemMonitor* Get(); 34 static SystemMonitor* Get();
32 35
33 // Start the System Monitor within a process. This method
34 // is provided so that the battery check can be deferred.
35 // The MessageLoop must be started before calling this
36 // method.
37 // This is a no-op on platforms for which ENABLE_BATTERY_MONITORING is
38 // disabled.
39 static void Start();
40
41 // 36 //
42 // Power-related APIs 37 // Power-related APIs
43 // 38 //
44 39
45 // Is the computer currently on battery power. 40 // Is the computer currently on battery power.
46 // Can be called on any thread. 41 // Can be called on any thread.
47 bool BatteryPower() const { 42 bool BatteryPower() const {
48 // Using a lock here is not necessary for just a bool. 43 // Using a lock here is not necessary for just a bool.
49 return battery_in_use_; 44 return battery_in_use_;
50 } 45 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 #if defined(OS_WIN) 82 #if defined(OS_WIN)
88 // Windows-specific handling of a WM_POWERBROADCAST message. 83 // Windows-specific handling of a WM_POWERBROADCAST message.
89 // Embedders of this API should hook their top-level window 84 // Embedders of this API should hook their top-level window
90 // message loop and forward WM_POWERBROADCAST through this call. 85 // message loop and forward WM_POWERBROADCAST through this call.
91 void ProcessWmPowerBroadcastMessage(int event_id); 86 void ProcessWmPowerBroadcastMessage(int event_id);
92 #endif 87 #endif
93 88
94 // Cross-platform handling of a power event. 89 // Cross-platform handling of a power event.
95 void ProcessPowerMessage(PowerEvent event_id); 90 void ProcessPowerMessage(PowerEvent event_id);
96 91
97 // Constructor.
98 // Don't use this; access SystemMonitor via the Singleton.
99 SystemMonitor();
100
101 private: 92 private:
102 // Platform-specific method to check whether the system is currently 93 // Platform-specific method to check whether the system is currently
103 // running on battery power. Returns true if running on batteries, 94 // running on battery power. Returns true if running on batteries,
104 // false otherwise. 95 // false otherwise.
105 bool IsBatteryPower(); 96 bool IsBatteryPower();
106 97
107 // Checks the battery status and notifies observers if the battery 98 // Checks the battery status and notifies observers if the battery
108 // status has changed. 99 // status has changed.
109 void BatteryCheck(); 100 void BatteryCheck();
110 101
111 // Functions to trigger notifications. 102 // Functions to trigger notifications.
112 void NotifyPowerStateChange(); 103 void NotifyPowerStateChange();
113 void NotifySuspend(); 104 void NotifySuspend();
114 void NotifyResume(); 105 void NotifyResume();
115 106
116 scoped_refptr<ObserverListThreadSafe<PowerObserver> > observer_list_; 107 scoped_refptr<ObserverListThreadSafe<PowerObserver> > observer_list_;
117 bool battery_in_use_; 108 bool battery_in_use_;
118 bool suspended_; 109 bool suspended_;
119 110
120 #if defined(ENABLE_BATTERY_MONITORING) 111 #if defined(ENABLE_BATTERY_MONITORING)
121 base::OneShotTimer<SystemMonitor> delayed_battery_check_; 112 base::OneShotTimer<SystemMonitor> delayed_battery_check_;
122 #endif 113 #endif
123 114
124 DISALLOW_COPY_AND_ASSIGN(SystemMonitor); 115 DISALLOW_COPY_AND_ASSIGN(SystemMonitor);
125 }; 116 };
126 117
127 } 118 #endif // APP_SYSTEM_MONITOR_H_
128
129 #endif // BASE_SYSTEM_MONITOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698