Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Provides a variety of device interactions based on adb. | 5 """Provides a variety of device interactions based on adb. |
| 6 | 6 |
| 7 Eventually, this will be based on adb_wrapper. | 7 Eventually, this will be based on adb_wrapper. |
| 8 """ | 8 """ |
| 9 # pylint: disable=W0613 | 9 # pylint: disable=W0613 |
| 10 | 10 |
| 11 import pipes | |
| 11 import sys | 12 import sys |
| 12 import time | 13 import time |
| 13 | 14 |
| 14 import pylib.android_commands | 15 import pylib.android_commands |
| 15 from pylib.device import adb_wrapper | 16 from pylib.device import adb_wrapper |
| 16 from pylib.device import decorators | 17 from pylib.device import decorators |
| 17 from pylib.device import device_errors | 18 from pylib.device import device_errors |
| 18 from pylib.utils import apk_helper | 19 from pylib.utils import apk_helper |
| 19 from pylib.utils import parallelizer | 20 from pylib.utils import parallelizer |
| 20 | 21 |
| (...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 628 """ | 629 """ |
| 629 if as_root: | 630 if as_root: |
| 630 if not self.old_interface.CanAccessProtectedFileContents(): | 631 if not self.old_interface.CanAccessProtectedFileContents(): |
| 631 raise device_errors.CommandFailedError( | 632 raise device_errors.CommandFailedError( |
| 632 'Cannot write to %s with root privileges.' % device_path) | 633 'Cannot write to %s with root privileges.' % device_path) |
| 633 self.old_interface.SetProtectedFileContents(device_path, contents) | 634 self.old_interface.SetProtectedFileContents(device_path, contents) |
| 634 else: | 635 else: |
| 635 self.old_interface.SetFileContents(device_path, contents) | 636 self.old_interface.SetFileContents(device_path, contents) |
| 636 | 637 |
| 637 @decorators.WithTimeoutAndRetriesFromInstance() | 638 @decorators.WithTimeoutAndRetriesFromInstance() |
| 639 def WriteTextFile(self, device_path, text, as_root=False, timeout=None, | |
| 640 retries=None): | |
|
jbudorick
2014/09/11 13:57:07
nit: line this up with the params above
| |
| 641 """Writes |text| to a file on the device. | |
| 642 | |
| 643 Assuming that |text| is a small string, this is typically more efficient | |
| 644 than |WriteFile|, as no files are pushed into the device. | |
| 645 | |
| 646 Args: | |
| 647 device_path: A string containing the absolute path to the file to write | |
| 648 on the device. | |
| 649 text: A short string of text to write to the file on the device. | |
| 650 as_root: A boolean indicating whether the write should be executed with | |
| 651 root privileges. | |
| 652 timeout: timeout in seconds | |
| 653 retries: number of retries | |
| 654 | |
| 655 Raises: | |
| 656 CommandFailedError if the file could not be written on the device. | |
| 657 CommandTimeoutError on timeout. | |
| 658 DeviceUnreachableError on missing device. | |
| 659 """ | |
| 660 self._RunShellCommandImpl('echo {1} > {0}'.format(device_path, | |
| 661 pipes.quote(text)), check_return=True, as_root=as_root) | |
| 662 | |
| 663 @decorators.WithTimeoutAndRetriesFromInstance() | |
| 638 def Ls(self, device_path, timeout=None, retries=None): | 664 def Ls(self, device_path, timeout=None, retries=None): |
| 639 """Lists the contents of a directory on the device. | 665 """Lists the contents of a directory on the device. |
| 640 | 666 |
| 641 Args: | 667 Args: |
| 642 device_path: A string containing the path of the directory on the device | 668 device_path: A string containing the path of the directory on the device |
| 643 to list. | 669 to list. |
| 644 timeout: timeout in seconds | 670 timeout: timeout in seconds |
| 645 retries: number of retries | 671 retries: number of retries |
| 646 | 672 |
| 647 Returns: | 673 Returns: |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 815 A Parallelizer operating over |devices|. | 841 A Parallelizer operating over |devices|. |
| 816 """ | 842 """ |
| 817 if not devices or len(devices) == 0: | 843 if not devices or len(devices) == 0: |
| 818 devices = pylib.android_commands.GetAttachedDevices() | 844 devices = pylib.android_commands.GetAttachedDevices() |
| 819 parallelizer_type = (parallelizer.Parallelizer if async | 845 parallelizer_type = (parallelizer.Parallelizer if async |
| 820 else parallelizer.SyncParallelizer) | 846 else parallelizer.SyncParallelizer) |
| 821 return parallelizer_type([ | 847 return parallelizer_type([ |
| 822 d if isinstance(d, DeviceUtils) else DeviceUtils(d) | 848 d if isinstance(d, DeviceUtils) else DeviceUtils(d) |
| 823 for d in devices]) | 849 for d in devices]) |
| 824 | 850 |
| OLD | NEW |