summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2019-06-06 14:37:08 -0700
committerPhilip P. Moltmann <moltmann@google.com>2019-06-06 14:37:08 -0700
commitbe31f46d1341c613071fe1f7591b40c1e1aa1aaa (patch)
tree089e1453e2fcfafeb0b9af8d6270234c4b647180
parent0f6bfd95b15947b883a6fe127af1963aedec12c2 (diff)
downloadandroid_packages_apps_PackageInstaller-be31f46d1341c613071fe1f7591b40c1e1aa1aaa.tar.gz
android_packages_apps_PackageInstaller-be31f46d1341c613071fe1f7591b40c1e1aa1aaa.tar.bz2
android_packages_apps_PackageInstaller-be31f46d1341c613071fe1f7591b40c1e1aa1aaa.zip
Force another loc perm expansion
by moving it later. This change by itself does nothing, but we can temporarily remove the sdkUpgradedFromP to force this change onto everybody including people upgrading from Q to Q. Bug: 118661683 Test: Upgraded from P->Q and saw location permission expanded. Change-Id: Iaa32507547da19cfb00d6376035f904bd92913aa
-rw-r--r--src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java59
1 files changed, 32 insertions, 27 deletions
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
index f64a72b3..cedb108e 100644
--- a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
+++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
@@ -38,7 +38,7 @@ class RuntimePermissionsUpgradeController {
private static final String LOG_TAG = RuntimePermissionsUpgradeController.class.getSimpleName();
// The latest version of the runtime permissions database
- private static final int LATEST_VERSION = 6;
+ private static final int LATEST_VERSION = 7;
private RuntimePermissionsUpgradeController() {
/* do nothing - hide constructor */
@@ -148,6 +148,36 @@ class RuntimePermissionsUpgradeController {
}
if (currentVersion == 4) {
+ // moved to step 5->6 to clean up broken permission state during beta 4->5 upgrade
+ currentVersion = 5;
+ }
+
+ if (currentVersion == 5) {
+ Log.i(LOG_TAG, "Grandfathering Storage permissions");
+
+ final List<String> storagePermissions = Utils.getPlatformPermissionNamesOfGroup(
+ Manifest.permission_group.STORAGE);
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo app = apps.get(i);
+ if (app.requestedPermissions == null) {
+ continue;
+ }
+
+ // We don't want to allow modification of storage post install, so put it
+ // on the internal system whitelist to prevent the installer changing it.
+ for (String requestedPermission : app.requestedPermissions) {
+ if (storagePermissions.contains(requestedPermission)) {
+ context.getPackageManager().addWhitelistedRestrictedPermission(
+ app.packageName, requestedPermission,
+ PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
+ }
+ }
+ }
+ currentVersion = 6;
+ }
+
+ if (currentVersion == 6) {
if (sdkUpgradedFromP) {
Log.i(LOG_TAG, "Expanding location permissions");
@@ -183,32 +213,7 @@ class RuntimePermissionsUpgradeController {
+ "from Android P");
}
- currentVersion = 5;
- }
-
- if (currentVersion == 5) {
- Log.i(LOG_TAG, "Grandfathering Storage permissions");
-
- final List<String> storagePermissions = Utils.getPlatformPermissionNamesOfGroup(
- Manifest.permission_group.STORAGE);
-
- for (int i = 0; i < appCount; i++) {
- final PackageInfo app = apps.get(i);
- if (app.requestedPermissions == null) {
- continue;
- }
-
- // We don't want to allow modification of storage post install, so put it
- // on the internal system whitelist to prevent the installer changing it.
- for (String requestedPermission : app.requestedPermissions) {
- if (storagePermissions.contains(requestedPermission)) {
- context.getPackageManager().addWhitelistedRestrictedPermission(
- app.packageName, requestedPermission,
- PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE);
- }
- }
- }
- currentVersion = 6;
+ currentVersion = 7;
}
// XXX: Add new upgrade steps above this point.