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 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 posixpath.join(device_path, relative_dir, f) for f in filenames) | 1132 posixpath.join(device_path, relative_dir, f) for f in filenames) |
1133 | 1133 |
1134 def device_sums_helper(): | 1134 def device_sums_helper(): |
1135 if self._enable_device_files_cache: | 1135 if self._enable_device_files_cache: |
1136 cache_entry = self._cache['device_path_checksums'].get(device_path) | 1136 cache_entry = self._cache['device_path_checksums'].get(device_path) |
1137 if cache_entry and cache_entry[0] == ignore_other_files: | 1137 if cache_entry and cache_entry[0] == ignore_other_files: |
1138 return dict(cache_entry[1]) | 1138 return dict(cache_entry[1]) |
1139 | 1139 |
1140 sums = md5sum.CalculateDeviceMd5Sums(specific_device_paths, self) | 1140 sums = md5sum.CalculateDeviceMd5Sums(specific_device_paths, self) |
1141 | 1141 |
1142 if self._enable_device_files_cache: | 1142 cache_entry = [ignore_other_files, sums] |
1143 cache_entry = [ignore_other_files, sums] | 1143 self._cache['device_path_checksums'][device_path] = cache_entry |
1144 self._cache['device_path_checksums'][device_path] = cache_entry | |
1145 return dict(sums) | 1144 return dict(sums) |
1146 | 1145 |
1147 host_checksums, device_checksums = reraiser_thread.RunAsync(( | 1146 host_checksums, device_checksums = reraiser_thread.RunAsync(( |
1148 lambda: md5sum.CalculateHostMd5Sums([host_path]), | 1147 lambda: md5sum.CalculateHostMd5Sums([host_path]), |
1149 device_sums_helper)) | 1148 device_sums_helper)) |
1150 except EnvironmentError as e: | 1149 except EnvironmentError as e: |
1151 logging.warning('Error calculating md5: %s', e) | 1150 logging.warning('Error calculating md5: %s', e) |
1152 return ([(host_path, device_path)], [], [], lambda: 0) | 1151 return ([(host_path, device_path)], [], [], lambda: 0) |
1153 | 1152 |
1154 to_push = [] | 1153 to_push = [] |
(...skipping 11 matching lines...) Expand all Loading... |
1166 device_abs_path = posixpath.join( | 1165 device_abs_path = posixpath.join( |
1167 device_path, os.path.relpath(host_abs_path, host_path)) | 1166 device_path, os.path.relpath(host_abs_path, host_path)) |
1168 device_checksum = device_checksums.pop(device_abs_path, None) | 1167 device_checksum = device_checksums.pop(device_abs_path, None) |
1169 if device_checksum == host_checksum: | 1168 if device_checksum == host_checksum: |
1170 up_to_date.append(host_abs_path) | 1169 up_to_date.append(host_abs_path) |
1171 else: | 1170 else: |
1172 to_push.append((host_abs_path, device_abs_path)) | 1171 to_push.append((host_abs_path, device_abs_path)) |
1173 to_delete = device_checksums.keys() | 1172 to_delete = device_checksums.keys() |
1174 | 1173 |
1175 def cache_commit_func(): | 1174 def cache_commit_func(): |
1176 if not self._enable_device_files_cache: | |
1177 return | |
1178 new_sums = {posixpath.join(device_path, path[len(host_path) + 1:]): val | 1175 new_sums = {posixpath.join(device_path, path[len(host_path) + 1:]): val |
1179 for path, val in host_checksums.iteritems()} | 1176 for path, val in host_checksums.iteritems()} |
1180 cache_entry = [ignore_other_files, new_sums] | 1177 cache_entry = [ignore_other_files, new_sums] |
1181 self._cache['device_path_checksums'][device_path] = cache_entry | 1178 self._cache['device_path_checksums'][device_path] = cache_entry |
1182 | 1179 |
1183 return (to_push, up_to_date, to_delete, cache_commit_func) | 1180 return (to_push, up_to_date, to_delete, cache_commit_func) |
1184 | 1181 |
1185 def _ComputeDeviceChecksumsForApks(self, package_name): | 1182 def _ComputeDeviceChecksumsForApks(self, package_name): |
1186 ret = self._cache['package_apk_checksums'].get(package_name) | 1183 ret = self._cache['package_apk_checksums'].get(package_name) |
1187 if ret is None: | 1184 if ret is None: |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2056 if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions | 2053 if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions |
2057 and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): | 2054 and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): |
2058 permissions.append('android.permission.READ_EXTERNAL_STORAGE') | 2055 permissions.append('android.permission.READ_EXTERNAL_STORAGE') |
2059 cmd = ';'.join('pm grant %s %s' %(package, p) for p in permissions) | 2056 cmd = ';'.join('pm grant %s %s' %(package, p) for p in permissions) |
2060 if cmd: | 2057 if cmd: |
2061 output = self.RunShellCommand(cmd) | 2058 output = self.RunShellCommand(cmd) |
2062 if output: | 2059 if output: |
2063 logging.warning('Possible problem when granting permissions. Blacklist ' | 2060 logging.warning('Possible problem when granting permissions. Blacklist ' |
2064 'may need to be updated.') | 2061 'may need to be updated.') |
2065 logging.warning(output) | 2062 logging.warning(output) |
OLD | NEW |