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

Unified Diff: build/android/devil/android/battery_utils.py

Issue 1672543002: [Android] Detect if device is not charging properly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
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)
« no previous file with comments | « no previous file | build/android/devil/android/battery_utils_test.py » ('j') | build/android/devil/android/device_errors.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698