| 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 c3cae3f1d7b8c240f2a45cae2df7bb517121ceec..079241775c04e18c71aa0071412c273a3298c4f4 100644
|
| --- a/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| +++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| @@ -122,6 +122,22 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| weak_ptr_factory_.GetWeakPtr()),
|
| base::Bind(&PowerManagerClientImpl::SignalConnected,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| +
|
| + power_manager_proxy_->ConnectToSignal(
|
| + power_manager::kPowerManagerInterface,
|
| + power_manager::kIdleNotifySignal,
|
| + base::Bind(&PowerManagerClientImpl::IdleNotifySignalReceived,
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + base::Bind(&PowerManagerClientImpl::SignalConnected,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +
|
| + power_manager_proxy_->ConnectToSignal(
|
| + power_manager::kPowerManagerInterface,
|
| + power_manager::kActiveNotifySignal,
|
| + base::Bind(&PowerManagerClientImpl::IdleNotifySignalReceived,
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + base::Bind(&PowerManagerClientImpl::SignalConnected,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| virtual ~PowerManagerClientImpl() {
|
| @@ -207,6 +223,23 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| + virtual void RequestIdleNotification(int64 threshold) OVERRIDE {
|
| + dbus::MethodCall method_call(power_manager::kPowerManagerInterface,
|
| + power_manager::kRequestIdleNotification);
|
| + dbus::MessageWriter writer(&method_call);
|
| + writer.AppendInt64(threshold);
|
| +
|
| + power_manager_proxy_->CallMethod(
|
| + &method_call,
|
| + dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + dbus::ObjectProxy::EmptyResponseCallback());
|
| + }
|
| +
|
| + virtual void RequestActiveNotification() OVERRIDE {
|
| + RequestIdleNotification(0);
|
| + }
|
| +
|
| +
|
| virtual void NotifyScreenLockRequested() OVERRIDE {
|
| SimpleMethodCallToPowerManager(power_manager::kRequestLockScreenMethod);
|
| }
|
| @@ -378,6 +411,24 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| FOR_EACH_OBSERVER(Observer, observers_, UnlockScreenFailed());
|
| }
|
|
|
| +
|
| + void IdleNotifySignalReceived(dbus::Signal* signal) {
|
| + dbus::MessageReader reader(signal);
|
| + int64 threshold = 0;
|
| + if (!reader.PopInt64(&threshold)) {
|
| + LOG(ERROR) << "Idle Notify signal had incorrect parameters: "
|
| + << signal->ToString();
|
| + return;
|
| + }
|
| +
|
| + VLOG(1) << "Idle Notify: " << threshold;
|
| + if (threshold)
|
| + FOR_EACH_OBSERVER(Observer, observers_, IdleNotify(threshold));
|
| + else
|
| + FOR_EACH_OBSERVER(Observer, observers_, ActiveNotify());
|
| + }
|
| +
|
| +
|
| dbus::ObjectProxy* power_manager_proxy_;
|
| ObserverList<Observer> observers_;
|
| base::WeakPtrFactory<PowerManagerClientImpl> weak_ptr_factory_;
|
| @@ -439,12 +490,13 @@ class PowerManagerClientStubImpl : public PowerManagerClient {
|
| callback.Run(0);
|
| }
|
|
|
| + virtual void RequestIdleNotification(int64 threshold) OVERRIDE {}
|
| + virtual void RequestActiveNotification() OVERRIDE {}
|
| +
|
| virtual void NotifyScreenLockRequested() OVERRIDE {
|
| ScreenLocker::Show();
|
| }
|
| -
|
| virtual void NotifyScreenLockCompleted() OVERRIDE {}
|
| -
|
| virtual void NotifyScreenUnlockRequested() OVERRIDE {
|
| ScreenLocker::Hide();
|
| }
|
|
|