| Index: chrome/browser/chromeos/dbus/power_manager_client.cc
|
| diff --git a/chrome/browser/chromeos/dbus/power_manager_client.cc b/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| index 5b95f0e1cf3016ad4d71f230b85afec18fd9543c..fce1c132aabfa452eedce05fc269e1978e8ced4c 100644
|
| --- a/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| +++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| @@ -83,6 +83,15 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| weak_ptr_factory_.GetWeakPtr()),
|
| base::Bind(&PowerManagerClientImpl::SignalConnected,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| +
|
| + // Monitor the D-Bus signal for power state changed signals.
|
| + power_manager_proxy_->ConnectToSignal(
|
| + power_manager::kPowerManagerInterface,
|
| + power_manager::kPowerStateChangedSignal,
|
| + base::Bind(&PowerManagerClientImpl::PowerStateChangedSignalReceived,
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + base::Bind(&PowerManagerClientImpl::SignalConnected,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| virtual ~PowerManagerClientImpl() {
|
| @@ -211,6 +220,21 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| VLOG(1) << "screen brightness increased: " << response->ToString();
|
| }
|
|
|
| + // Called when a power state changed signal is received.
|
| + void PowerStateChangedSignalReceived(dbus::Signal* signal) {
|
| + VLOG(1) << "Received power state changed signal.";
|
| + dbus::MessageReader reader(signal);
|
| + std::string power_state_string;
|
| + if (!reader.PopString(&power_state_string)) {
|
| + LOG(ERROR) << "Error reading signal args: " << signal->ToString();
|
| + return;
|
| + }
|
| + if (power_state_string != "on")
|
| + return;
|
| + // Notify all observers of resume event.
|
| + FOR_EACH_OBSERVER(Observer, observers_, SystemResumed());
|
| + }
|
| +
|
| // Called when a power supply polling signal is received.
|
| void PowerSupplyPollReceived(dbus::Signal* unused_signal) {
|
| VLOG(1) << "Received power supply poll signal.";
|
|
|