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