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..b516f99a048fddbcc366639d2af93eab29593ee8 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 arg; |
satorux1
2011/11/23 01:03:27
arg -> something more descriptive, like power_stat
Simon Que
2011/11/23 19:24:17
Done.
|
+ if (!reader.PopString(&arg)) { |
+ LOG(ERROR) << "Error reading signal args: " << signal->ToString(); |
+ return; |
+ } |
+ if (arg != "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."; |