Index: build/android/pylib/device/device_utils.py |
diff --git a/build/android/pylib/device/device_utils.py b/build/android/pylib/device/device_utils.py |
index e432904ad690af0bf7d3c76faedd476185a0f6ed..5c92e261dccc02b99b29479bbacd9b55e48edf30 100644 |
--- a/build/android/pylib/device/device_utils.py |
+++ b/build/android/pylib/device/device_utils.py |
@@ -1439,159 +1439,6 @@ class DeviceUtils(object): |
""" |
return logcat_monitor.LogcatMonitor(self.adb, *args, **kwargs) |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @decorators.WithTimeoutAndRetriesFromInstance() |
- def GetBatteryInfo(self, timeout=None, retries=None): |
- """Gets battery info for the device. |
- |
- Args: |
- timeout: timeout in seconds |
- retries: number of retries |
- Returns: |
- A dict containing various battery information as reported by dumpsys |
- battery. |
- """ |
- result = {} |
- # Skip the first line, which is just a header. |
- for line in self.RunShellCommand( |
- ['dumpsys', 'battery'], check_return=True)[1:]: |
- # If usb charging has been disabled, an extra line of header exists. |
- if 'UPDATES STOPPED' in line: |
- logging.warning('Dumpsys battery not receiving updates. ' |
- 'Run dumpsys battery reset if this is in error.') |
- elif ':' not in line: |
- logging.warning('Unknown line found in dumpsys battery.') |
- logging.warning(line) |
- else: |
- k, v = line.split(': ', 1) |
- result[k.strip()] = v.strip() |
- return result |
- |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @decorators.WithTimeoutAndRetriesFromInstance() |
- def GetCharging(self, timeout=None, retries=None): |
- """Gets the charging state of the device. |
- |
- Args: |
- timeout: timeout in seconds |
- retries: number of retries |
- Returns: |
- True if the device is charging, false otherwise. |
- """ |
- battery_info = self.GetBatteryInfo() |
- for k in ('AC powered', 'USB powered', 'Wireless powered'): |
- if (k in battery_info and |
- battery_info[k].lower() in ('true', '1', 'yes')): |
- return True |
- return False |
- |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @decorators.WithTimeoutAndRetriesFromInstance() |
- def SetCharging(self, enabled, timeout=None, retries=None): |
- """Enables or disables charging on the device. |
- |
- Args: |
- enabled: A boolean indicating whether charging should be enabled or |
- disabled. |
- timeout: timeout in seconds |
- retries: number of retries |
- """ |
- if 'charging_config' not in self._cache: |
- for c in _CONTROL_CHARGING_COMMANDS: |
- if self.FileExists(c['witness_file']): |
- self._cache['charging_config'] = c |
- break |
- else: |
- raise device_errors.CommandFailedError( |
- 'Unable to find charging commands.') |
- |
- if enabled: |
- command = self._cache['charging_config']['enable_command'] |
- else: |
- command = self._cache['charging_config']['disable_command'] |
- |
- def set_and_verify_charging(): |
- self.RunShellCommand(command, check_return=True) |
- return self.GetCharging() == enabled |
- |
- timeout_retry.WaitFor(set_and_verify_charging, wait_period=1) |
- |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @decorators.WithTimeoutAndRetriesFromInstance() |
- def DisableBatteryUpdates(self, timeout=None, retries=None): |
- """ Resets battery data and makes device appear like it is not |
- charging so that it will collect power data since last charge. |
- |
- Args: |
- timeout: timeout in seconds |
- retries: number of retries |
- """ |
- def battery_updates_disabled(): |
- return self.GetCharging() is False |
- |
- self.RunShellCommand( |
- ['dumpsys', 'batterystats', '--reset'], check_return=True) |
- battery_data = self.RunShellCommand( |
- ['dumpsys', 'batterystats', '--charged', '--checkin'], |
- check_return=True) |
- ROW_TYPE_INDEX = 3 |
- PWI_POWER_INDEX = 5 |
- for line in battery_data: |
- l = line.split(',') |
- if (len(l) > PWI_POWER_INDEX and l[ROW_TYPE_INDEX] == 'pwi' |
- and l[PWI_POWER_INDEX] != 0): |
- raise device_errors.CommandFailedError( |
- 'Non-zero pmi value found after reset.') |
- self.RunShellCommand(['dumpsys', 'battery', 'set', 'usb', '0'], |
- check_return=True) |
- timeout_retry.WaitFor(battery_updates_disabled, wait_period=1) |
- |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @decorators.WithTimeoutAndRetriesFromInstance() |
- def EnableBatteryUpdates(self, timeout=None, retries=None): |
- """ Restarts device charging so that dumpsys no longer collects power data. |
- |
- Args: |
- timeout: timeout in seconds |
- retries: number of retries |
- """ |
- def battery_updates_enabled(): |
- return self.GetCharging() is True |
- |
- self.RunShellCommand(['dumpsys', 'battery', 'set', 'usb', '1'], |
- check_return=True) |
- self.RunShellCommand(['dumpsys', 'battery', 'reset'], check_return=True) |
- timeout_retry.WaitFor(battery_updates_enabled, wait_period=1) |
- |
- # TODO(rnephew): Remove when battery_utils is switched to. |
- @contextlib.contextmanager |
- def BatteryMeasurement(self, timeout=None, retries=None): |
- """Context manager that enables battery data collection. It makes |
- the device appear to stop charging so that dumpsys will start collecting |
- power data since last charge. Once the with block is exited, charging is |
- resumed and power data since last charge is no longer collected. |
- |
- Only for devices L and higher. |
- |
- Example usage: |
- with BatteryMeasurement(): |
- browser_actions() |
- get_power_data() # report usage within this block |
- after_measurements() # Anything that runs after power |
- # measurements are collected |
- |
- Args: |
- timeout: timeout in seconds |
- retries: number of retries |
- """ |
- if self.build_version_sdk < constants.ANDROID_SDK_VERSION_CODES.LOLLIPOP: |
- raise device_errors.CommandFailedError('Device must be L or higher.') |
- try: |
- self.DisableBatteryUpdates(timeout=timeout, retries=retries) |
- yield |
- finally: |
- self.EnableBatteryUpdates(timeout=timeout, retries=retries) |
- |
@decorators.WithTimeoutAndRetriesFromInstance() |
def GetDevicePieWrapper(self, timeout=None, retries=None): |
"""Gets the absolute path to the run_pie wrapper on the device. |