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=unused-argument | 9 # pylint: disable=unused-argument |
10 | 10 |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
921 for line in self.RunShellCommand(cmd, check_return=True): | 921 for line in self.RunShellCommand(cmd, check_return=True): |
922 if line.startswith('Error:'): | 922 if line.startswith('Error:'): |
923 raise device_errors.CommandFailedError(line, str(self)) | 923 raise device_errors.CommandFailedError(line, str(self)) |
924 | 924 |
925 @decorators.WithTimeoutAndRetriesFromInstance() | 925 @decorators.WithTimeoutAndRetriesFromInstance() |
926 def StartInstrumentation(self, component, finish=True, raw=False, | 926 def StartInstrumentation(self, component, finish=True, raw=False, |
927 extras=None, timeout=None, retries=None): | 927 extras=None, timeout=None, retries=None): |
928 if extras is None: | 928 if extras is None: |
929 extras = {} | 929 extras = {} |
930 | 930 |
931 cmd = ['am', 'instrument'] | 931 # Store the package name in a shell variable to help the command stay under |
932 # the _MAX_ADB_COMMAND_LENGTH limit. | |
933 package = component.split('/')[0] | |
934 def shrink(value): | |
jbudorick
2015/10/08 14:27:28
I don't agree with handling this this way. It lead
agrieve
2015/10/08 15:42:10
RunShellCommand can already be passed env variable
jbudorick
2015/10/08 15:51:09
Yeah, I didn't think env would work here.
agrieve
2015/10/08 20:03:33
Extracted it into a helper. Wasn't actually able t
| |
935 parts = (x and cmd_helper.SingleQuote(x) for x in value.split(package)) | |
936 return '$p'.join(parts) | |
937 | |
938 cmd = 'p=%s;am instrument' % package | |
932 if finish: | 939 if finish: |
933 cmd.append('-w') | 940 cmd += ' -w' |
934 if raw: | 941 if raw: |
935 cmd.append('-r') | 942 cmd += ' -r' |
943 | |
936 for k, v in extras.iteritems(): | 944 for k, v in extras.iteritems(): |
937 cmd.extend(['-e', str(k), str(v)]) | 945 cmd += ' -e %s %s' % (shrink(str(k)), shrink(str(v))) |
938 cmd.append(component) | 946 |
947 cmd += ' %s' % shrink(component) | |
939 return self.RunShellCommand(cmd, check_return=True, large_output=True) | 948 return self.RunShellCommand(cmd, check_return=True, large_output=True) |
940 | 949 |
941 @decorators.WithTimeoutAndRetriesFromInstance() | 950 @decorators.WithTimeoutAndRetriesFromInstance() |
942 def BroadcastIntent(self, intent_obj, timeout=None, retries=None): | 951 def BroadcastIntent(self, intent_obj, timeout=None, retries=None): |
943 """Send a broadcast intent. | 952 """Send a broadcast intent. |
944 | 953 |
945 Args: | 954 Args: |
946 intent: An Intent to broadcast. | 955 intent: An Intent to broadcast. |
947 timeout: timeout in seconds | 956 timeout: timeout in seconds |
948 retries: number of retries | 957 retries: number of retries |
(...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2056 if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions | 2065 if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions |
2057 and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): | 2066 and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): |
2058 permissions.append('android.permission.READ_EXTERNAL_STORAGE') | 2067 permissions.append('android.permission.READ_EXTERNAL_STORAGE') |
2059 cmd = ';'.join('pm grant %s %s' %(package, p) for p in permissions) | 2068 cmd = ';'.join('pm grant %s %s' %(package, p) for p in permissions) |
2060 if cmd: | 2069 if cmd: |
2061 output = self.RunShellCommand(cmd) | 2070 output = self.RunShellCommand(cmd) |
2062 if output: | 2071 if output: |
2063 logging.warning('Possible problem when granting permissions. Blacklist ' | 2072 logging.warning('Possible problem when granting permissions. Blacklist ' |
2064 'may need to be updated.') | 2073 'may need to be updated.') |
2065 logging.warning(output) | 2074 logging.warning(output) |
OLD | NEW |