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

Side by Side Diff: build/android/pylib/android_commands.py

Issue 218613011: Adding battery control API for android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Provides an interface to communicate with the device via the adb command. 5 """Provides an interface to communicate with the device via the adb command.
6 6
7 Assumes adb binary is currently on system path. 7 Assumes adb binary is currently on system path.
8 """ 8 """
9 # pylint: disable-all 9 # pylint: disable-all
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 KEYCODE_DPAD_UP = 19 66 KEYCODE_DPAD_UP = 19
67 KEYCODE_DPAD_DOWN = 20 67 KEYCODE_DPAD_DOWN = 20
68 KEYCODE_DPAD_RIGHT = 22 68 KEYCODE_DPAD_RIGHT = 22
69 KEYCODE_ENTER = 66 69 KEYCODE_ENTER = 66
70 KEYCODE_MENU = 82 70 KEYCODE_MENU = 82
71 71
72 MD5SUM_DEVICE_FOLDER = constants.TEST_EXECUTABLE_DIR + '/md5sum/' 72 MD5SUM_DEVICE_FOLDER = constants.TEST_EXECUTABLE_DIR + '/md5sum/'
73 MD5SUM_DEVICE_PATH = MD5SUM_DEVICE_FOLDER + 'md5sum_bin' 73 MD5SUM_DEVICE_PATH = MD5SUM_DEVICE_FOLDER + 'md5sum_bin'
74 MD5SUM_LD_LIBRARY_PATH = 'LD_LIBRARY_PATH=%s' % MD5SUM_DEVICE_FOLDER 74 MD5SUM_LD_LIBRARY_PATH = 'LD_LIBRARY_PATH=%s' % MD5SUM_DEVICE_FOLDER
75 75
76 CONTROL_BATTERY_CHARGING_COMMAND = [
Philippe 2014/04/01 09:51:58 Nit: s/COMMAND/COMMANDS?
qsr 2014/04/02 09:14:57 Done.
77 {
tonyg 2014/04/01 16:13:18 WDYT about adding a comment listing some example d
qsr 2014/04/02 09:14:57 Done. This one if for the N4 and the only one I ha
78 'witness_file': '/sys/module/pm8921_charger/parameters/disabled',
79 'enable_command': 'echo 0 > /sys/module/pm8921_charger/parameters/disabled',
80 'disable_command':
81 'echo 1 > /sys/module/pm8921_charger/parameters/disabled',
82 },
83 ];
76 84
77 def GetAVDs(): 85 def GetAVDs():
78 """Returns a list of AVDs.""" 86 """Returns a list of AVDs."""
79 re_avd = re.compile('^[ ]+Name: ([a-zA-Z0-9_:.-]+)', re.MULTILINE) 87 re_avd = re.compile('^[ ]+Name: ([a-zA-Z0-9_:.-]+)', re.MULTILINE)
80 avds = re_avd.findall(cmd_helper.GetCmdOutput(['android', 'list', 'avd'])) 88 avds = re_avd.findall(cmd_helper.GetCmdOutput(['android', 'list', 'avd']))
81 return avds 89 return avds
82 90
83 def ResetBadDevices(): 91 def ResetBadDevices():
84 """Removes the blacklist that keeps track of bad devices for a current 92 """Removes the blacklist that keeps track of bad devices for a current
85 build. 93 build.
(...skipping 1732 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 out = self.RunShellCommand('sh %s %s %s' % (temp_script_file, source, dest), 1826 out = self.RunShellCommand('sh %s %s %s' % (temp_script_file, source, dest),
1819 timeout_time=120) 1827 timeout_time=120)
1820 if self._device: 1828 if self._device:
1821 device_repr = self._device[-4:] 1829 device_repr = self._device[-4:]
1822 else: 1830 else:
1823 device_repr = '????' 1831 device_repr = '????'
1824 for line in out: 1832 for line in out:
1825 logging.info('[%s]> %s', device_repr, line) 1833 logging.info('[%s]> %s', device_repr, line)
1826 self.RunShellCommand('rm %s' % temp_script_file) 1834 self.RunShellCommand('rm %s' % temp_script_file)
1827 1835
1836 def _GetControlBatteryChargingCommand(self):
1837 for command in CONTROL_BATTERY_CHARGING_COMMAND:
1838 witness_file = command['witness_file']
1839 if self.FileExistsOnDevice(witness_file):
tonyg 2014/04/01 16:13:18 Maybe we should add an assert that all of the requ
qsr 2014/04/02 09:14:57 Done.
1840 return command
1841 return None
1842
1843 def CanControlBatteryCharging(self):
tonyg 2014/04/01 16:13:18 Is BatteryCharging really the intent of this API?
qsr 2014/04/02 09:14:57 You are right. Will rename.
1844 return self._GetControlBatteryChargingCommand() is not None
1845
1846 def DisableBatteryCharging(self):
1847 command = self._GetControlBatteryChargingCommand()
tonyg 2014/04/01 16:13:18 Can we cache the enable/disable command in _GetCon
qsr 2014/04/02 09:14:57 Done.
1848 if not command:
1849 raise Exception('Unable to act on battery charing.')
tonyg 2014/04/01 16:13:18 s/charing/charging/
qsr 2014/04/02 09:14:57 Done.
1850 disable_command = command['disable_command']
1851 self.RunShellCommand(disable_command)
1852
1853 def EnableBatteryCharging(self):
1854 command = self._GetControlBatteryChargingCommand()
1855 if not command:
1856 raise Exception('Unable to act on battery charing.')
1857 disable_command = command['enable_command']
1858 self.RunShellCommand(disable_command)
1859
1828 1860
1829 class NewLineNormalizer(object): 1861 class NewLineNormalizer(object):
1830 """A file-like object to normalize EOLs to '\n'. 1862 """A file-like object to normalize EOLs to '\n'.
1831 1863
1832 Pexpect runs adb within a pseudo-tty device (see 1864 Pexpect runs adb within a pseudo-tty device (see
1833 http://www.noah.org/wiki/pexpect), so any '\n' printed by adb is written 1865 http://www.noah.org/wiki/pexpect), so any '\n' printed by adb is written
1834 as '\r\n' to the logfile. Since adb already uses '\r\n' to terminate 1866 as '\r\n' to the logfile. Since adb already uses '\r\n' to terminate
1835 lines, the log ends up having '\r\r\n' at the end of each line. This 1867 lines, the log ends up having '\r\r\n' at the end of each line. This
1836 filter replaces the above with a single '\n' in the data stream. 1868 filter replaces the above with a single '\n' in the data stream.
1837 """ 1869 """
1838 def __init__(self, output): 1870 def __init__(self, output):
1839 self._output = output 1871 self._output = output
1840 1872
1841 def write(self, data): 1873 def write(self, data):
1842 data = data.replace('\r\r\n', '\n') 1874 data = data.replace('\r\r\n', '\n')
1843 self._output.write(data) 1875 self._output.write(data)
1844 1876
1845 def flush(self): 1877 def flush(self):
1846 self._output.flush() 1878 self._output.flush()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698