diff options
-rw-r--r-- | build/android/devil/android/device_utils.py | 12 | ||||
-rwxr-xr-x | build/android/devil/android/device_utils_test.py | 21 |
2 files changed, 25 insertions, 8 deletions
diff --git a/build/android/devil/android/device_utils.py b/build/android/devil/android/device_utils.py index 5be914c..951bae4 100644 --- a/build/android/devil/android/device_utils.py +++ b/build/android/devil/android/device_utils.py @@ -565,7 +565,6 @@ class DeviceUtils(object): permissions = apk_helper.ApkHelper(apk_path).GetPermissions() self.GrantPermissions(package_name, permissions) - @decorators.WithTimeoutAndRetriesDefaults( INSTALL_DEFAULT_TIMEOUT, INSTALL_DEFAULT_RETRIES) @@ -1963,11 +1962,12 @@ class DeviceUtils(object): # TODO(rnephew): After permission blacklist is complete, switch to using # &&s instead of ;s. cmd = '' - logging.info('Setting permissions for %s', package) - for p in permissions: - if p not in _PERMISSIONS_BLACKLIST: - cmd += 'pm grant %s %s;' % (package, p) - logging.info(' %s', p) + logging.info('Setting permissions for %s.', package) + permissions = [p for p in permissions if p not in _PERMISSIONS_BLACKLIST] + if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions + and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): + permissions.append('android.permission.READ_EXTERNAL_STORAGE') + cmd = ';'.join('pm grant %s %s' %(package, p) for p in permissions) if cmd: output = self.RunShellCommand(cmd) if output: diff --git a/build/android/devil/android/device_utils_test.py b/build/android/devil/android/device_utils_test.py index 471ef21..6276ff2 100755 --- a/build/android/devil/android/device_utils_test.py +++ b/build/android/devil/android/device_utils_test.py @@ -2064,7 +2064,7 @@ class DeviceUtilsGrantPermissionsTest(DeviceUtilsTest): self.device.GrantPermissions('package', ['p1']) def testGrantPermissions_one(self): - permissions_cmd = 'pm grant package p1;' + permissions_cmd = 'pm grant package p1' with self.patch_call(self.call.device.build_version_sdk, return_value=23): with self.assertCalls( @@ -2072,13 +2072,30 @@ class DeviceUtilsGrantPermissionsTest(DeviceUtilsTest): self.device.GrantPermissions('package', ['p1']) def testGrantPermissions_multiple(self): - permissions_cmd = 'pm grant package p1;pm grant package p2;' + permissions_cmd = 'pm grant package p1;pm grant package p2' with self.patch_call(self.call.device.build_version_sdk, return_value=23): with self.assertCalls( (self.call.device.RunShellCommand(permissions_cmd), [])): self.device.GrantPermissions('package', ['p1', 'p2']) + def testGrantPermissions_WriteExtrnalStorage(self): + permissions_cmd = ( + 'pm grant package android.permission.WRITE_EXTERNAL_STORAGE;' + 'pm grant package android.permission.READ_EXTERNAL_STORAGE') + with self.patch_call(self.call.device.build_version_sdk, + return_value=23): + with self.assertCalls( + (self.call.device.RunShellCommand(permissions_cmd), [])): + self.device.GrantPermissions( + 'package', ['android.permission.WRITE_EXTERNAL_STORAGE']) + + def testGrantPermissions_BlackList(self): + with self.patch_call( + self.call.device.build_version_sdk, return_value=23): + self.device.GrantPermissions( + 'package', ['android.permission.ACCESS_MOCK_LOCATION']) + if __name__ == '__main__': logging.getLogger().setLevel(logging.DEBUG) |