From 16b031455af5d950ab7c74041c62b05df942d929 Mon Sep 17 00:00:00 2001 From: Svet Ganov Date: Fri, 10 Jul 2015 14:30:34 -0700 Subject: 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 --- .../permission/model/AppPermissionGroup.java | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src') 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 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 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 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 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 -- cgit v1.2.3