Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c90c5bc authored by Sarp Misoglu's avatar Sarp Misoglu
Browse files

Synchronize calls to no restricted mode lists

This is to avoid concurrent modification errors.

Fixes: 390483439
Test: atest CtsBackupTestCases
Flag: EXEMPT bug fix
Change-Id: I8d75ea1fc15705ee847e911452b6ba0029d7a000
parent f80569fd
Loading
Loading
Loading
Loading
+17 −10
Original line number Original line Diff line number Diff line
@@ -76,7 +76,9 @@ public class BackupAgentConnectionManager {
    @Nullable
    @Nullable
    private BackupAgentConnection mCurrentConnection;
    private BackupAgentConnection mCurrentConnection;


    @GuardedBy("mAgentConnectLock")
    private final ArraySet<String> mRestoreNoRestrictedModePackages = new ArraySet<>();
    private final ArraySet<String> mRestoreNoRestrictedModePackages = new ArraySet<>();
    @GuardedBy("mAgentConnectLock")
    private final ArraySet<String> mBackupNoRestrictedModePackages = new ArraySet<>();
    private final ArraySet<String> mBackupNoRestrictedModePackages = new ArraySet<>();


    private final IActivityManager mActivityManager;
    private final IActivityManager mActivityManager;
@@ -322,6 +324,7 @@ public class BackupAgentConnectionManager {
     */
     */
    public void setNoRestrictedModePackages(Set<String> packageNames,
    public void setNoRestrictedModePackages(Set<String> packageNames,
            @BackupAnnotations.OperationType int opType) {
            @BackupAnnotations.OperationType int opType) {
        synchronized (mAgentConnectLock) {
            if (opType == BackupAnnotations.OperationType.BACKUP) {
            if (opType == BackupAnnotations.OperationType.BACKUP) {
                mBackupNoRestrictedModePackages.clear();
                mBackupNoRestrictedModePackages.clear();
                mBackupNoRestrictedModePackages.addAll(packageNames);
                mBackupNoRestrictedModePackages.addAll(packageNames);
@@ -332,15 +335,18 @@ public class BackupAgentConnectionManager {
                throw new IllegalArgumentException("opType must be BACKUP or RESTORE");
                throw new IllegalArgumentException("opType must be BACKUP or RESTORE");
            }
            }
        }
        }
    }


    /**
    /**
     * Clears the list of packages that should not be put into restricted mode for either backup or
     * Clears the list of packages that should not be put into restricted mode for either backup or
     * restore.
     * restore.
     */
     */
    public void clearNoRestrictedModePackages() {
    public void clearNoRestrictedModePackages() {
        synchronized (mAgentConnectLock) {
            mBackupNoRestrictedModePackages.clear();
            mBackupNoRestrictedModePackages.clear();
            mRestoreNoRestrictedModePackages.clear();
            mRestoreNoRestrictedModePackages.clear();
        }
        }
    }


    /**
    /**
     * If the app has specified {@link PackageManager#PROPERTY_USE_RESTRICTED_BACKUP_MODE}, then
     * If the app has specified {@link PackageManager#PROPERTY_USE_RESTRICTED_BACKUP_MODE}, then
@@ -353,6 +359,7 @@ public class BackupAgentConnectionManager {
     * {@link #mRestoreNoRestrictedModePackages} so this method will immediately return without
     * {@link #mRestoreNoRestrictedModePackages} so this method will immediately return without
     * any IPC to the transport.
     * any IPC to the transport.
     */
     */
    @GuardedBy("mAgentConnectLock")
    private boolean shouldUseRestrictedBackupModeForPackage(
    private boolean shouldUseRestrictedBackupModeForPackage(
            @BackupAnnotations.OperationType int mode, String packageName) {
            @BackupAnnotations.OperationType int mode, String packageName) {
        // Key/Value apps are never put in restricted mode.
        // Key/Value apps are never put in restricted mode.