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

Unified Diff: build/android/pylib/device/device_utils.py

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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
« no previous file with comments | « build/android/pylib/device/device_errors.py ('k') | build/android/pylib/device/device_utils_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 845d5801bf7db51cd7bef8a5919842c8a70d5767..0ff3a8454799eccc160b4aaf357b1f1bb34dc2d3 100644
--- a/build/android/pylib/device/device_utils.py
+++ b/build/android/pylib/device/device_utils.py
@@ -65,8 +65,8 @@ class DeviceUtils(object):
"""DeviceUtils constructor.
Args:
- device: Either a device serial, an existing AdbWrapper instance, an
- an existing AndroidCommands instance, or nothing.
+ device: Either a device serial, an existing AdbWrapper instance, or an
+ an existing AndroidCommands instance.
default_timeout: An integer containing the default number of seconds to
wait for an operation to complete if no explicit value
is provided.
@@ -85,11 +85,8 @@ class DeviceUtils(object):
elif isinstance(device, pylib.android_commands.AndroidCommands):
self.adb = adb_wrapper.AdbWrapper(device.GetDevice())
self.old_interface = device
- elif not device:
- self.adb = adb_wrapper.AdbWrapper('')
- self.old_interface = pylib.android_commands.AndroidCommands()
else:
- raise ValueError('Unsupported type passed for argument "device"')
+ raise ValueError('Unsupported device value: %r' % device)
self._commands_installed = None
self._default_timeout = default_timeout
self._default_retries = default_retries
@@ -135,7 +132,7 @@ class DeviceUtils(object):
try:
self.RunShellCommand('ls /root', check_return=True)
return True
- except device_errors.AdbShellCommandFailedError:
+ except device_errors.AdbCommandFailedError:
return False
def NeedsSU(self, timeout=None, retries=None):
@@ -160,7 +157,7 @@ class DeviceUtils(object):
self.RunShellCommand('su -c ls /root && ! ls /root', check_return=True,
timeout=timeout, retries=retries)
self._cache['needs_su'] = True
- except device_errors.AdbShellCommandFailedError:
+ except device_errors.AdbCommandFailedError:
self._cache['needs_su'] = False
return self._cache['needs_su']
@@ -177,11 +174,13 @@ class DeviceUtils(object):
CommandFailedError if root could not be enabled.
CommandTimeoutError on timeout.
"""
+ if self.IsUserBuild():
+ raise device_errors.CommandFailedError(
+ 'Cannot enable root in user builds.', str(self))
if 'needs_su' in self._cache:
del self._cache['needs_su']
- if not self.old_interface.EnableAdbRoot():
- raise device_errors.CommandFailedError(
- 'Could not enable root.', device=str(self))
+ self.adb.Root()
+ self.adb.WaitForDevice()
@decorators.WithTimeoutAndRetriesFromInstance()
def IsUserBuild(self, timeout=None, retries=None):
@@ -271,7 +270,7 @@ class DeviceUtils(object):
self.RunShellCommand(['test', '-d', self.GetExternalStoragePath()],
check_return=True)
return True
- except device_errors.AdbShellCommandFailedError:
+ except device_errors.AdbCommandFailedError:
return False
def pm_ready():
@@ -354,8 +353,7 @@ class DeviceUtils(object):
out = self.old_interface.Uninstall(package_name)
for line in out.splitlines():
if 'Failure' in line:
- raise device_errors.CommandFailedError(
- line.strip(), device=str(self))
+ raise device_errors.CommandFailedError(line.strip(), str(self))
else:
should_install = False
else:
@@ -365,11 +363,10 @@ class DeviceUtils(object):
out = self.old_interface.Install(apk_path, reinstall=reinstall)
for line in out.splitlines():
if 'Failure' in line:
- raise device_errors.CommandFailedError(
- line.strip(), device=str(self))
+ raise device_errors.CommandFailedError(line.strip(), str(self))
except AssertionError as e:
raise device_errors.CommandFailedError(
- str(e), device=str(self)), None, sys.exc_info()[2]
+ str(e), str(self)), None, sys.exc_info()[2]
@decorators.WithTimeoutAndRetriesFromInstance()
def RunShellCommand(self, cmd, check_return=False, cwd=None, env=None,
@@ -416,7 +413,7 @@ class DeviceUtils(object):
(with the optional newline at the end stripped).
Raises:
- AdbShellCommandFailedError if check_return is True and the exit code of
+ AdbCommandFailedError if check_return is True and the exit code of
the command run on the device is non-zero.
CommandFailedError if single_line is True but the output contains two or
more lines.
@@ -444,7 +441,7 @@ class DeviceUtils(object):
try:
output = self.adb.Shell(cmd)
- except device_errors.AdbShellCommandFailedError as e:
+ except device_errors.AdbCommandFailedError as e:
if check_return:
raise
else:
@@ -486,7 +483,7 @@ class DeviceUtils(object):
pids = self._GetPidsImpl(process_name)
if not pids:
raise device_errors.CommandFailedError(
- 'No process "%s"' % process_name, device=str(self))
+ 'No process "%s"' % process_name, str(self))
cmd = ['kill', '-%d' % signum] + pids.values()
self.RunShellCommand(cmd, as_root=as_root, check_return=True)
@@ -529,7 +526,7 @@ class DeviceUtils(object):
force_stop=force_stop, flags=intent.flags)
for l in output:
if l.startswith('Error:'):
- raise device_errors.CommandFailedError(l, device=str(self))
+ raise device_errors.CommandFailedError(l, str(self))
@decorators.WithTimeoutAndRetriesFromInstance()
def StartInstrumentation(self, component, finish=True, raw=False,
@@ -831,7 +828,11 @@ class DeviceUtils(object):
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
"""
- return self.old_interface.FileExistsOnDevice(device_path)
+ try:
+ self.RunShellCommand(['test', '-e', device_path], check_return=True)
+ return True
+ except device_errors.AdbCommandFailedError:
+ return False
@decorators.WithTimeoutAndRetriesFromInstance()
def PullFile(self, device_path, host_path, timeout=None, retries=None):
@@ -853,7 +854,7 @@ class DeviceUtils(object):
self.old_interface.PullFileFromDevice(device_path, host_path)
except AssertionError as e:
raise device_errors.CommandFailedError(
- str(e), device=str(self)), None, sys.exc_info()[2]
+ str(e), str(self)), None, sys.exc_info()[2]
@decorators.WithTimeoutAndRetriesFromInstance()
def ReadFile(self, device_path, as_root=False, timeout=None, retries=None):
@@ -985,6 +986,9 @@ class DeviceUtils(object):
Raises:
CommandTimeoutError on timeout.
"""
+ assert isinstance(property_name, basestring), (
+ "property_name is not a string: %r" % property_name)
+
cache_key = '_prop:' + property_name
if cache and cache_key in self._cache:
return self._cache[cache_key]
@@ -1018,6 +1022,10 @@ class DeviceUtils(object):
set on the device (e.g. because it is not rooted).
CommandTimeoutError on timeout.
"""
+ assert isinstance(property_name, basestring), (
+ "property_name is not a string: %r" % property_name)
+ assert isinstance(value, basestring), "value is not a string: %r" % value
+
self.RunShellCommand(['setprop', property_name, value], check_return=True)
if property_name in self._cache:
del self._cache[property_name]
@@ -1134,12 +1142,7 @@ class DeviceUtils(object):
def __str__(self):
"""Returns the device serial."""
- s = self.old_interface.GetDevice()
- if not s:
- s = self.old_interface.Adb().GetSerialNumber()
- if s == 'unknown':
- raise device_errors.NoDevicesError()
- return s
+ return self.adb.GetDeviceSerial()
@staticmethod
def parallel(devices=None, async=False):
« no previous file with comments | « build/android/pylib/device/device_errors.py ('k') | build/android/pylib/device/device_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698