diff options
author | Philip P. Moltmann <moltmann@google.com> | 2019-05-21 15:26:50 -0700 |
---|---|---|
committer | Philip P. Moltmann <moltmann@google.com> | 2019-05-21 15:26:50 -0700 |
commit | a246eb5bae7fa59038b021cf7be2bfdd3e4edab2 (patch) | |
tree | f9403564a58d53f9fa6ffe77a58713420af31d8e /src | |
parent | 6d5e1f3db713e0575c6b88433700e2b2adcb41d5 (diff) | |
download | android_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.java | 60 |
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; |