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

Commit aaa64d0a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix backup server"

parents 1174802b 88086098
Loading
Loading
Loading
Loading
+29 −38
Original line number Diff line number Diff line
@@ -319,7 +319,6 @@ public class BackupManagerService implements BackupManagerServiceInterface {
    boolean mProvisioned;
    boolean mAutoRestore;
    PowerManager.WakeLock mWakelock;
    HandlerThread mHandlerThread;
    BackupHandler mBackupHandler;
    PendingIntent mRunBackupIntent, mRunInitIntent;
    BroadcastReceiver mRunBackupReceiver, mRunInitReceiver;
@@ -409,11 +408,6 @@ public class BackupManagerService implements BackupManagerServiceInterface {
    // Called through the trampoline from onUnlockUser(), then we buck the work
    // off to the background thread to keep the unlock time down.
    public void unlockSystemUser() {
        mBackupHandler.post(() -> {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init");
            sInstance.initialize(UserHandle.USER_SYSTEM);
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        // Migrate legacy setting
        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup migrate");
        if (!backupSettingMigrated(UserHandle.USER_SYSTEM)) {
@@ -445,7 +439,6 @@ public class BackupManagerService implements BackupManagerServiceInterface {
            // can't happen; it's a local object
        }
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        });
    }
    class ProvisionedObserver extends ContentObserver {
@@ -1220,7 +1213,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
    // ----- Main service implementation -----
    public BackupManagerService(Context context, Trampoline parent) {
    public BackupManagerService(Context context, Trampoline parent, HandlerThread backupThread) {
        mContext = context;
        mPackageManager = context.getPackageManager();
        mPackageManagerBinder = AppGlobals.getPackageManager();
@@ -1233,9 +1226,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
        mBackupManagerBinder = Trampoline.asInterface(parent.asBinder());
        // spin up the backup/restore handler thread
        mHandlerThread = new HandlerThread("backup", Process.THREAD_PRIORITY_BACKGROUND);
        mHandlerThread.start();
        mBackupHandler = new BackupHandler(mHandlerThread.getLooper());
        mBackupHandler = new BackupHandler(backupThread.getLooper());
        // Set up our bookkeeping
        final ContentResolver resolver = context.getContentResolver();
@@ -1360,7 +1351,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
        if (DEBUG) Slog.v(TAG, "Starting with transport " + currentTransport);
        mTransportManager = new TransportManager(context, transportWhitelist, currentTransport,
                mTransportBoundListener, mHandlerThread.getLooper());
                mTransportBoundListener, backupThread.getLooper());
        mTransportManager.registerAllTransports();
        // Now that we know about valid backup participants, parse any
+30 −38
Original line number Diff line number Diff line
@@ -237,7 +237,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
    private boolean mProvisioned;
    private boolean mAutoRestore;
    private PowerManager.WakeLock mWakelock;
    private HandlerThread mHandlerThread;
    private BackupHandler mBackupHandler;
    private PendingIntent mRunBackupIntent;
    private PendingIntent mRunInitIntent;
@@ -556,11 +555,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
    // Called through the trampoline from onUnlockUser(), then we buck the work
    // off to the background thread to keep the unlock time down.
    public void unlockSystemUser() {
        mBackupHandler.post(() -> {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init");
            sInstance.initialize(UserHandle.USER_SYSTEM);
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);

        // Migrate legacy setting
        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup migrate");
        if (!backupSettingMigrated(UserHandle.USER_SYSTEM)) {
@@ -592,7 +586,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
            // can't happen; it's a local object
        }
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        });
    }

    // Bookkeeping of in-flight operations for timeout etc. purposes.  The operation
@@ -729,7 +722,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter

    // ----- Main service implementation -----

    public RefactoredBackupManagerService(Context context, Trampoline parent) {
    public RefactoredBackupManagerService(Context context, Trampoline parent,
            HandlerThread backupThread) {
        mContext = context;
        mPackageManager = context.getPackageManager();
        mPackageManagerBinder = AppGlobals.getPackageManager();
@@ -742,9 +736,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
        mBackupManagerBinder = Trampoline.asInterface(parent.asBinder());

        // spin up the backup/restore handler thread
        mHandlerThread = new HandlerThread("backup", Process.THREAD_PRIORITY_BACKGROUND);
        mHandlerThread.start();
        mBackupHandler = new BackupHandler(this, mHandlerThread.getLooper());
        mBackupHandler = new BackupHandler(this, backupThread.getLooper());

        // Set up our bookkeeping
        final ContentResolver resolver = context.getContentResolver();
@@ -824,7 +816,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
        if (DEBUG) Slog.v(TAG, "Starting with transport " + currentTransport);

        mTransportManager = new TransportManager(context, transportWhitelist, currentTransport,
                mTransportBoundListener, mHandlerThread.getLooper());
                mTransportBoundListener, backupThread.getLooper());
        mTransportManager.registerAllTransports();

        // Now that we know about valid backup participants, parse any
+23 −6
Original line number Diff line number Diff line
@@ -28,11 +28,15 @@ import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Slog;
@@ -75,6 +79,8 @@ public class Trampoline extends IBackupManager.Stub {
    final boolean mGlobalDisable;
    volatile BackupManagerServiceInterface mService;

    private HandlerThread mHandlerThread;

    public Trampoline(Context context) {
        mContext = context;
        mGlobalDisable = isBackupDisabled();
@@ -111,11 +117,11 @@ public class Trampoline extends IBackupManager.Stub {
    }

    protected BackupManagerServiceInterface createRefactoredBackupManagerService() {
        return new RefactoredBackupManagerService(mContext, this);
        return new RefactoredBackupManagerService(mContext, this, mHandlerThread);
    }

    protected BackupManagerServiceInterface createBackupManagerService() {
        return new BackupManagerService(mContext, this);
        return new BackupManagerService(mContext, this, mHandlerThread);
    }

    // internal control API
@@ -140,10 +146,21 @@ public class Trampoline extends IBackupManager.Stub {
    }

    void unlockSystemUser() {
        mHandlerThread = new HandlerThread("backup", Process.THREAD_PRIORITY_BACKGROUND);
        mHandlerThread.start();

        Handler h = new Handler(mHandlerThread.getLooper());
        h.post(() -> {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init");
            initialize(UserHandle.USER_SYSTEM);
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);

            BackupManagerServiceInterface svc = mService;
            Slog.i(TAG, "Unlocking system user; mService=" + mService);
            if (svc != null) {
                svc.unlockSystemUser();
            }
        });
    }

    public void setBackupServiceActive(final int userHandle, boolean makeActive) {