diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-07-10 14:30:34 -0700 |
---|---|---|
committer | Svet Ganov <svetoslavganov@google.com> | 2015-07-10 15:43:34 -0700 |
commit | 16b031455af5d950ab7c74041c62b05df942d929 (patch) | |
tree | dbaacb86f90357a8d5e1ebe0d8e5a7d2e276ecb1 /src/com/android/packageinstaller | |
parent | 57b5d43f4839c62225cf616296f464b0739e66ba (diff) | |
download | android_packages_apps_PackageInstaller-16b031455af5d950ab7c74041c62b05df942d929.tar.gz android_packages_apps_PackageInstaller-16b031455af5d950ab7c74041c62b05df942d929.tar.bz2 android_packages_apps_PackageInstaller-16b031455af5d950ab7c74041c62b05df942d929.zip |
Teach strorage appops.
Change app ops before toggling a permissions as we don't always restart
the app when permisisons change and this may cause evaluation of the
storage mount state which depends on both app ops and permissions.
bug:22104923
Change-Id: I274b581a3ef44ae33c668aaa9eab5c9379365856
Diffstat (limited to 'src/com/android/packageinstaller')
-rw-r--r-- | src/com/android/packageinstaller/permission/model/AppPermissionGroup.java | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index 8e86678d..0dca9bb7 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -295,6 +295,13 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return false; } + // Enable the permission app op before the permission grant. + if (permission.hasAppOp() && !permission.isAppOpAllowed()) { + permission.setAppOpAllowed(true); + mAppOps.setMode(permission.getAppOp(), uid, mPackageInfo.packageName, + AppOpsManager.MODE_ALLOWED); + } + // Grant the permission if needed. if (!permission.isGranted()) { permission.setGranted(true); @@ -316,13 +323,6 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> 0, mUserHandle); } } - - // Enable the permission app op. - if (permission.hasAppOp() && !permission.isAppOpAllowed()) { - permission.setAppOpAllowed(true); - mAppOps.setMode(permission.getAppOp(), uid, mPackageInfo.packageName, - AppOpsManager.MODE_ALLOWED); - } } else { // Legacy apps cannot have a not granted permission but just in case. // Also if the permissions has no corresponding app op, then it is a @@ -385,6 +385,13 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return false; } + // Disable the permission app op before the permission. + if (permission.hasAppOp() && permission.isAppOpAllowed()) { + permission.setAppOpAllowed(false); + mAppOps.setMode(permission.getAppOp(), uid, mPackageInfo.packageName, + AppOpsManager.MODE_IGNORED); + } + // Revoke the permission if needed. if (permission.isGranted()) { permission.setGranted(false); @@ -416,13 +423,6 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> mUserHandle); } } - - // Disable the permission app op. - if (permission.hasAppOp() && permission.isAppOpAllowed()) { - permission.setAppOpAllowed(false); - mAppOps.setMode(permission.getAppOp(), uid, mPackageInfo.packageName, - AppOpsManager.MODE_IGNORED); - } } else { // Legacy apps cannot have a non-granted permission but just in case. // Also if the permission has no corresponding app op, then it is a |