Index: base/power_monitor/power_monitor.cc |
diff --git a/base/power_monitor/power_monitor.cc b/base/power_monitor/power_monitor.cc |
index 9a53ba1936003a8161f09974e505b7ba92eeece1..14dc4b517832785c07153abfed2bcc4a3a738940 100644 |
--- a/base/power_monitor/power_monitor.cc |
+++ b/base/power_monitor/power_monitor.cc |
@@ -3,108 +3,59 @@ |
// found in the LICENSE file. |
#include "base/power_monitor/power_monitor.h" |
- |
-#include "base/lazy_instance.h" |
#include "base/power_monitor/power_monitor_source.h" |
-#include "base/synchronization/lock.h" |
namespace base { |
-class PowerMonitorImpl; |
+static PowerMonitor* g_power_monitor = NULL; |
-LazyInstance<Lock>::Leaky g_power_monitor_lock = LAZY_INSTANCE_INITIALIZER; |
-static PowerMonitorImpl* g_power_monitor = NULL; |
- |
-// A class used to monitor the power state change and notify the observers about |
-// the change event. |
-class BASE_EXPORT PowerMonitorImpl { |
- public: |
- explicit PowerMonitorImpl(scoped_ptr<PowerMonitorSource> source) |
- : observers_(new ObserverListThreadSafe<PowerObserver>()), |
- source_(source.Pass()) { } |
- |
- ~PowerMonitorImpl() { } |
- |
- scoped_refptr<ObserverListThreadSafe<PowerObserver> > observers_; |
- scoped_ptr<PowerMonitorSource> source_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PowerMonitorImpl); |
-}; |
- |
-void PowerMonitor::Initialize(scoped_ptr<PowerMonitorSource> source) { |
- AutoLock(g_power_monitor_lock.Get()); |
+PowerMonitor::PowerMonitor(scoped_ptr<PowerMonitorSource> source) |
+ : observers_(new ObserverListThreadSafe<PowerObserver>()), |
+ source_(source.Pass()) { |
DCHECK(!g_power_monitor); |
- g_power_monitor = new PowerMonitorImpl(source.Pass()); |
+ g_power_monitor = this; |
} |
-void PowerMonitor::ShutdownForTesting() { |
- AutoLock(g_power_monitor_lock.Get()); |
- if (g_power_monitor) { |
- delete g_power_monitor; |
- g_power_monitor = NULL; |
- } |
+PowerMonitor::~PowerMonitor() { |
+ DCHECK_EQ(this, g_power_monitor); |
+ g_power_monitor = NULL; |
} |
-bool PowerMonitor::IsInitialized() { |
- AutoLock(g_power_monitor_lock.Get()); |
- return g_power_monitor != NULL; |
+// static |
+PowerMonitor* PowerMonitor::Get() { |
+ return g_power_monitor; |
} |
-bool PowerMonitor::AddObserver(PowerObserver* observer) { |
- AutoLock(g_power_monitor_lock.Get()); |
- if (!g_power_monitor) |
- return false; |
- g_power_monitor->observers_->AddObserver(observer); |
- return true; |
+void PowerMonitor::AddObserver(PowerObserver* obs) { |
+ observers_->AddObserver(obs); |
} |
-bool PowerMonitor::RemoveObserver(PowerObserver* observer) { |
- AutoLock(g_power_monitor_lock.Get()); |
- if (!g_power_monitor) |
- return false; |
- g_power_monitor->observers_->RemoveObserver(observer); |
- return true; |
+void PowerMonitor::RemoveObserver(PowerObserver* obs) { |
+ observers_->RemoveObserver(obs); |
+} |
+ |
+PowerMonitorSource* PowerMonitor::Source() { |
+ return source_.get(); |
} |
bool PowerMonitor::IsOnBatteryPower() { |
- g_power_monitor_lock.Get().AssertAcquired(); |
- if (!g_power_monitor) |
- return false; |
- return g_power_monitor->source_->IsOnBatteryPower(); |
-} |
- |
-Lock* PowerMonitor::GetLock() { |
- return &g_power_monitor_lock.Get(); |
-} |
- |
-bool PowerMonitor::IsInitializedLocked() { |
- g_power_monitor_lock.Get().AssertAcquired(); |
- return g_power_monitor != NULL; |
-} |
- |
-PowerMonitorSource* PowerMonitor::GetSource() { |
- g_power_monitor_lock.Get().AssertAcquired(); |
- return g_power_monitor->source_.get(); |
+ return source_->IsOnBatteryPower(); |
} |
void PowerMonitor::NotifyPowerStateChange(bool battery_in_use) { |
DVLOG(1) << "PowerStateChange: " << (battery_in_use ? "On" : "Off") |
<< " battery"; |
- g_power_monitor_lock.Get().AssertAcquired(); |
- g_power_monitor->observers_->Notify(&PowerObserver::OnPowerStateChange, |
- battery_in_use); |
+ observers_->Notify(&PowerObserver::OnPowerStateChange, battery_in_use); |
} |
void PowerMonitor::NotifySuspend() { |
DVLOG(1) << "Power Suspending"; |
- g_power_monitor_lock.Get().AssertAcquired(); |
- g_power_monitor->observers_->Notify(&PowerObserver::OnSuspend); |
+ observers_->Notify(&PowerObserver::OnSuspend); |
} |
void PowerMonitor::NotifyResume() { |
DVLOG(1) << "Power Resuming"; |
- g_power_monitor_lock.Get().AssertAcquired(); |
- g_power_monitor->observers_->Notify(&PowerObserver::OnResume); |
+ observers_->Notify(&PowerObserver::OnResume); |
} |
} // namespace base |