diff options
author | 2024-02-27 11:15:07 +0000 | |
---|---|---|
committer | 2024-02-29 15:00:46 +0000 | |
commit | e8deecf6a9cad1f0e17add7b7f0e7be0d2e65d28 (patch) | |
tree | 71448dd951f9676b230585c1ac6e395a241efd47 /services/backup | |
parent | b24bcc884a283ba9e2f3c609db98dc04633be035 (diff) |
Move where the V to U allowlist/denylist are created
We read the value of list from secure settings. So we move the lists after transport.startRestore, given that the corresponding secure settings are set during transport.startRestore
Test: manual (check that the VtoU secure settings are set by the time the lists are created), atest PerformUnifiedRestoreTaskTest
Bug: 324233962
Change-Id: Icc442f344106c1cecd764e2004523e82649bcf59
Diffstat (limited to 'services/backup')
-rw-r--r-- | services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java index e666442af9c9..5c1007c17ba0 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java @@ -167,6 +167,9 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // List of packages that have RestoreAnyVersion set to true but do not support V-> U downgrade. private List<String> mVToUDenylist; + // Whether we have already initialised the V to U allowlist/denylist + private Boolean mAreVToUListsSet = false; + // Key/value: bookkeeping about staged data and files for agent access private File mBackupDataName; private File mStageName; @@ -235,18 +238,6 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { backupManagerService.getAgentTimeoutParameters(), "Timeout parameters cannot be null"); mBackupEligibilityRules = backupEligibilityRules; - mVToUAllowlist = - createVToUList( - Settings.Secure.getStringForUser( - backupManagerService.getContext().getContentResolver(), - Settings.Secure.V_TO_U_RESTORE_ALLOWLIST, - mUserId)); - mVToUDenylist = - createVToUList( - Settings.Secure.getStringForUser( - backupManagerService.getContext().getContentResolver(), - Settings.Secure.V_TO_U_RESTORE_DENYLIST, - mUserId)); if (targetPackage != null) { // Single package restore @@ -661,7 +652,23 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // installed. If the app has not declared that it is prepared to // handle this case, we do not attempt the restore. if (mIsSystemRestore - && isVToUDowngrade(mPmAgent.getSourceSdk(), android.os.Build.VERSION.SDK_INT)) { + && isVToUDowngrade(mPmAgent.getSourceSdk(), + android.os.Build.VERSION.SDK_INT)) { + if (!mAreVToUListsSet) { + mVToUAllowlist = + createVToUList( + Settings.Secure.getStringForUser( + backupManagerService.getContext().getContentResolver(), + Settings.Secure.V_TO_U_RESTORE_ALLOWLIST, + mUserId)); + mVToUDenylist = + createVToUList( + Settings.Secure.getStringForUser( + backupManagerService.getContext().getContentResolver(), + Settings.Secure.V_TO_U_RESTORE_DENYLIST, + mUserId)); + mAreVToUListsSet = true; + } if (isPackageEligibleForVToURestore(mCurrentPackage)) { Slog.i(TAG, "Package " + pkgName + " is eligible for V to U downgrade scenario"); |