Loading services/backup/java/com/android/server/backup/BackupManagerService.java +29 −38 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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 { Loading Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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 Loading services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +30 −38 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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 Loading services/backup/java/com/android/server/backup/Trampoline.java +23 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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 Loading @@ -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) { Loading Loading
services/backup/java/com/android/server/backup/BackupManagerService.java +29 −38 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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 { Loading Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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 Loading
services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +30 −38 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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 Loading
services/backup/java/com/android/server/backup/Trampoline.java +23 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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 Loading @@ -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) { Loading