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

Side by Side Diff: build/android/pylib/device/adb_wrapper.py

Issue 338353004: [Android] Switch KillAll, StartActivity, and BroadcastIntent to DeviceUtils. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: appeasing windows Created 6 years, 6 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
« no previous file with comments | « build/android/pylib/content_settings.py ('k') | build/android/pylib/device/adb_wrapper_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 """This module wraps Android's adb tool. 5 """This module wraps Android's adb tool.
6 6
7 This is a thin wrapper around the adb interface. Any additional complexity 7 This is a thin wrapper around the adb interface. Any additional complexity
8 should be delegated to a higher level (ex. DeviceUtils). 8 should be delegated to a higher level (ex. DeviceUtils).
9 """ 9 """
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 """ 44 """
45 self._device_serial = str(device_serial) 45 self._device_serial = str(device_serial)
46 46
47 # pylint: disable=W0613 47 # pylint: disable=W0613
48 @classmethod 48 @classmethod
49 @decorators.WithTimeoutAndRetries 49 @decorators.WithTimeoutAndRetries
50 def _RunAdbCmd(cls, arg_list, timeout=None, retries=None, check_error=True): 50 def _RunAdbCmd(cls, arg_list, timeout=None, retries=None, check_error=True):
51 cmd = ['adb'] + arg_list 51 cmd = ['adb'] + arg_list
52 exit_code, output = cmd_helper.GetCmdStatusAndOutput(cmd) 52 exit_code, output = cmd_helper.GetCmdStatusAndOutput(cmd)
53 if exit_code != 0: 53 if exit_code != 0:
54 raise device_errors.CommandFailedError( 54 raise device_errors.AdbCommandFailedError(
55 cmd, 'returned non-zero exit code %s, output: %s' % 55 cmd, 'returned non-zero exit code %s, output: %s' %
56 (exit_code, output)) 56 (exit_code, output))
57 # This catches some errors, including when the device drops offline; 57 # This catches some errors, including when the device drops offline;
58 # unfortunately adb is very inconsistent with error reporting so many 58 # unfortunately adb is very inconsistent with error reporting so many
59 # command failures present differently. 59 # command failures present differently.
60 if check_error and output[:len('error:')] == 'error:': 60 if check_error and output[:len('error:')] == 'error:':
61 raise device_errors.CommandFailedError(arg_list, output) 61 raise device_errors.AdbCommandFailedError(arg_list, output)
62 return output 62 return output
63 # pylint: enable=W0613 63 # pylint: enable=W0613
64 64
65 def _DeviceAdbCmd(self, arg_list, timeout, retries, check_error=True): 65 def _DeviceAdbCmd(self, arg_list, timeout, retries, check_error=True):
66 """Runs an adb command on the device associated with this object. 66 """Runs an adb command on the device associated with this object.
67 67
68 Args: 68 Args:
69 arg_list: A list of arguments to adb. 69 arg_list: A list of arguments to adb.
70 timeout: Timeout in seconds. 70 timeout: Timeout in seconds.
71 retries: Number of retries. 71 retries: Number of retries.
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 command: The shell command to run. 158 command: The shell command to run.
159 expect_rc: (optional) If set checks that the command's return code matches 159 expect_rc: (optional) If set checks that the command's return code matches
160 this value. 160 this value.
161 timeout: (optional) Timeout per try in seconds. 161 timeout: (optional) Timeout per try in seconds.
162 retries: (optional) Number of retries to attempt. 162 retries: (optional) Number of retries to attempt.
163 163
164 Returns: 164 Returns:
165 The output of the shell command as a string. 165 The output of the shell command as a string.
166 166
167 Raises: 167 Raises:
168 device_errors.CommandFailedError: If the return code doesn't match 168 device_errors.AdbCommandFailedError: If the return code doesn't match
169 |expect_rc|. 169 |expect_rc|.
170 """ 170 """
171 if expect_rc is None: 171 if expect_rc is None:
172 actual_command = command 172 actual_command = command
173 else: 173 else:
174 actual_command = '%s; echo $?;' % command 174 actual_command = '%s; echo $?;' % command
175 output = self._DeviceAdbCmd( 175 output = self._DeviceAdbCmd(
176 ['shell', actual_command], timeout, retries, check_error=False) 176 ['shell', actual_command], timeout, retries, check_error=False)
177 if expect_rc is not None: 177 if expect_rc is not None:
178 output_end = output.rstrip().rfind('\n') + 1 178 output_end = output.rstrip().rfind('\n') + 1
179 rc = output[output_end:].strip() 179 rc = output[output_end:].strip()
180 output = output[:output_end] 180 output = output[:output_end]
181 if int(rc) != expect_rc: 181 if int(rc) != expect_rc:
182 raise device_errors.CommandFailedError( 182 raise device_errors.AdbCommandFailedError(
183 ['shell', command], 183 ['shell', command],
184 'shell command exited with code: %s' % rc, 184 'shell command exited with code: %s' % rc,
185 self._device_serial) 185 self._device_serial)
186 return output 186 return output
187 187
188 def Logcat(self, filter_spec=None, timeout=_DEFAULT_TIMEOUT, 188 def Logcat(self, filter_spec=None, timeout=_DEFAULT_TIMEOUT,
189 retries=_DEFAULT_RETRIES): 189 retries=_DEFAULT_RETRIES):
190 """Get the logcat output. 190 """Get the logcat output.
191 191
192 Args: 192 Args:
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 cmd = ['install'] 251 cmd = ['install']
252 if forward_lock: 252 if forward_lock:
253 cmd.append('-l') 253 cmd.append('-l')
254 if reinstall: 254 if reinstall:
255 cmd.append('-r') 255 cmd.append('-r')
256 if sd_card: 256 if sd_card:
257 cmd.append('-s') 257 cmd.append('-s')
258 cmd.append(apk_path) 258 cmd.append(apk_path)
259 output = self._DeviceAdbCmd(cmd, timeout, retries) 259 output = self._DeviceAdbCmd(cmd, timeout, retries)
260 if 'Success' not in output: 260 if 'Success' not in output:
261 raise device_errors.CommandFailedError(cmd, output) 261 raise device_errors.AdbCommandFailedError(cmd, output)
262 262
263 def Uninstall(self, package, keep_data=False, timeout=_DEFAULT_TIMEOUT, 263 def Uninstall(self, package, keep_data=False, timeout=_DEFAULT_TIMEOUT,
264 retries=_DEFAULT_RETRIES): 264 retries=_DEFAULT_RETRIES):
265 """Remove the app |package| from the device. 265 """Remove the app |package| from the device.
266 266
267 Args: 267 Args:
268 package: The package to uninstall. 268 package: The package to uninstall.
269 keep_data: (optional) If set keep the data and cache directories. 269 keep_data: (optional) If set keep the data and cache directories.
270 timeout: (optional) Timeout per try in seconds. 270 timeout: (optional) Timeout per try in seconds.
271 retries: (optional) Number of retries to attempt. 271 retries: (optional) Number of retries to attempt.
272 """ 272 """
273 cmd = ['uninstall'] 273 cmd = ['uninstall']
274 if keep_data: 274 if keep_data:
275 cmd.append('-k') 275 cmd.append('-k')
276 cmd.append(package) 276 cmd.append(package)
277 output = self._DeviceAdbCmd(cmd, timeout, retries) 277 output = self._DeviceAdbCmd(cmd, timeout, retries)
278 if 'Failure' in output: 278 if 'Failure' in output:
279 raise device_errors.CommandFailedError(cmd, output) 279 raise device_errors.AdbCommandFailedError(cmd, output)
280 280
281 def Backup(self, path, packages=None, apk=False, shared=False, 281 def Backup(self, path, packages=None, apk=False, shared=False,
282 nosystem=True, include_all=False, timeout=_DEFAULT_TIMEOUT, 282 nosystem=True, include_all=False, timeout=_DEFAULT_TIMEOUT,
283 retries=_DEFAULT_RETRIES): 283 retries=_DEFAULT_RETRIES):
284 """Write an archive of the device's data to |path|. 284 """Write an archive of the device's data to |path|.
285 285
286 Args: 286 Args:
287 path: Local path to store the backup file. 287 path: Local path to store the backup file.
288 packages: List of to packages to be backed up. 288 packages: List of to packages to be backed up.
289 apk: (optional) If set include the .apk files in the archive. 289 apk: (optional) If set include the .apk files in the archive.
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 376
377 def Root(self, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES): 377 def Root(self, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES):
378 """Restarts the adbd daemon with root permissions, if possible. 378 """Restarts the adbd daemon with root permissions, if possible.
379 379
380 Args: 380 Args:
381 timeout: (optional) Timeout per try in seconds. 381 timeout: (optional) Timeout per try in seconds.
382 retries: (optional) Number of retries to attempt. 382 retries: (optional) Number of retries to attempt.
383 """ 383 """
384 output = self._DeviceAdbCmd(['root'], timeout, retries) 384 output = self._DeviceAdbCmd(['root'], timeout, retries)
385 if 'cannot' in output: 385 if 'cannot' in output:
386 raise device_errors.CommandFailedError(['root'], output) 386 raise device_errors.AdbCommandFailedError(['root'], output)
387 387
OLDNEW
« no previous file with comments | « build/android/pylib/content_settings.py ('k') | build/android/pylib/device/adb_wrapper_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698