| 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 f416c7866ae44194b404689a5b3eb303f05b2e70..0ff3a8454799eccc160b4aaf357b1f1bb34dc2d3 100644
|
| --- a/build/android/pylib/device/device_utils.py
|
| +++ b/build/android/pylib/device/device_utils.py
|
| @@ -54,13 +54,6 @@
|
| CommandFailedError if we fail to kill or restart the server.
|
| """
|
| 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):
|
| @@ -864,8 +857,7 @@
|
| 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:
|
| @@ -877,17 +869,22 @@
|
| retries: number of retries
|
|
|
| Returns:
|
| - 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:
|
| - AdbCommandFailedError if the file can't be read.
|
| - CommandTimeoutError on timeout.
|
| - DeviceUnreachableError on missing device.
|
| - """
|
| - return _JoinLines(self.RunShellCommand(
|
| - ['cat', device_path], as_root=as_root, check_return=True))
|
| + The contents of the file at |device_path| as a list of lines.
|
| +
|
| + Raises:
|
| + CommandFailedError 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)
|
|
|
| @decorators.WithTimeoutAndRetriesFromInstance()
|
| def WriteFile(self, device_path, contents, as_root=False, force_push=False,
|
|
|