diff options
author | Philip P. Moltmann <moltmann@google.com> | 2019-06-06 14:37:08 -0700 |
---|---|---|
committer | Philip P. Moltmann <moltmann@google.com> | 2019-06-06 14:37:08 -0700 |
commit | be31f46d1341c613071fe1f7591b40c1e1aa1aaa (patch) | |
tree | 089e1453e2fcfafeb0b9af8d6270234c4b647180 | |
parent | 0f6bfd95b15947b883a6fe127af1963aedec12c2 (diff) | |
download | android_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.java | 59 |
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. |