Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(531)

Side by Side Diff: chromeos/dbus/power_manager_client.cc

Issue 622693004: Make base::PowerMonitor work on Chrome OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chromeos/dbus/power_manager_client.h" 5 #include "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/command_line.h" 11 #include "base/command_line.h"
12 #include "base/format_macros.h" 12 #include "base/format_macros.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/message_loop/message_loop.h" 15 #include "base/message_loop/message_loop.h"
16 #include "base/observer_list.h" 16 #include "base/observer_list.h"
17 #include "base/power_monitor/power_monitor_device_source.h"
17 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
18 #include "base/strings/string_split.h" 19 #include "base/strings/string_split.h"
19 #include "base/strings/stringprintf.h" 20 #include "base/strings/stringprintf.h"
20 #include "base/threading/platform_thread.h" 21 #include "base/threading/platform_thread.h"
21 #include "base/time/time.h" 22 #include "base/time/time.h"
22 #include "base/timer/timer.h" 23 #include "base/timer/timer.h"
23 #include "chromeos/chromeos_switches.h" 24 #include "chromeos/chromeos_switches.h"
24 #include "chromeos/dbus/power_manager/input_event.pb.h" 25 #include "chromeos/dbus/power_manager/input_event.pb.h"
25 #include "chromeos/dbus/power_manager/peripheral_battery_status.pb.h" 26 #include "chromeos/dbus/power_manager/peripheral_battery_status.pb.h"
26 #include "chromeos/dbus/power_manager/policy.pb.h" 27 #include "chromeos/dbus/power_manager/policy.pb.h"
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 397
397 FOR_EACH_OBSERVER(Observer, observers_, 398 FOR_EACH_OBSERVER(Observer, observers_,
398 PeripheralBatteryStatusReceived(path, name, level)); 399 PeripheralBatteryStatusReceived(path, name, level));
399 } 400 }
400 401
401 void PowerSupplyPollReceived(dbus::Signal* signal) { 402 void PowerSupplyPollReceived(dbus::Signal* signal) {
402 VLOG(1) << "Received power supply poll signal."; 403 VLOG(1) << "Received power supply poll signal.";
403 dbus::MessageReader reader(signal); 404 dbus::MessageReader reader(signal);
404 power_manager::PowerSupplyProperties protobuf; 405 power_manager::PowerSupplyProperties protobuf;
405 if (reader.PopArrayOfBytesAsProto(&protobuf)) { 406 if (reader.PopArrayOfBytesAsProto(&protobuf)) {
406 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(protobuf)); 407 HandlePowerSupplyProperties(protobuf);
407 } else { 408 } else {
408 LOG(ERROR) << "Unable to decode " 409 LOG(ERROR) << "Unable to decode "
409 << power_manager::kPowerSupplyPollSignal << "signal"; 410 << power_manager::kPowerSupplyPollSignal << "signal";
410 } 411 }
411 } 412 }
412 413
413 void OnGetPowerSupplyPropertiesMethod(dbus::Response* response) { 414 void OnGetPowerSupplyPropertiesMethod(dbus::Response* response) {
414 if (!response) { 415 if (!response) {
415 LOG(ERROR) << "Error calling " 416 LOG(ERROR) << "Error calling "
416 << power_manager::kGetPowerSupplyPropertiesMethod; 417 << power_manager::kGetPowerSupplyPropertiesMethod;
417 return; 418 return;
418 } 419 }
419 420
420 dbus::MessageReader reader(response); 421 dbus::MessageReader reader(response);
421 power_manager::PowerSupplyProperties protobuf; 422 power_manager::PowerSupplyProperties protobuf;
422 if (reader.PopArrayOfBytesAsProto(&protobuf)) { 423 if (reader.PopArrayOfBytesAsProto(&protobuf)) {
423 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(protobuf)); 424 HandlePowerSupplyProperties(protobuf);
424 } else { 425 } else {
425 LOG(ERROR) << "Unable to decode " 426 LOG(ERROR) << "Unable to decode "
426 << power_manager::kGetPowerSupplyPropertiesMethod 427 << power_manager::kGetPowerSupplyPropertiesMethod
427 << " response"; 428 << " response";
428 } 429 }
429 } 430 }
430 431
431 void OnGetScreenBrightnessPercent( 432 void OnGetScreenBrightnessPercent(
432 const GetScreenBrightnessPercentCallback& callback, 433 const GetScreenBrightnessPercentCallback& callback,
433 dbus::Response* response) { 434 dbus::Response* response) {
434 if (!response) { 435 if (!response) {
435 LOG(ERROR) << "Error calling " 436 LOG(ERROR) << "Error calling "
436 << power_manager::kGetScreenBrightnessPercentMethod; 437 << power_manager::kGetScreenBrightnessPercentMethod;
437 return; 438 return;
438 } 439 }
439 dbus::MessageReader reader(response); 440 dbus::MessageReader reader(response);
440 double percent = 0.0; 441 double percent = 0.0;
441 if (!reader.PopDouble(&percent)) 442 if (!reader.PopDouble(&percent))
442 LOG(ERROR) << "Error reading response from powerd: " 443 LOG(ERROR) << "Error reading response from powerd: "
443 << response->ToString(); 444 << response->ToString();
444 callback.Run(percent); 445 callback.Run(percent);
445 } 446 }
446 447
448 void HandlePowerSupplyProperties(
449 const power_manager::PowerSupplyProperties& proto) {
450 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(proto));
451 const bool on_battery = proto.external_power() ==
452 power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED;
453 base::PowerMonitorDeviceSource::SetPowerSource(on_battery);
454 }
455
447 void HandleRegisterSuspendDelayReply(bool dark_suspend, 456 void HandleRegisterSuspendDelayReply(bool dark_suspend,
448 const std::string& method_name, 457 const std::string& method_name,
449 dbus::Response* response) { 458 dbus::Response* response) {
450 if (!response) { 459 if (!response) {
451 LOG(ERROR) << "Error calling " << method_name; 460 LOG(ERROR) << "Error calling " << method_name;
452 return; 461 return;
453 } 462 }
454 463
455 dbus::MessageReader reader(response); 464 dbus::MessageReader reader(response);
456 power_manager::RegisterSuspendDelayReply protobuf; 465 power_manager::RegisterSuspendDelayReply protobuf;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 } 509 }
501 510
502 pending_suspend_id_ = proto.suspend_id(); 511 pending_suspend_id_ = proto.suspend_id();
503 suspend_is_pending_ = true; 512 suspend_is_pending_ = true;
504 suspending_from_dark_resume_ = in_dark_resume; 513 suspending_from_dark_resume_ = in_dark_resume;
505 num_pending_suspend_readiness_callbacks_ = 0; 514 num_pending_suspend_readiness_callbacks_ = 0;
506 if (suspending_from_dark_resume_) 515 if (suspending_from_dark_resume_)
507 FOR_EACH_OBSERVER(Observer, observers_, DarkSuspendImminent()); 516 FOR_EACH_OBSERVER(Observer, observers_, DarkSuspendImminent());
508 else 517 else
509 FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent()); 518 FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent());
519 base::PowerMonitorDeviceSource::HandleSystemSuspending();
510 MaybeReportSuspendReadiness(); 520 MaybeReportSuspendReadiness();
511 } 521 }
512 522
513 void SuspendDoneReceived(dbus::Signal* signal) { 523 void SuspendDoneReceived(dbus::Signal* signal) {
514 dbus::MessageReader reader(signal); 524 dbus::MessageReader reader(signal);
515 power_manager::SuspendDone proto; 525 power_manager::SuspendDone proto;
516 if (!reader.PopArrayOfBytesAsProto(&proto)) { 526 if (!reader.PopArrayOfBytesAsProto(&proto)) {
517 LOG(ERROR) << "Unable to decode protocol buffer from " 527 LOG(ERROR) << "Unable to decode protocol buffer from "
518 << power_manager::kSuspendDoneSignal << " signal"; 528 << power_manager::kSuspendDoneSignal << " signal";
519 return; 529 return;
520 } 530 }
521 531
522 const base::TimeDelta duration = 532 const base::TimeDelta duration =
523 base::TimeDelta::FromInternalValue(proto.suspend_duration()); 533 base::TimeDelta::FromInternalValue(proto.suspend_duration());
524 VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:" 534 VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:"
525 << " suspend_id=" << proto.suspend_id() 535 << " suspend_id=" << proto.suspend_id()
526 << " duration=" << duration.InSeconds() << " sec"; 536 << " duration=" << duration.InSeconds() << " sec";
527 FOR_EACH_OBSERVER( 537 FOR_EACH_OBSERVER(
528 PowerManagerClient::Observer, observers_, SuspendDone(duration)); 538 PowerManagerClient::Observer, observers_, SuspendDone(duration));
539 base::PowerMonitorDeviceSource::HandleSystemResumed();
529 } 540 }
530 541
531 void IdleActionImminentReceived(dbus::Signal* signal) { 542 void IdleActionImminentReceived(dbus::Signal* signal) {
532 dbus::MessageReader reader(signal); 543 dbus::MessageReader reader(signal);
533 power_manager::IdleActionImminent proto; 544 power_manager::IdleActionImminent proto;
534 if (!reader.PopArrayOfBytesAsProto(&proto)) { 545 if (!reader.PopArrayOfBytesAsProto(&proto)) {
535 LOG(ERROR) << "Unable to decode protocol buffer from " 546 LOG(ERROR) << "Unable to decode protocol buffer from "
536 << power_manager::kIdleActionImminentSignal << " signal"; 547 << power_manager::kIdleActionImminentSignal << " signal";
537 return; 548 return;
538 } 549 }
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 // static 970 // static
960 PowerManagerClient* PowerManagerClient::Create( 971 PowerManagerClient* PowerManagerClient::Create(
961 DBusClientImplementationType type) { 972 DBusClientImplementationType type) {
962 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 973 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
963 return new PowerManagerClientImpl(); 974 return new PowerManagerClientImpl();
964 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 975 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
965 return new PowerManagerClientStubImpl(); 976 return new PowerManagerClientStubImpl();
966 } 977 }
967 978
968 } // namespace chromeos 979 } // namespace chromeos
OLDNEW
« base/base.gypi ('K') | « base/power_monitor/power_monitor_device_source_chromeos.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698