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

Commit c1741631 authored by Michal Karpinski's avatar Michal Karpinski
Browse files

[RefactoredBMS] Refresh in-memory SharedPreferences instances after restore

This CL replicates ag/2284557 in RefactoredBMS (only the BMS part, the
rest is already live code).

Test: runtest -p com.android.server.backup frameworks-services
Bug: 37973765
Change-Id: I4f6cb85b879e0ee7b2b20ac998977f8c6d8fdfe0
parent 9d395bb3
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -679,6 +679,29 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
        return token;
    }

    /*
     * Construct a backup agent instance for the metadata pseudopackage.  This is a
     * process-local non-lifecycle agent instance, so we manually set up the context
     * topology for it.
     */
    public PackageManagerBackupAgent makeMetadataAgent() {
        PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent(mPackageManager);
        pmAgent.attach(mContext);
        pmAgent.onCreate();
        return pmAgent;
    }

    /*
     * Same as above but with the explicit package-set configuration.
     */
    public PackageManagerBackupAgent makeMetadataAgent(List<PackageInfo> packages) {
        PackageManagerBackupAgent pmAgent =
                new PackageManagerBackupAgent(mPackageManager, packages);
        pmAgent.attach(mContext);
        pmAgent.onCreate();
        return pmAgent;
    }

    // ----- Debug-only backup operation trace -----
    public void addBackupTrace(String s) {
        if (DEBUG_BACKUP_TRACE) {
+1 −2
Original line number Diff line number Diff line
@@ -321,8 +321,7 @@ public class PerformBackupTask implements BackupRestoreTask {
                // because it's cheap and this way we guarantee that we don't get out of
                // step even if we're selecting among various transports at run time.
                if (mStatus == BackupTransport.TRANSPORT_OK) {
                    PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent(
                            backupManagerService.getPackageManager());
                    PackageManagerBackupAgent pmAgent = backupManagerService.makeMetadataAgent();
                    mStatus = invokeAgentForBackup(
                            PACKAGE_MANAGER_SENTINEL,
                            IBackupAgent.Stub.asInterface(pmAgent.onBind()), mTransport);
+1 −2
Original line number Diff line number Diff line
@@ -150,8 +150,7 @@ public class PerformAdbRestoreTask implements Runnable {
        mObserver = observer;
        mLatchObject = latch;
        mAgent = null;
        mPackageManagerBackupAgent = new PackageManagerBackupAgent(
                backupManagerService.getPackageManager());
        mPackageManagerBackupAgent = backupManagerService.makeMetadataAgent();
        mAgentPackage = null;
        mTargetApp = null;
        mObbConnection = new FullBackupObbConnection(backupManagerService);
+1 −2
Original line number Diff line number Diff line
@@ -386,8 +386,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
            // Pull the Package Manager metadata from the restore set first
            mCurrentPackage = new PackageInfo();
            mCurrentPackage.packageName = PACKAGE_MANAGER_SENTINEL;
            mPmAgent = new PackageManagerBackupAgent(backupManagerService.getPackageManager(),
                    null);
            mPmAgent = backupManagerService.makeMetadataAgent(null);
            mAgent = IBackupAgent.Stub.asInterface(mPmAgent.onBind());
            if (MORE_DEBUG) {
                Slog.v(TAG, "initiating restore for PMBA");