battery_level_provider.cc 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/power_monitor/battery_level_provider.h"
  5. #include "base/ranges/algorithm.h"
  6. namespace base {
  7. BatteryLevelProvider::BatteryState BatteryLevelProvider::MakeBatteryState(
  8. const std::vector<BatteryDetails>& battery_details) {
  9. BatteryState state;
  10. state.battery_count = static_cast<int>(battery_details.size());
  11. state.is_external_power_connected =
  12. battery_details.size() == 0 ||
  13. base::ranges::any_of(battery_details, [](const BatteryDetails& details) {
  14. return details.is_external_power_connected;
  15. });
  16. state.current_capacity =
  17. battery_details.size() == 1
  18. ? absl::make_optional(battery_details.front().current_capacity)
  19. : absl::nullopt;
  20. state.full_charged_capacity =
  21. battery_details.size() == 1
  22. ? absl::make_optional(battery_details.front().full_charged_capacity)
  23. : absl::nullopt;
  24. state.charge_unit =
  25. battery_details.size() == 1
  26. ? absl::make_optional(battery_details.front().charge_unit)
  27. : absl::nullopt;
  28. state.capture_time = base::TimeTicks::Now();
  29. return state;
  30. }
  31. } // namespace base