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

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

Issue 333933003: [Android] Switch to DeviceUtils version of RunShellCommand. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/pylib/content_settings.py ('k') | build/android/pylib/flag_changer.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 97019236374fd8adaa3a8b021b97fd3f25a8f5ea..0fee10a7fb0c701551179ae6f057ce2729318053 100644
--- a/build/android/pylib/device/device_utils.py
+++ b/build/android/pylib/device/device_utils.py
@@ -99,6 +99,17 @@ class DeviceUtils(object):
Returns:
True if adbd has root privileges, False otherwise.
"""
+ return self._HasRootImpl()
+
+ def _HasRootImpl(self):
+ """ Implementation of HasRoot.
+
+ This is split from HasRoot to allow other DeviceUtils methods to call
+ HasRoot without spawning a new timeout thread.
+
+ Returns:
+ Same as for |HasRoot|.
+ """
return self.old_interface.IsRootEnabled()
@decorators.WithTimeoutAndRetriesFromInstance()
@@ -171,7 +182,7 @@ class DeviceUtils(object):
self.old_interface.WaitForSdCardReady(timeout)
if wifi:
while not 'Wi-Fi is enabled' in (
- self.old_interface.RunShellCommand('dumpsys wifi')):
+ self._RunShellCommandImpl('dumpsys wifi')):
time.sleep(0.1)
@decorators.WithTimeoutAndRetriesDefaults(
@@ -232,6 +243,61 @@ class DeviceUtils(object):
raise device_errors.CommandFailedError(
['adb', 'install', apk_path], str(e))
+ @decorators.WithTimeoutAndRetriesFromInstance()
+ def RunShellCommand(self, cmd, check_return=False, root=False, timeout=None,
+ retries=None):
+ """Run an ADB shell command.
+
+ TODO(jbudorick) Switch the default value of check_return to True after
+ AndroidCommands is gone.
+
+ Args:
+ cmd: A list containing the command to run on the device and any arguments.
+ check_return: A boolean indicating whether or not the return code should
+ be checked.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ Raises:
+ CommandFailedError if check_return is True and the return code is nozero.
+ Returns:
+ The output of the command.
+ """
+ return self._RunShellCommandImpl(cmd, check_return=check_return, root=root,
+ timeout=timeout)
+
+ def _RunShellCommandImpl(self, cmd, check_return=False, root=False,
+ timeout=None):
+ """Implementation of RunShellCommand.
+
+ This is split from RunShellCommand to allow other DeviceUtils methods to
+ call RunShellCommand without spawning a new timeout thread.
+
+ TODO(jbudorick) Remove the timeout parameter once this is no longer
+ implemented via AndroidCommands.
+
+ Args:
+ cmd: Same as for |RunShellCommand|.
+ check_return: Same as for |RunShellCommand|.
+ timeout: Same as for |IsOnline|.
+ Raises:
+ Same as for |RunShellCommand|.
+ Returns:
+ Same as for |RunShellCommand|.
+ """
+ if isinstance(cmd, list):
+ cmd = ' '.join(cmd)
+ if root and not self.HasRoot():
+ cmd = 'su -c %s' % cmd
+ if check_return:
+ code, output = self.old_interface.GetShellCommandStatusAndOutput(
+ cmd, timeout_time=timeout)
+ if int(code) != 0:
+ raise device_errors.CommandFailedError(
+ cmd, 'Nonzero exit code (%d)' % code)
+ else:
+ output = self.old_interface.RunShellCommand(cmd, timeout_time=timeout)
+ return output
+
def __str__(self):
"""Returns the device serial."""
return self.old_interface.GetDevice()
« no previous file with comments | « build/android/pylib/content_settings.py ('k') | build/android/pylib/flag_changer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698