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 import atexit | 5 import atexit |
6 import hashlib | 6 import hashlib |
7 import json | 7 import json |
8 import logging | 8 import logging |
9 import os | 9 import os |
10 import os.path | 10 import os.path |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 self.adb_running_as_root = False | 192 self.adb_running_as_root = False |
193 | 193 |
194 return self.adb_running_as_root | 194 return self.adb_running_as_root |
195 | 195 |
196 def _is_shell_package_installed(self): | 196 def _is_shell_package_installed(self): |
197 # Adb should print one line if the package is installed and return empty | 197 # Adb should print one line if the package is installed and return empty |
198 # string otherwise. | 198 # string otherwise. |
199 return len(subprocess.check_output(self._adb_command([ | 199 return len(subprocess.check_output(self._adb_command([ |
200 'shell', 'pm', 'list', 'packages', _MOJO_SHELL_PACKAGE_NAME]))) > 0 | 200 'shell', 'pm', 'list', 'packages', _MOJO_SHELL_PACKAGE_NAME]))) > 0 |
201 | 201 |
| 202 @staticmethod |
| 203 def get_tmp_dir_path(): |
| 204 """Returns a path to a cache directory owned by the shell where temporary |
| 205 files can be stored. |
| 206 """ |
| 207 return '/data/data/%s/cache/tmp/' % _MOJO_SHELL_PACKAGE_NAME |
| 208 |
| 209 def pull_file(self, device_path, destination_path, remove_original=False): |
| 210 """Copies or moves the specified file on the device to the host.""" |
| 211 subprocess.check_call(self._adb_command([ |
| 212 'pull', device_path, destination_path])) |
| 213 if remove_original: |
| 214 subprocess.check_call(self._adb_command([ |
| 215 'shell', 'rm', device_path])) |
| 216 |
202 def check_device(self, require_root=False): | 217 def check_device(self, require_root=False): |
203 """Verifies if the device configuration allows adb to run. | 218 """Verifies if the device configuration allows adb to run. |
204 | 219 |
205 If a target device was indicated in the constructor, it checks that the | 220 If a target device was indicated in the constructor, it checks that the |
206 device is available. Otherwise, it checks that there is exactly one | 221 device is available. Otherwise, it checks that there is exactly one |
207 available device. | 222 available device. |
208 | 223 |
209 Returns: | 224 Returns: |
210 A tuple of (result, msg). |result| is True iff if the device is correctly | 225 A tuple of (result, msg). |result| is True iff if the device is correctly |
211 configured and False otherwise. |msg| is the reason for failure if | 226 configured and False otherwise. |msg| is the reason for failure if |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 Results.output = rf.read() | 436 Results.output = rf.read() |
422 | 437 |
423 run_thread = threading.Thread(target=do_run) | 438 run_thread = threading.Thread(target=do_run) |
424 run_thread.start() | 439 run_thread.start() |
425 run_thread.join(timeout) | 440 run_thread.join(timeout) |
426 | 441 |
427 if run_thread.is_alive(): | 442 if run_thread.is_alive(): |
428 self.stop_shell() | 443 self.stop_shell() |
429 return None, Results.output, True | 444 return None, Results.output, True |
430 return None, Results.output, False | 445 return None, Results.output, False |
OLD | NEW |