| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 an interface to communicate with the device via the adb command. | 5 """Provides an interface to communicate with the device via the adb command. |
| 6 | 6 |
| 7 Assumes adb binary is currently on system path. | 7 Assumes adb binary is currently on system path. |
| 8 """ | 8 """ |
| 9 | 9 |
| 10 import collections | 10 import collections |
| (...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1466 | 1466 |
| 1467 status = self._adb.SendShellCommand( | 1467 status = self._adb.SendShellCommand( |
| 1468 '\'ls "%s" >/dev/null 2>&1; echo $?\'' % (file_name)) | 1468 '\'ls "%s" >/dev/null 2>&1; echo $?\'' % (file_name)) |
| 1469 return int(status) == 0 | 1469 return int(status) == 0 |
| 1470 except ValueError: | 1470 except ValueError: |
| 1471 if IsDeviceAttached(self._device): | 1471 if IsDeviceAttached(self._device): |
| 1472 raise errors.DeviceUnresponsiveError('Device may be offline.') | 1472 raise errors.DeviceUnresponsiveError('Device may be offline.') |
| 1473 | 1473 |
| 1474 return False | 1474 return False |
| 1475 | 1475 |
| 1476 def IsFileWritableOnDevice(self, file_name): |
| 1477 """Checks whether the given file (or directory) is writable on the device. |
| 1478 |
| 1479 Args: |
| 1480 file_name: Full path of file/directory to check. |
| 1481 |
| 1482 Returns: |
| 1483 True if writable, False otherwise. |
| 1484 """ |
| 1485 assert '"' not in file_name, 'file_name cannot contain double quotes' |
| 1486 try: |
| 1487 status = self._adb.SendShellCommand( |
| 1488 '\'test -w "%s"; echo $?\'' % (file_name)) |
| 1489 if 'test: not found' not in status: |
| 1490 return int(status) == 0 |
| 1491 raise errors.AbortError('"test" binary not found. OS too old.') |
| 1492 |
| 1493 except ValueError: |
| 1494 if IsDeviceAttached(self._device): |
| 1495 raise errors.DeviceUnresponsiveError('Device may be offline.') |
| 1496 |
| 1497 return False |
| 1498 |
| 1476 def TakeScreenshot(self, host_file): | 1499 def TakeScreenshot(self, host_file): |
| 1477 """Saves a screenshot image to |host_file| on the host. | 1500 """Saves a screenshot image to |host_file| on the host. |
| 1478 | 1501 |
| 1479 Args: | 1502 Args: |
| 1480 host_file: Absolute path to the image file to store on the host. | 1503 host_file: Absolute path to the image file to store on the host. |
| 1481 """ | 1504 """ |
| 1482 host_dir = os.path.dirname(host_file) | 1505 host_dir = os.path.dirname(host_file) |
| 1483 if not os.path.exists(host_dir): | 1506 if not os.path.exists(host_dir): |
| 1484 os.makedirs(host_dir) | 1507 os.makedirs(host_dir) |
| 1485 device_file = '%s/screenshot.png' % self.GetExternalStorage() | 1508 device_file = '%s/screenshot.png' % self.GetExternalStorage() |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1552 """ | 1575 """ |
| 1553 def __init__(self, output): | 1576 def __init__(self, output): |
| 1554 self._output = output | 1577 self._output = output |
| 1555 | 1578 |
| 1556 def write(self, data): | 1579 def write(self, data): |
| 1557 data = data.replace('\r\r\n', '\n') | 1580 data = data.replace('\r\r\n', '\n') |
| 1558 self._output.write(data) | 1581 self._output.write(data) |
| 1559 | 1582 |
| 1560 def flush(self): | 1583 def flush(self): |
| 1561 self._output.flush() | 1584 self._output.flush() |
| OLD | NEW |