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) |