Control revoke-on-upgrade behavior for loc perm
By default: Revoke on upgrade, but can be disabled by setting the
location_permissions_upgrade_to_Q_mode to anything but 0.
Bug: 127285709
Test: Built
Change-Id: I8eb10a563d1f80779ed32823d3b28093ac8f94dd
diff --git a/PermissionController/src/com/android/packageinstaller/permission/service/BackupHelper.java b/PermissionController/src/com/android/packageinstaller/permission/service/BackupHelper.java
index 352c02f..118c2db 100644
--- a/PermissionController/src/com/android/packageinstaller/permission/service/BackupHelper.java
+++ b/PermissionController/src/com/android/packageinstaller/permission/service/BackupHelper.java
@@ -20,6 +20,7 @@
import static android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
+import static android.provider.Settings.Secure.LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE;
import static android.util.Xml.newSerializer;
import static com.android.packageinstaller.Constants.DELAYED_RESTORE_PERMISSIONS_FILE;
@@ -39,6 +40,7 @@
import android.os.UserHandle;
import android.permission.PermissionManager;
import android.permission.PermissionManager.SplitPermissionInfo;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.util.Xml;
@@ -416,7 +418,9 @@
// Clear location permission on upgrade to Q or later
String group = getGroupOfPlatformPermission(permName);
if (backupPlatformVersion < Build.VERSION_CODES.Q && TextUtils.equals(group,
- Manifest.permission_group.LOCATION)) {
+ Manifest.permission_group.LOCATION)
+ && Settings.Secure.getInt(context.getContentResolver(),
+ LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE, 0) == 0) {
return Collections.emptyList();
}