| 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 dc9761d64cc6623ba667637f98eaf099ba5efada..a429b2c07da802236fcc447a837f8afc183e9a45 100644
|
| --- a/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| +++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
|
| @@ -153,6 +153,15 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| dbus::ObjectProxy::EmptyResponseCallback());
|
| }
|
|
|
| + virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) OVERRIDE {
|
| + dbus::MethodCall method_call(power_manager::kPowerManagerInterface,
|
| + power_manager::kGetIdleTime);
|
| + power_manager_proxy_->CallMethod(
|
| + &method_call,
|
| + dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + base::Bind(&PowerManagerClientImpl::OnGetIdleTime,
|
| + weak_ptr_factory_.GetWeakPtr(), callback));
|
| + }
|
|
|
| private:
|
| // Called when a dbus signal is initially connected.
|
| @@ -233,6 +242,25 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status));
|
| }
|
|
|
| + void OnGetIdleTime(CalculateIdleTimeCallback* callback,
|
| + dbus::Response* response) {
|
| + DCHECK(callback);
|
| + dbus::MessageReader reader(response);
|
| + int64 idle_time_ms = 0;
|
| + if (!reader.PopInt64(&idle_time_ms)) {
|
| + LOG(ERROR) << "Error reading response from powerd: "
|
| + << response->ToString();
|
| + return;
|
| + }
|
| + if (idle_time_ms >= 0) {
|
| + callback->Run(idle_time_ms/1000);
|
| + } else {
|
| + LOG(ERROR) << "Power manager failed to calculate idle time.";
|
| + callback->Run(-1);
|
| + }
|
| + delete callback;
|
| + }
|
| +
|
| dbus::ObjectProxy* power_manager_proxy_;
|
| ObserverList<Observer> observers_;
|
| base::WeakPtrFactory<PowerManagerClientImpl> weak_ptr_factory_;
|
| @@ -288,6 +316,9 @@ class PowerManagerClientStubImpl : public PowerManagerClient {
|
|
|
| virtual void RequestShutdown() OVERRIDE {}
|
|
|
| + virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) OVERRIDE {
|
| + }
|
| +
|
| private:
|
| void Update() {
|
| // We pause at 0 and 100% so that it's easier to check those conditions.
|
|
|