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 |
| (...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 615 timeout: timeout in seconds | 615 timeout: timeout in seconds |
| 616 retries: number of retries | 616 retries: number of retries |
| 617 | 617 |
| 618 Raises: | 618 Raises: |
| 619 CommandTimeoutError on timeout. | 619 CommandTimeoutError on timeout. |
| 620 DeviceUnreachableError on missing device. | 620 DeviceUnreachableError on missing device. |
| 621 """ | 621 """ |
| 622 self.RunShellCommand(['am', 'force-stop', package], check_return=True) | 622 self.RunShellCommand(['am', 'force-stop', package], check_return=True) |
| 623 | 623 |
| 624 @decorators.WithTimeoutAndRetriesFromInstance() | 624 @decorators.WithTimeoutAndRetriesFromInstance() |
| 625 def ClearApplicationState(self, package, timeout=None, retries=None): | 625 def ClearApplicationState(self, package, timeout=None, retries=None, |
| 626 package_check_needed=True): | |
|
jbudorick
2015/01/16 14:21:41
timeout and retries should be the last 2 parameter
Jaekyun Seok (inactive)
2015/01/18 23:01:18
Done.
| |
| 626 """Clear all state for the given package. | 627 """Clear all state for the given package. |
| 627 | 628 |
| 628 Args: | 629 Args: |
| 629 package: A string containing the name of the package to stop. | 630 package: A string containing the name of the package to stop. |
| 630 timeout: timeout in seconds | 631 timeout: timeout in seconds |
| 631 retries: number of retries | 632 retries: number of retries |
| 633 package_check_needed: Whether the package existence should be checked or | |
| 634 not | |
| 632 | 635 |
| 633 Raises: | 636 Raises: |
| 634 CommandTimeoutError on timeout. | 637 CommandTimeoutError on timeout. |
| 635 DeviceUnreachableError on missing device. | 638 DeviceUnreachableError on missing device. |
| 636 """ | 639 """ |
| 637 # Check that the package exists before clearing it. Necessary because | 640 # Check that the package exists before clearing it. Necessary because |
| 638 # calling pm clear on a package that doesn't exist may never return. | 641 # calling pm clear on a package that doesn't exist may never return. |
| 639 if self.GetApplicationPath(package): | 642 if (not package_check_needed) or self.GetApplicationPath(package): |
|
jbudorick
2015/01/16 14:21:41
I'm extremely wary about adding more somewhat supe
Jaekyun Seok (inactive)
2015/01/18 23:01:18
I agree with your concern, but each call to self.G
jbudorick
2015/01/20 14:11:23
That's reasonable; I'm just not sure that the clie
Jaekyun Seok (inactive)
2015/01/20 22:00:23
Caching device status seems dangerous because we c
jbudorick
2015/01/20 22:04:04
What do you mean by "we can't track all the status
Jaekyun Seok (inactive)
2015/01/20 22:11:17
For example, a package could be uninstalled by dev
jbudorick
2015/01/20 22:22:43
I think that case is less risky than the current i
Jaekyun Seok (inactive)
2015/01/20 23:20:35
I see. I will add cache to store application paths
jbudorick
2015/01/20 23:34:24
This could probably be integrated into the existin
perezju
2015/01/21 10:28:52
Yeah, I also dislike the idea of adding this optio
jbudorick
2015/01/21 14:57:00
My concern in this case is that AdbWrapper handles
jbudorick
2015/01/21 15:03:14
If this last part _does_ work on versions starting
| |
| 640 self.RunShellCommand(['pm', 'clear', package], check_return=True) | 643 self.RunShellCommand(['pm', 'clear', package], check_return=True) |
| 641 | 644 |
| 642 @decorators.WithTimeoutAndRetriesFromInstance() | 645 @decorators.WithTimeoutAndRetriesFromInstance() |
| 643 def SendKeyEvent(self, keycode, timeout=None, retries=None): | 646 def SendKeyEvent(self, keycode, timeout=None, retries=None): |
| 644 """Sends a keycode to the device. | 647 """Sends a keycode to the device. |
| 645 | 648 |
| 646 See: http://developer.android.com/reference/android/view/KeyEvent.html | 649 See: http://developer.android.com/reference/android/view/KeyEvent.html |
| 647 | 650 |
| 648 Args: | 651 Args: |
| 649 keycode: A integer keycode to send to the device. | 652 keycode: A integer keycode to send to the device. |
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1285 Returns: | 1288 Returns: |
| 1286 A Parallelizer operating over |devices|. | 1289 A Parallelizer operating over |devices|. |
| 1287 """ | 1290 """ |
| 1288 if not devices: | 1291 if not devices: |
| 1289 devices = adb_wrapper.AdbWrapper.GetDevices() | 1292 devices = adb_wrapper.AdbWrapper.GetDevices() |
| 1290 devices = [d if isinstance(d, cls) else cls(d) for d in devices] | 1293 devices = [d if isinstance(d, cls) else cls(d) for d in devices] |
| 1291 if async: | 1294 if async: |
| 1292 return parallelizer.Parallelizer(devices) | 1295 return parallelizer.Parallelizer(devices) |
| 1293 else: | 1296 else: |
| 1294 return parallelizer.SyncParallelizer(devices) | 1297 return parallelizer.SyncParallelizer(devices) |
| OLD | NEW |