Chromium Code Reviews| Index: build/android/devil/android/battery_utils.py |
| diff --git a/build/android/devil/android/battery_utils.py b/build/android/devil/android/battery_utils.py |
| index 10dc49a7b61e603ff6a8614206e946e89f5e27eb..e18eec154407237e9c708d4e2deeeffecc58c30f 100644 |
| --- a/build/android/devil/android/battery_utils.py |
| +++ b/build/android/devil/android/battery_utils.py |
| @@ -116,6 +116,8 @@ _PWS_AGGREGATION_INDEX = _PWI_AGGREGATION_INDEX |
| _PWI_POWER_CONSUMPTION_INDEX = 5 |
| _PWS_POWER_CONSUMPTION_INDEX = _PWI_POWER_CONSUMPTION_INDEX |
| +_MAX_CHARGE_ERROR = 10 |
| + |
| class BatteryUtils(object): |
| @@ -131,7 +133,6 @@ class BatteryUtils(object): |
| default_retries: An integer containing the default number or times an |
| operation should be retried on failure if no explicit |
| value is provided. |
| - |
| Raises: |
| TypeError: If it is not passed a DeviceUtils instance. |
| """ |
| @@ -141,6 +142,8 @@ class BatteryUtils(object): |
| self._cache = device.GetClientCache(self.__class__.__name__) |
| self._default_timeout = default_timeout |
| self._default_retries = default_retries |
| + self._charge_failure_count = 0 |
|
jbudorick
2016/02/05 01:40:43
These two variables are local to ChargeDeviceToLev
rnephew (Reviews Here)
2016/02/05 01:52:00
Switched to dict so it can be handled locally.
|
| + self._last_charge_value = 0 |
| @decorators.WithTimeoutAndRetriesFromInstance() |
| def SupportsFuelGauge(self, timeout=None, retries=None): |
| @@ -440,8 +443,11 @@ class BatteryUtils(object): |
| Args: |
| level: level of charge to wait for. |
| wait_period: time in seconds to wait between checking. |
| + Raises: |
| + device_errors.DeviceChargingError: If error while charging is detected. |
| """ |
| self.SetCharging(True) |
| + self._charge_failure_count = 0 |
| def device_charged(): |
| battery_level = self.GetBatteryInfo().get('level') |
| @@ -451,6 +457,16 @@ class BatteryUtils(object): |
| else: |
| logging.info('current battery level: %s', battery_level) |
| battery_level = int(battery_level) |
| + |
| + # Use > so that it will not reset if charge is going down. |
| + if battery_level > self._last_charge_value: |
| + self._last_charge_value = battery_level |
| + self._charge_failure_count = 0 |
| + |
| + self._charge_failure_count += 1 |
| + if (not battery_level >= level |
| + and self._charge_failure_count >= _MAX_CHARGE_ERROR): |
| + raise device_errors.DeviceChargingError('Device not charging properly.') |
| return battery_level >= level |
| timeout_retry.WaitFor(device_charged, wait_period=wait_period) |