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

Unified Diff: base/power_monitor/power_monitor.h

Issue 179923006: Attempting to resolve a race condition with PowerMonitor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Win64 fixes Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/power_monitor/power_monitor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/power_monitor/power_monitor.h
diff --git a/base/power_monitor/power_monitor.h b/base/power_monitor/power_monitor.h
index 4acb3bf122dba93633a1201631063810ef3e9d5d..9ed7fdb1aa2b67645d7f432f59f54620405ad351 100644
--- a/base/power_monitor/power_monitor.h
+++ b/base/power_monitor/power_monitor.h
@@ -10,6 +10,7 @@
#include "base/memory/ref_counted.h"
#include "base/observer_list_threadsafe.h"
#include "base/power_monitor/power_observer.h"
+#include "base/synchronization/lock.h"
namespace base {
@@ -20,32 +21,31 @@ class PowerMonitorSource;
class BASE_EXPORT PowerMonitor {
public:
// Takes ownership of |source|.
- explicit PowerMonitor(scoped_ptr<PowerMonitorSource> source);
- ~PowerMonitor();
+ static void Initialize(scoped_ptr<PowerMonitorSource> source);
+ static void ShutdownForTesting();
- // Get the process-wide PowerMonitor (if not present, returns NULL).
- static PowerMonitor* Get();
+ // Has the PowerMonitor already been initialized?
+ static bool IsInitialized();
// Add and remove an observer.
// Can be called from any thread.
// Must not be called from within a notification callback.
- void AddObserver(PowerObserver* observer);
- void RemoveObserver(PowerObserver* observer);
+ static bool AddObserver(PowerObserver* observer);
+ static bool RemoveObserver(PowerObserver* observer);
// Is the computer currently on battery power.
- bool IsOnBatteryPower();
+ static bool IsOnBatteryPower();
private:
friend class PowerMonitorSource;
- PowerMonitorSource* Source();
-
- void NotifyPowerStateChange(bool battery_in_use);
- void NotifySuspend();
- void NotifyResume();
-
- scoped_refptr<ObserverListThreadSafe<PowerObserver> > observers_;
- scoped_ptr<PowerMonitorSource> source_;
+ static Lock* GetLock();
+ // Must manually acquire lock before calling any of the following functions.
+ static bool IsInitializedLocked();
+ static PowerMonitorSource* GetSource();
+ static void NotifyPowerStateChange(bool battery_in_use);
+ static void NotifySuspend();
+ static void NotifyResume();
DISALLOW_COPY_AND_ASSIGN(PowerMonitor);
};
« no previous file with comments | « no previous file | base/power_monitor/power_monitor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698