| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/dbus/power_manager_client.h" | 5 #include "chrome/browser/chromeos/dbus/power_manager_client.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/format_macros.h" | 11 #include "base/format_macros.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
| 14 #include "base/stringprintf.h" | 14 #include "base/stringprintf.h" |
| 15 #include "base/time.h" | 15 #include "base/time.h" |
| 16 #include "base/timer.h" | 16 #include "base/timer.h" |
| 17 #include "chrome/browser/chromeos/dbus/power_supply_properties.pb.h" |
| 17 #include "chrome/browser/chromeos/login/screen_locker.h" | 18 #include "chrome/browser/chromeos/login/screen_locker.h" |
| 18 #include "chrome/browser/chromeos/system/runtime_environment.h" | 19 #include "chrome/browser/chromeos/system/runtime_environment.h" |
| 19 #include "dbus/bus.h" | 20 #include "dbus/bus.h" |
| 20 #include "dbus/message.h" | 21 #include "dbus/message.h" |
| 21 #include "dbus/object_path.h" | 22 #include "dbus/object_path.h" |
| 22 #include "dbus/object_proxy.h" | 23 #include "dbus/object_proxy.h" |
| 23 #include "third_party/cros_system_api/dbus/service_constants.h" | 24 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 24 | 25 |
| 25 namespace chromeos { | 26 namespace chromeos { |
| 26 | 27 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 &method_call, | 175 &method_call, |
| 175 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 176 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 176 dbus::ObjectProxy::EmptyResponseCallback()); | 177 dbus::ObjectProxy::EmptyResponseCallback()); |
| 177 } | 178 } |
| 178 | 179 |
| 179 virtual void IncreaseScreenBrightness() OVERRIDE { | 180 virtual void IncreaseScreenBrightness() OVERRIDE { |
| 180 SimpleMethodCallToPowerManager(power_manager::kIncreaseScreenBrightness); | 181 SimpleMethodCallToPowerManager(power_manager::kIncreaseScreenBrightness); |
| 181 } | 182 } |
| 182 | 183 |
| 183 virtual void RequestStatusUpdate(UpdateRequestType update_type) OVERRIDE { | 184 virtual void RequestStatusUpdate(UpdateRequestType update_type) OVERRIDE { |
| 184 dbus::MethodCall method_call(power_manager::kPowerManagerInterface, | 185 dbus::MethodCall method_call( |
| 185 power_manager::kGetAllPropertiesMethod); | 186 power_manager::kPowerManagerInterface, |
| 187 power_manager::kGetPowerSupplyPropertiesMethod); |
| 186 power_manager_proxy_->CallMethod( | 188 power_manager_proxy_->CallMethod( |
| 187 &method_call, | 189 &method_call, |
| 188 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 190 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 189 base::Bind(&PowerManagerClientImpl::OnGetAllPropertiesMethod, | 191 base::Bind(&PowerManagerClientImpl::OnGetPowerSupplyPropertiesMethod, |
| 190 weak_ptr_factory_.GetWeakPtr())); | 192 weak_ptr_factory_.GetWeakPtr())); |
| 191 } | 193 } |
| 192 | 194 |
| 193 virtual void RequestRestart() OVERRIDE { | 195 virtual void RequestRestart() OVERRIDE { |
| 194 SimpleMethodCallToPowerManager(power_manager::kRequestRestartMethod); | 196 SimpleMethodCallToPowerManager(power_manager::kRequestRestartMethod); |
| 195 }; | 197 }; |
| 196 | 198 |
| 197 virtual void RequestShutdown() OVERRIDE { | 199 virtual void RequestShutdown() OVERRIDE { |
| 198 SimpleMethodCallToPowerManager(power_manager::kRequestShutdownMethod); | 200 SimpleMethodCallToPowerManager(power_manager::kRequestShutdownMethod); |
| 199 } | 201 } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 FOR_EACH_OBSERVER( | 314 FOR_EACH_OBSERVER( |
| 313 Observer, observers_, LockButtonStateChanged(down, timestamp)); | 315 Observer, observers_, LockButtonStateChanged(down, timestamp)); |
| 314 } | 316 } |
| 315 } | 317 } |
| 316 | 318 |
| 317 void PowerSupplyPollReceived(dbus::Signal* unused_signal) { | 319 void PowerSupplyPollReceived(dbus::Signal* unused_signal) { |
| 318 VLOG(1) << "Received power supply poll signal."; | 320 VLOG(1) << "Received power supply poll signal."; |
| 319 RequestStatusUpdate(UPDATE_POLL); | 321 RequestStatusUpdate(UPDATE_POLL); |
| 320 } | 322 } |
| 321 | 323 |
| 322 void OnGetAllPropertiesMethod(dbus::Response* response) { | 324 void OnGetPowerSupplyPropertiesMethod(dbus::Response* response) { |
| 323 if (!response) { | 325 if (!response) { |
| 324 LOG(ERROR) << "Error calling " << power_manager::kGetAllPropertiesMethod; | 326 LOG(ERROR) << "Error calling " |
| 325 return; | 327 << power_manager::kGetPowerSupplyPropertiesMethod; |
| 326 } | |
| 327 dbus::MessageReader reader(response); | |
| 328 PowerSupplyStatus status; | |
| 329 double unused_battery_voltage = 0.0; | |
| 330 double unused_battery_energy = 0.0; | |
| 331 double unused_battery_energy_rate = 0.0; | |
| 332 if (!reader.PopBool(&status.line_power_on) || | |
| 333 !reader.PopDouble(&unused_battery_energy) || | |
| 334 !reader.PopDouble(&unused_battery_energy_rate) || | |
| 335 !reader.PopDouble(&unused_battery_voltage) || | |
| 336 !reader.PopInt64(&status.battery_seconds_to_empty) || | |
| 337 !reader.PopInt64(&status.battery_seconds_to_full) || | |
| 338 !reader.PopDouble(&status.battery_percentage) || | |
| 339 !reader.PopBool(&status.battery_is_present) || | |
| 340 !reader.PopBool(&status.battery_is_full)) { | |
| 341 LOG(ERROR) << "Error reading response from powerd: " | |
| 342 << response->ToString(); | |
| 343 return; | 328 return; |
| 344 } | 329 } |
| 345 | 330 |
| 331 dbus::MessageReader reader(response); |
| 332 PowerSupplyProperties protobuf; |
| 333 reader.PopArrayOfBytesAsProto(&protobuf); |
| 334 |
| 335 PowerSupplyStatus status; |
| 336 status.line_power_on = protobuf.line_power_on(); |
| 337 status.battery_seconds_to_empty = protobuf.battery_time_to_empty(); |
| 338 status.battery_seconds_to_full = protobuf.battery_time_to_full(); |
| 339 status.battery_percentage = protobuf.battery_percentage(); |
| 340 status.battery_is_present = protobuf.battery_is_present(); |
| 341 status.battery_is_full = protobuf.battery_is_charged(); |
| 342 |
| 346 VLOG(1) << "Power status: " << status.ToString(); | 343 VLOG(1) << "Power status: " << status.ToString(); |
| 347 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status)); | 344 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status)); |
| 348 } | 345 } |
| 349 | 346 |
| 350 void OnGetIdleTime(const CalculateIdleTimeCallback& callback, | 347 void OnGetIdleTime(const CalculateIdleTimeCallback& callback, |
| 351 dbus::Response* response) { | 348 dbus::Response* response) { |
| 352 if (!response) { | 349 if (!response) { |
| 353 LOG(ERROR) << "Error calling " << power_manager::kGetIdleTime; | 350 LOG(ERROR) << "Error calling " << power_manager::kGetIdleTime; |
| 354 return; | 351 return; |
| 355 } | 352 } |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 | 538 |
| 542 PowerManagerClient* PowerManagerClient::Create(dbus::Bus* bus) { | 539 PowerManagerClient* PowerManagerClient::Create(dbus::Bus* bus) { |
| 543 if (system::runtime_environment::IsRunningOnChromeOS()) { | 540 if (system::runtime_environment::IsRunningOnChromeOS()) { |
| 544 return new PowerManagerClientImpl(bus); | 541 return new PowerManagerClientImpl(bus); |
| 545 } else { | 542 } else { |
| 546 return new PowerManagerClientStubImpl(); | 543 return new PowerManagerClientStubImpl(); |
| 547 } | 544 } |
| 548 } | 545 } |
| 549 | 546 |
| 550 } // namespace chromeos | 547 } // namespace chromeos |
| OLD | NEW |