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

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

Issue 358993003: [Android] Switch to DeviceUtils versions of file functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
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 c87ca5143b4495fb34f11c51b14916e7576bd513..55623867e3fdbc42d8c20a0e96ad3afd951d8ad1 100644
--- a/build/android/pylib/device/device_utils.py
+++ b/build/android/pylib/device/device_utils.py
@@ -435,6 +435,114 @@ class DeviceUtils(object):
"""
self.old_interface.SendKeyEvent(keycode)
+ PUSH_CHANGED_FILES_DEFAULT_TIMEOUT = 10 * _DEFAULT_TIMEOUT
+ PUSH_CHANGED_FILES_DEFAULT_RETRIES = _DEFAULT_RETRIES
+
+ @decorators.WithTimeoutAndRetriesDefaults(
+ PUSH_CHANGED_FILES_DEFAULT_TIMEOUT,
+ PUSH_CHANGED_FILES_DEFAULT_RETRIES)
+ def PushChangedFiles(self, host_path, device_path, timeout=None,
+ retries=None):
+ """Push files to the device, skipping files that don't need updating.
+
+ Args:
+ host_path: A string containing the path to the file or directory on the
+ host that should be minimally pushed to the device.
frankf 2014/06/28 00:21:35 specify whether this is absolute and/or relative.
jbudorick 2014/06/30 14:37:19 Done.
+ device_path: A string containing the destination path on the device.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ """
+ self.old_interface.PushIfNeeded(host_path, device_path)
+
+ @decorators.WithTimeoutAndRetriesFromInstance()
+ def FileExists(self, device_path, timeout=None, retries=None):
+ """Checks whether the given file exists on the device.
+
+ Args:
+ device_path: A string containing the path to the file on the device.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ Returns:
+ True if the file exists on the device, False otherwise.
+ """
+ return self._FileExistsImpl(device_path)
+
+ def _FileExistsImpl(self, device_path):
+ """Implementation of FileExists.
+
+ This is split from FileExists to allow other DeviceUtils methods to call
+ FileExists without spawning a new timeout thread.
+
+ Args:
+ device_path: Same as for |FileExists|.
+ Returns:
+ True if the file exists on the device, False otherwise.
+ """
+ return self.old_interface.FileExistsOnDevice(device_path)
+
+ @decorators.WithTimeoutAndRetriesFromInstance()
+ def PullFile(self, device_path, host_path, timeout=None, retries=None):
+ """Pull a file from the device.
+
+ Args:
+ device_path: A string containing the path of the file to pull from the
+ device.
+ host_path: A string containing the destination path on the host.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ """
+ self.old_interface.PullFileFromDevice(device_path, host_path)
+
+ @decorators.WithTimeoutAndRetriesFromInstance()
+ def ReadFile(self, device_path, as_root=False, timeout=None, retries=None):
+ """Reads the contents of a file from the device.
+
+ TODO(jbudorick) Do we actually want to return a list of lines after
+ the implementation switch?
frankf 2014/06/28 00:21:35 move the TODO outside of docstring
jbudorick 2014/06/30 14:37:20 Done.
+
+ Args:
+ device_path: A string containing the path of the file to read from the
+ device.
+ as_root: A boolean indicating whether the read should be executed with
+ root priveleges.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ Returns:
+ The contents of the file at |device_path| as a list of lines.
+ Raises:
+ CommandFailedError if the file can't be read.
+ """
+ if as_root:
+ if not self.old_interface.CanAccessProtectedFileContents():
+ raise device_errors.CommandFailedError(
+ 'Cannot read from %s with root priveleges.' % 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, timeout=None,
+ retries=None):
+ """Writes |contents| to a file on the device.
+
+ Args:
+ device_path: A string containing the destination path on the device.
+ contents: A string containing the data to write to the device.
+ as_root: A boolean indicating whether the write should be executed with
+ root priveleges.
+ timeout: Same as for |IsOnline|.
+ retries: Same as for |IsOnline|.
+ Raises:
+ CommandFailedError if the file could not be written on the device.
+ """
+ if as_root:
+ if not self.old_interface.CanAccessProtectedFileContents():
+ raise device_errors.CommandFailedError(
+ 'Cannot write to %s with root priveleges.' % device_path)
+ self.old_interface.SetProtectedFileContents(device_path, contents)
+ else:
+ self.old_interface.SetFileContents(device_path, contents)
+
def __str__(self):
"""Returns the device serial."""
return self.old_interface.GetDevice()

Powered by Google App Engine
This is Rietveld 408576698