Chromium Code Reviews| 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() |