| Index: tools/telemetry/telemetry/internal/platform/power_monitor/power_monitor_controller.py
|
| diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/power_monitor_controller.py b/tools/telemetry/telemetry/internal/platform/power_monitor/power_monitor_controller.py
|
| index 31c98180e4bb16676db1aec65476961bef003725..07a76dcb646b7542143316a716008c5aedf41871 100644
|
| --- a/tools/telemetry/telemetry/internal/platform/power_monitor/power_monitor_controller.py
|
| +++ b/tools/telemetry/telemetry/internal/platform/power_monitor/power_monitor_controller.py
|
| @@ -18,27 +18,28 @@
|
| """
|
| def __init__(self, power_monitors, battery):
|
| super(PowerMonitorController, self).__init__()
|
| - self._cascading_power_monitors = power_monitors
|
| - self._active_monitor = None
|
| + self._candidate_power_monitors = power_monitors
|
| + self._active_monitors = []
|
| self._battery = battery
|
| atexit.register(_ReenableChargingIfNeeded, self._battery)
|
|
|
| - def _AsyncPowerMonitor(self):
|
| - return next(
|
| - (x for x in self._cascading_power_monitors if x.CanMonitorPower()),
|
| - None)
|
| -
|
| def CanMonitorPower(self):
|
| - return bool(self._AsyncPowerMonitor())
|
| + return any(m.CanMonitorPower() for m in self._candidate_power_monitors)
|
|
|
| def StartMonitoringPower(self, browser):
|
| - self._active_monitor = self._AsyncPowerMonitor()
|
| - assert self._active_monitor, 'No available monitor.'
|
| - self._active_monitor.StartMonitoringPower(browser)
|
| + assert not self._active_monitors, 'Must call StopMonitoringPower().'
|
| + self._active_monitors = (
|
| + [m for m in self._candidate_power_monitors if m.CanMonitorPower()])
|
| + assert self._active_monitors, 'No available monitor.'
|
| + for monitor in self._active_monitors:
|
| + monitor.StartMonitoringPower(browser)
|
|
|
| def StopMonitoringPower(self):
|
| - assert self._active_monitor, 'StartMonitoringPower() not called.'
|
| + assert self._active_monitors, 'StartMonitoringPower() not called.'
|
| try:
|
| - return self._active_monitor.StopMonitoringPower()
|
| + results = {}
|
| + for monitor in self._active_monitors:
|
| + results.update(monitor.StopMonitoringPower())
|
| + return results
|
| finally:
|
| - self._active_monitor = None
|
| + self._active_monitors = []
|
|
|