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

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: Refactored to a more explicitly singleton-like style. Created 6 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 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') | base/power_monitor/power_monitor.cc » ('J')
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..712b6b3cd89baeb1341cd8caf7906a0f1d439115 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,24 +21,35 @@ 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 Shutdown();
- // 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:
+ explicit PowerMonitor(scoped_ptr<PowerMonitorSource> source);
+ ~PowerMonitor();
friend class PowerMonitorSource;
+ static Lock* GetSingletonLock();
+ // Must manually aqcuire the lock before calling
+ static PowerMonitor* GetSingleton();
+
+ void AddObserverImpl(PowerObserver* observer);
+ void RemoveObserverImpl(PowerObserver* observer);
+ // Is the computer currently on battery power.
+ bool IsOnBatteryPowerImpl();
+
PowerMonitorSource* Source();
void NotifyPowerStateChange(bool battery_in_use);
« no previous file with comments | « no previous file | base/power_monitor/power_monitor.cc » ('j') | base/power_monitor/power_monitor.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698