Index: chromeos/dbus/power_manager_client.cc |
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc |
index be8fb6d99b36ecf0ab542578464ec05d0a86999d..80df142a484fe0a5b3b042157710b1ca9acaacf0 100644 |
--- a/chromeos/dbus/power_manager_client.cc |
+++ b/chromeos/dbus/power_manager_client.cc |
@@ -268,18 +268,18 @@ class PowerManagerClientImpl : public PowerManagerClient { |
power_manager_proxy_->ConnectToSignal( |
power_manager::kPowerManagerInterface, |
- power_manager::kSuspendStateChangedSignal, |
- base::Bind(&PowerManagerClientImpl::SuspendStateChangedReceived, |
- weak_ptr_factory_.GetWeakPtr()), |
+ power_manager::kSuspendImminentSignal, |
+ base::Bind( |
+ &PowerManagerClientImpl::SuspendImminentReceived, |
+ weak_ptr_factory_.GetWeakPtr()), |
base::Bind(&PowerManagerClientImpl::SignalConnected, |
weak_ptr_factory_.GetWeakPtr())); |
power_manager_proxy_->ConnectToSignal( |
power_manager::kPowerManagerInterface, |
- power_manager::kSuspendImminentSignal, |
- base::Bind( |
- &PowerManagerClientImpl::SuspendImminentReceived, |
- weak_ptr_factory_.GetWeakPtr()), |
+ power_manager::kSuspendDoneSignal, |
+ base::Bind(&PowerManagerClientImpl::SuspendDoneReceived, |
+ weak_ptr_factory_.GetWeakPtr()), |
base::Bind(&PowerManagerClientImpl::SignalConnected, |
weak_ptr_factory_.GetWeakPtr())); |
@@ -452,29 +452,58 @@ class PowerManagerClientImpl : public PowerManagerClient { |
} |
dbus::MessageReader reader(signal); |
- power_manager::SuspendImminent protobuf_imminent; |
- if (!reader.PopArrayOfBytesAsProto(&protobuf_imminent)) { |
+ power_manager::SuspendImminent proto; |
+ if (!reader.PopArrayOfBytesAsProto(&proto)) { |
LOG(ERROR) << "Unable to decode protocol buffer from " |
<< power_manager::kSuspendImminentSignal << " signal"; |
return; |
} |
+ VLOG(1) << "Got " << power_manager::kSuspendImminentSignal << " signal " |
+ << "announcing suspend attempt " << proto.suspend_id(); |
if (suspend_is_pending_) { |
LOG(WARNING) << "Got " << power_manager::kSuspendImminentSignal |
<< " signal about pending suspend attempt " |
- << protobuf_imminent.suspend_id() << " while still waiting " |
+ << proto.suspend_id() << " while still waiting " |
<< "on attempt " << pending_suspend_id_; |
} |
- pending_suspend_id_ = protobuf_imminent.suspend_id(); |
+ pending_suspend_id_ = proto.suspend_id(); |
suspend_is_pending_ = true; |
num_pending_suspend_readiness_callbacks_ = 0; |
FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent()); |
MaybeReportSuspendReadiness(); |
} |
+ void SuspendDoneReceived(dbus::Signal* signal) { |
+ dbus::MessageReader reader(signal); |
+ power_manager::SuspendDone proto; |
+ if (!reader.PopArrayOfBytesAsProto(&proto)) { |
+ LOG(ERROR) << "Unable to decode protocol buffer from " |
+ << power_manager::kSuspendDoneSignal << " signal"; |
+ return; |
+ } |
+ |
+ const base::TimeDelta duration = |
+ base::TimeDelta::FromInternalValue(proto.suspend_duration()); |
+ VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:" |
+ << " suspend_id=" << proto.suspend_id() |
+ << " duration=" << duration.InSeconds() << " sec"; |
+ FOR_EACH_OBSERVER( |
+ PowerManagerClient::Observer, observers_, SuspendDone(duration)); |
+ } |
+ |
void IdleActionImminentReceived(dbus::Signal* signal) { |
- FOR_EACH_OBSERVER(Observer, observers_, IdleActionImminent()); |
+ dbus::MessageReader reader(signal); |
+ power_manager::IdleActionImminent proto; |
+ if (!reader.PopArrayOfBytesAsProto(&proto)) { |
+ LOG(ERROR) << "Unable to decode protocol buffer from " |
+ << power_manager::kIdleActionImminentSignal << " signal"; |
+ return; |
+ } |
+ FOR_EACH_OBSERVER(Observer, observers_, |
+ IdleActionImminent(base::TimeDelta::FromInternalValue( |
+ proto.time_until_idle_action()))); |
bartfab (slow)
2014/04/23 11:49:30
Nit: This line should be indented four spaces from
Daniel Erat
2014/04/23 14:35:34
debatable unless the style guide has been updated
bartfab (slow)
2014/04/23 14:50:22
Neither of these is very likely. I guess I just li
|
} |
void IdleActionDeferredReceived(dbus::Signal* signal) { |
@@ -527,31 +556,6 @@ class PowerManagerClientImpl : public PowerManagerClient { |
} |
} |
- void SuspendStateChangedReceived(dbus::Signal* signal) { |
- dbus::MessageReader reader(signal); |
- power_manager::SuspendState proto; |
- if (!reader.PopArrayOfBytesAsProto(&proto)) { |
- LOG(ERROR) << "Unable to decode protocol buffer from " |
- << power_manager::kSuspendStateChangedSignal << " signal"; |
- return; |
- } |
- |
- VLOG(1) << "Got " << power_manager::kSuspendStateChangedSignal << " signal:" |
- << " type=" << proto.type() << " wall_time=" << proto.wall_time(); |
- base::Time wall_time = |
- base::Time::FromInternalValue(proto.wall_time()); |
- switch (proto.type()) { |
- case power_manager::SuspendState_Type_SUSPEND_TO_MEMORY: |
- last_suspend_wall_time_ = wall_time; |
- break; |
- case power_manager::SuspendState_Type_RESUME: |
- FOR_EACH_OBSERVER( |
- PowerManagerClient::Observer, observers_, |
- SystemResumed(wall_time - last_suspend_wall_time_)); |
- break; |
- } |
- } |
- |
// Registers a suspend delay with the power manager. This is usually |
// only called at startup, but if the power manager restarts, we need to |
// create a new delay. |
@@ -608,6 +612,8 @@ class PowerManagerClientImpl : public PowerManagerClient { |
power_manager::kHandleSuspendReadinessMethod); |
dbus::MessageWriter writer(&method_call); |
+ VLOG(1) << "Announcing readiness of suspend delay " << suspend_delay_id_ |
+ << " for suspend attempt " << pending_suspend_id_; |
power_manager::SuspendReadinessInfo protobuf_request; |
protobuf_request.set_delay_id(suspend_delay_id_); |
protobuf_request.set_suspend_id(pending_suspend_id_); |
@@ -646,10 +652,6 @@ class PowerManagerClientImpl : public PowerManagerClient { |
// attempt but have not yet been called. |
int num_pending_suspend_readiness_callbacks_; |
- // Wall time from the latest signal telling us that the system was about to |
- // suspend to memory. |
- base::Time last_suspend_wall_time_; |
- |
// Last state passed to SetIsProjecting(). |
bool last_is_projecting_; |