summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/android/devil/android/device_utils.py12
-rwxr-xr-xbuild/android/devil/android/device_utils_test.py21
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)