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

Commit 9de0b77c authored by Ruslan Tkhakokhov's avatar Ruslan Tkhakokhov
Browse files

Get blocked restore keys directly from UserBMS

Bug: 145126096
Test: atest KeyValueRestoreExclusionHostSideTest
      atest PerformUnifiedRestoreHostSideTest
      atest UserBackupPreferencesTest

Currently PerformUnifiedRestoreTask gets the list of blocked restore
keys at construction. However, at that point the list might not be fully
constructed yet. We should get the keys through the getter avaialble in
UserBMS when we need them.

Change-Id: I62ad34138ba7a893e66d6af05d2e242c9c964a44
parent 2b1f4315
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -1080,12 +1080,8 @@ public class UserBackupManagerService {
        }
    }

    public Map<String, Set<String>> getExcludedRestoreKeys(String... packages) {
        return mBackupPreferences.getExcludedRestoreKeysForPackages(packages);
    }

    public Map<String, Set<String>> getAllExcludedRestoreKeys() {
        return mBackupPreferences.getAllExcludedRestoreKeys();
    public Set<String> getExcludedRestoreKeys(String packageName) {
        return mBackupPreferences.getExcludedRestoreKeysForPackage(packageName);
    }

    /** Used for generating random salts or passwords. */
@@ -3356,8 +3352,7 @@ public class UserBackupManagerService {
                                restoreSet,
                                packageName,
                                token,
                                listener,
                                getExcludedRestoreKeys(packageName));
                                listener);
                mBackupHandler.sendMessage(msg);
            } catch (Exception e) {
                // Calling into the transport broke; back off and proceed with the installation.
+2 −11
Original line number Diff line number Diff line
@@ -48,16 +48,7 @@ public class UserBackupPreferences {
        mEditor.commit();
    }

    Map<String, Set<String>> getExcludedRestoreKeysForPackages(String... packages) {
        Map<String, Set<String>> excludedKeys = new HashMap<>();
        for (String packageName : packages) {
            excludedKeys.put(packageName,
                    mPreferences.getStringSet(packageName, Collections.emptySet()));
        }
        return excludedKeys;
    }

    Map<String, Set<String>> getAllExcludedRestoreKeys() {
        return (Map<String, Set<String>>) mPreferences.getAll();
    Set<String> getExcludedRestoreKeysForPackage(String packageName) {
        return mPreferences.getStringSet(packageName, Collections.emptySet());
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -299,8 +299,7 @@ public class BackupHandler extends Handler {
                                params.pmToken,
                                params.isSystemRestore,
                                params.filterSet,
                                params.listener,
                                params.excludedKeys);
                                params.listener);

                synchronized (backupManagerService.getPendingRestores()) {
                    if (backupManagerService.isRestoreInProgress()) {
+9 −20
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ public class RestoreParams {
    public final boolean isSystemRestore;
    @Nullable public final String[] filterSet;
    public final OnTaskFinishedListener listener;
    public final Map<String, Set<String>> excludedKeys;

    /**
     * No kill after restore.
@@ -48,8 +47,7 @@ public class RestoreParams {
            IBackupManagerMonitor monitor,
            long token,
            PackageInfo packageInfo,
            OnTaskFinishedListener listener,
            Map<String, Set<String>> excludedKeys) {
            OnTaskFinishedListener listener) {
        return new RestoreParams(
                transportClient,
                observer,
@@ -59,8 +57,7 @@ public class RestoreParams {
                /* pmToken */ 0,
                /* isSystemRestore */ false,
                /* filterSet */ null,
                listener,
                excludedKeys);
                listener);
    }

    /**
@@ -73,8 +70,7 @@ public class RestoreParams {
            long token,
            String packageName,
            int pmToken,
            OnTaskFinishedListener listener,
            Map<String, Set<String>> excludedKeys) {
            OnTaskFinishedListener listener) {
        String[] filterSet = {packageName};
        return new RestoreParams(
                transportClient,
@@ -85,8 +81,7 @@ public class RestoreParams {
                pmToken,
                /* isSystemRestore */ false,
                filterSet,
                listener,
                excludedKeys);
                listener);
    }

    /**
@@ -97,8 +92,7 @@ public class RestoreParams {
            IRestoreObserver observer,
            IBackupManagerMonitor monitor,
            long token,
            OnTaskFinishedListener listener,
            Map<String, Set<String>> excludedKeys) {
            OnTaskFinishedListener listener) {
        return new RestoreParams(
                transportClient,
                observer,
@@ -108,8 +102,7 @@ public class RestoreParams {
                /* pmToken */ 0,
                /* isSystemRestore */ true,
                /* filterSet */ null,
                listener,
                excludedKeys);
                listener);
    }

    /**
@@ -122,8 +115,7 @@ public class RestoreParams {
            long token,
            String[] filterSet,
            boolean isSystemRestore,
            OnTaskFinishedListener listener,
            Map<String, Set<String>> excludedKeys) {
            OnTaskFinishedListener listener) {
        return new RestoreParams(
                transportClient,
                observer,
@@ -133,8 +125,7 @@ public class RestoreParams {
                /* pmToken */ 0,
                isSystemRestore,
                filterSet,
                listener,
                excludedKeys);
                listener);
    }

    private RestoreParams(
@@ -146,8 +137,7 @@ public class RestoreParams {
            int pmToken,
            boolean isSystemRestore,
            @Nullable String[] filterSet,
            OnTaskFinishedListener listener,
            Map<String, Set<String>> excludedKeys) {
            OnTaskFinishedListener listener) {
        this.transportClient = transportClient;
        this.observer = observer;
        this.monitor = monitor;
@@ -157,6 +147,5 @@ public class RestoreParams {
        this.isSystemRestore = isSystemRestore;
        this.filterSet = filterSet;
        this.listener = listener;
        this.excludedKeys = excludedKeys;
    }
}
+3 −6
Original line number Diff line number Diff line
@@ -178,8 +178,7 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
                                                observer,
                                                monitor,
                                                token,
                                                listener,
                                                mBackupManagerService.getAllExcludedRestoreKeys()),
                                                listener),
                                "RestoreSession.restoreAll()");
                    } finally {
                        Binder.restoreCallingIdentity(oldId);
@@ -272,8 +271,7 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
                                                token,
                                                packages,
                                                /* isSystemRestore */ packages.length > 1,
                                                listener,
                                                mBackupManagerService.getExcludedRestoreKeys(packages)),
                                                listener),
                                "RestoreSession.restorePackages(" + packages.length + " packages)");
                    } finally {
                        Binder.restoreCallingIdentity(oldId);
@@ -365,8 +363,7 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
                                    monitor,
                                    token,
                                    app,
                                    listener,
                                    mBackupManagerService.getExcludedRestoreKeys(app.packageName)),
                                    listener),
                    "RestoreSession.restorePackage(" + packageName + ")");
        } finally {
            Binder.restoreCallingIdentity(oldId);
Loading