| Index: base/power_monitor/power_monitor.cc
|
| diff --git a/base/power_monitor/power_monitor.cc b/base/power_monitor/power_monitor.cc
|
| index 11082df69577a44c7d3d12bcec1d1c834cf74c94..8a82dbb51b77f4b7f77d6c58ce6dcec1a838bb73 100644
|
| --- a/base/power_monitor/power_monitor.cc
|
| +++ b/base/power_monitor/power_monitor.cc
|
| @@ -37,6 +37,16 @@ void PowerMonitor::RemoveObserver(PowerObserver* obs) {
|
| observers_->RemoveObserver(obs);
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +void PowerMonitor::DeferSuspendEvents(bool defer) {
|
| + LOG(ERROR) << __func__ << " : " << defer << " : " << std::hex << this;
|
| + base::AutoLock al(lock_);
|
| + should_defer_suspend_ = defer;
|
| + if (!should_defer_suspend_ && is_suspended_)
|
| + observers_->Notify(FROM_HERE, &PowerObserver::OnSuspend);
|
| +}
|
| +#endif
|
| +
|
| PowerMonitorSource* PowerMonitor::Source() {
|
| return source_.get();
|
| }
|
| @@ -53,11 +63,29 @@ void PowerMonitor::NotifyPowerStateChange(bool battery_in_use) {
|
| }
|
|
|
| void PowerMonitor::NotifySuspend() {
|
| - DVLOG(1) << "Power Suspending";
|
| + LOG(ERROR) << __func__ << " : " << std::hex << this;
|
| +#if defined(OS_ANDROID)
|
| + {
|
| + base::AutoLock al(lock_);
|
| + if (should_defer_suspend_) {
|
| + is_suspended_ = true;
|
| + return;
|
| + }
|
| + }
|
| +#endif
|
| +
|
| + LOG(ERROR) << "Power Suspending : " << should_defer_suspend_;
|
| observers_->Notify(FROM_HERE, &PowerObserver::OnSuspend);
|
| }
|
|
|
| void PowerMonitor::NotifyResume() {
|
| +#if defined(OS_ANDROID)
|
| + {
|
| + base::AutoLock al(lock_);
|
| + is_suspended_ = false;
|
| + }
|
| +#endif
|
| +
|
| DVLOG(1) << "Power Resuming";
|
| observers_->Notify(FROM_HERE, &PowerObserver::OnResume);
|
| }
|
|
|