Chromium Code Reviews| Index: chromeos/dbus/power_manager_client.cc |
| diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc |
| index 4192e0d143fdc891b9f9784b356194d6fdddbb11..f70b6e71f963246f12596774ee4542b4a17c0ab7 100644 |
| --- a/chromeos/dbus/power_manager_client.cc |
| +++ b/chromeos/dbus/power_manager_client.cc |
| @@ -82,6 +82,13 @@ class PowerManagerClientImpl : public PowerManagerClient { |
| return observers_.HasObserver(observer); |
| } |
| + virtual void SetRenderProcessManagerDelegate( |
| + base::WeakPtr<RenderProcessManagerDelegate> delegate) override { |
| + DCHECK(!delegate_) << "There can be only one! " |
| + << "...RenderProcessManagerDelegate"; |
| + delegate_ = delegate; |
| + } |
| + |
| virtual void DecreaseScreenBrightness(bool allow_off) override { |
| dbus::MethodCall method_call( |
| power_manager::kPowerManagerInterface, |
| @@ -534,6 +541,10 @@ class PowerManagerClientImpl : public PowerManagerClient { |
| VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:" |
| << " suspend_id=" << proto.suspend_id() |
| << " duration=" << duration.InSeconds() << " sec"; |
| + |
| + if (delegate_) |
| + delegate_->SuspendDone(); |
| + |
| FOR_EACH_OBSERVER( |
| PowerManagerClient::Observer, observers_, SuspendDone(duration)); |
| base::PowerMonitorDeviceSource::HandleSystemResumed(); |
| @@ -679,6 +690,9 @@ class PowerManagerClientImpl : public PowerManagerClient { |
| delay_id = suspend_delay_id_; |
| } |
| + if (delegate_ && !suspending_from_dark_resume_) |
| + delegate_->SuspendImminent(); |
| + |
| dbus::MethodCall method_call( |
| power_manager::kPowerManagerInterface, method_name); |
| dbus::MessageWriter writer(&method_call); |
| @@ -735,6 +749,10 @@ class PowerManagerClientImpl : public PowerManagerClient { |
| // Last state passed to SetIsProjecting(). |
| bool last_is_projecting_; |
| + // The delegate used to manage the power consumption of Chrome's renderer |
| + // processes. |
| + base::WeakPtr<RenderProcessManagerDelegate> delegate_; |
|
Daniel Erat
2014/11/19 23:41:26
nit: maybe rename to render_process_manager_delega
Chirantan Ekbote
2014/11/20 00:59:37
Done.
|
| + |
| // Note: This should remain the last member so it'll be destroyed and |
| // invalidate its weak pointers before any other members are destroyed. |
| base::WeakPtrFactory<PowerManagerClientImpl> weak_ptr_factory_; |
| @@ -784,6 +802,10 @@ class PowerManagerClientStubImpl : public PowerManagerClient { |
| return observers_.HasObserver(observer); |
| } |
| + virtual void SetRenderProcessManagerDelegate( |
| + base::WeakPtr<RenderProcessManagerDelegate> delegate) override { |
| + } |
| + |
| virtual void DecreaseScreenBrightness(bool allow_off) override { |
| VLOG(1) << "Requested to descrease screen brightness"; |
| SetBrightness(brightness_ - 5.0, true); |