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

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

Issue 775333002: Migrate DeviceUtils.ReadFile to adb_wrapper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix breakages in telemetry unittests 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
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 0ff3a8454799eccc160b4aaf357b1f1bb34dc2d3..f416c7866ae44194b404689a5b3eb303f05b2e70 100644
--- a/build/android/pylib/device/device_utils.py
+++ b/build/android/pylib/device/device_utils.py
@@ -56,6 +56,13 @@ def RestartServer():
pylib.android_commands.AndroidCommands().RestartAdbServer()
+def _JoinLines(lines):
+ # makes sure that the last line is also terminated, and is more memory
+ # efficient than first appending an end-line to each line and then joining
+ # all of them together.
+ return ''.join(s for line in lines for s in (line, '\n'))
+
+
class DeviceUtils(object):
_VALID_SHELL_VARIABLE = re.compile('^[a-zA-Z_][a-zA-Z0-9_]*$')
@@ -857,7 +864,8 @@ class DeviceUtils(object):
str(e), str(self)), None, sys.exc_info()[2]
@decorators.WithTimeoutAndRetriesFromInstance()
- def ReadFile(self, device_path, as_root=False, timeout=None, retries=None):
+ def ReadFile(self, device_path, as_root=False,
+ timeout=None, retries=None):
"""Reads the contents of a file from the device.
Args:
@@ -869,22 +877,17 @@ class DeviceUtils(object):
retries: number of retries
Returns:
- The contents of the file at |device_path| as a list of lines.
+ The contents of |device_path| as a string. Contents are intepreted using
+ universal newlines, so the caller will see them encoded as '\n'. Also,
+ all lines will be terminated.
Raises:
- CommandFailedError if the file can't be read.
+ AdbCommandFailedError if the file can't be read.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
"""
- # TODO(jbudorick) Evaluate whether we want to return a list of lines after
- # the implementation switch, and if file not found should raise exception.
- if as_root:
- if not self.old_interface.CanAccessProtectedFileContents():
- raise device_errors.CommandFailedError(
- 'Cannot read from %s with root privileges.' % device_path)
- return self.old_interface.GetProtectedFileContents(device_path)
- else:
- return self.old_interface.GetFileContents(device_path)
+ return _JoinLines(self.RunShellCommand(
+ ['cat', device_path], as_root=as_root, check_return=True))
@decorators.WithTimeoutAndRetriesFromInstance()
def WriteFile(self, device_path, contents, as_root=False, force_push=False,

Powered by Google App Engine
This is Rietveld 408576698