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); |