summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2019-05-21 15:26:50 -0700
committerPhilip P. Moltmann <moltmann@google.com>2019-05-21 15:26:50 -0700
commita246eb5bae7fa59038b021cf7be2bfdd3e4edab2 (patch)
treef9403564a58d53f9fa6ffe77a58713420af31d8e /src
parent6d5e1f3db713e0575c6b88433700e2b2adcb41d5 (diff)
downloadandroid_packages_apps_PackageInstaller-a246eb5bae7fa59038b021cf7be2bfdd3e4edab2.tar.gz
android_packages_apps_PackageInstaller-a246eb5bae7fa59038b021cf7be2bfdd3e4edab2.tar.bz2
android_packages_apps_PackageInstaller-a246eb5bae7fa59038b021cf7be2bfdd3e4edab2.zip
Don't expand loc permission on fresh Q install
Only expand loc permissions on P->Q upgrade. Test: - Upgraded from P->Q: Saw permissions expanded - Fresh install of Q and then "atest GtsPermissionTestCases:com.google.android.permission.gts.DefaultPermissionGrantPolicyTest#testDefaultGrantsWithRemoteExceptions" Fixes: 131427665 Change-Id: I5c33577215566a7b7766a53f58c5ac5a6b7b4ee8
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java60
1 files changed, 38 insertions, 22 deletions
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
index a7cae3ba..a1e62a99 100644
--- a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
+++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
@@ -78,7 +78,18 @@ class RuntimePermissionsUpgradeController {
| PackageManager.GET_PERMISSIONS);
final int appCount = apps.size();
- if (currentVersion <= 0) {
+ final boolean sdkUpgradedFromP;
+ if (currentVersion <= -1) {
+ Log.i(LOG_TAG, "Upgrading from Android P");
+
+ sdkUpgradedFromP = true;
+
+ currentVersion = 0;
+ } else {
+ sdkUpgradedFromP = false;
+ }
+
+ if (currentVersion == 0) {
Log.i(LOG_TAG, "Grandfathering SMS and CallLog permissions");
final List<String> smsPermissions = Utils.getPlatformPermissionNamesOfGroup(
@@ -105,34 +116,39 @@ class RuntimePermissionsUpgradeController {
}
if (currentVersion == 1) {
- Log.i(LOG_TAG, "Expanding location permissions");
+ if (sdkUpgradedFromP) {
+ Log.i(LOG_TAG, "Expanding location permissions");
- for (int i = 0; i < appCount; i++) {
- final PackageInfo app = apps.get(i);
- if (app.requestedPermissions == null) {
- continue;
- }
-
- for (String perm : app.requestedPermissions) {
- String groupName = Utils.getGroupOfPlatformPermission(perm);
-
- if (!TextUtils.equals(groupName, Manifest.permission_group.LOCATION)) {
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
continue;
}
- final AppPermissionGroup group = AppPermissionGroup.create(context, app, perm,
- false);
- final AppPermissionGroup bgGroup = group.getBackgroundPermissions();
+ for (String perm : app.requestedPermissions) {
+ String groupName = Utils.getGroupOfPlatformPermission(perm);
- if (group.areRuntimePermissionsGranted()
- && bgGroup != null
- && !bgGroup.isUserSet() && !bgGroup.isSystemFixed()
- && !bgGroup.isPolicyFixed()) {
- bgGroup.grantRuntimePermissions(group.isUserFixed());
- }
+ if (!TextUtils.equals(groupName, Manifest.permission_group.LOCATION)) {
+ continue;
+ }
- break;
+ final AppPermissionGroup group = AppPermissionGroup.create(context, app,
+ perm, false);
+ final AppPermissionGroup bgGroup = group.getBackgroundPermissions();
+
+ if (group.areRuntimePermissionsGranted()
+ && bgGroup != null
+ && !bgGroup.isUserSet() && !bgGroup.isSystemFixed()
+ && !bgGroup.isPolicyFixed()) {
+ bgGroup.grantRuntimePermissions(group.isUserFixed());
+ }
+
+ break;
+ }
}
+ } else {
+ Log.i(LOG_TAG, "Not expanding location permissions as this is not an upgrade "
+ + "from Android P");
}
currentVersion = 2;