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

Commit 768b6bba authored by Chandan Nath's avatar Chandan Nath Committed by android-build-merger
Browse files

Merge "Unsubscribe listeners when stopping UserBackupManagerService" into qt-r1-dev

am: 66e67676

Change-Id: I4080af098228622f95f1255eb064c234a991cd07
parents 67f7c316 66e67676
Loading
Loading
Loading
Loading
+19 −10
Original line number Original line Diff line number Diff line
@@ -367,6 +367,9 @@ public class UserBackupManagerService {
    private long mCurrentToken = 0;
    private long mCurrentToken = 0;
    @Nullable private File mAncestralSerialNumberFile;
    @Nullable private File mAncestralSerialNumberFile;


    private final ContentObserver mSetupObserver;
    private final BroadcastReceiver mRunBackupReceiver;
    private final BroadcastReceiver mRunInitReceiver;


    /**
    /**
     * Creates an instance of {@link UserBackupManagerService} and initializes state for it. This
     * Creates an instance of {@link UserBackupManagerService} and initializes state for it. This
@@ -493,11 +496,11 @@ public class UserBackupManagerService {
        mAutoRestore = Settings.Secure.getIntForUser(resolver,
        mAutoRestore = Settings.Secure.getIntForUser(resolver,
                Settings.Secure.BACKUP_AUTO_RESTORE, 1, userId) != 0;
                Settings.Secure.BACKUP_AUTO_RESTORE, 1, userId) != 0;


        ContentObserver setupObserver = new SetupObserver(this, mBackupHandler);
        mSetupObserver = new SetupObserver(this, mBackupHandler);
        resolver.registerContentObserver(
        resolver.registerContentObserver(
                Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE),
                Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE),
                /* notifyForDescendents */ false,
                /* notifyForDescendents */ false,
                setupObserver,
                mSetupObserver,
                mUserId);
                mUserId);


        mBaseStateDir = checkNotNull(baseStateDir, "baseStateDir cannot be null");
        mBaseStateDir = checkNotNull(baseStateDir, "baseStateDir cannot be null");
@@ -516,21 +519,21 @@ public class UserBackupManagerService {
        mBackupPasswordManager = new BackupPasswordManager(mContext, mBaseStateDir, mRng);
        mBackupPasswordManager = new BackupPasswordManager(mContext, mBaseStateDir, mRng);


        // Receivers for scheduled backups and transport initialization operations.
        // Receivers for scheduled backups and transport initialization operations.
        BroadcastReceiver runBackupReceiver = new RunBackupReceiver(this);
        mRunBackupReceiver = new RunBackupReceiver(this);
        IntentFilter filter = new IntentFilter();
        IntentFilter filter = new IntentFilter();
        filter.addAction(RUN_BACKUP_ACTION);
        filter.addAction(RUN_BACKUP_ACTION);
        context.registerReceiverAsUser(
        context.registerReceiverAsUser(
                runBackupReceiver,
                mRunBackupReceiver,
                UserHandle.of(userId),
                UserHandle.of(userId),
                filter,
                filter,
                android.Manifest.permission.BACKUP,
                android.Manifest.permission.BACKUP,
                /* scheduler */ null);
                /* scheduler */ null);


        BroadcastReceiver runInitReceiver = new RunInitializeReceiver(this);
        mRunInitReceiver = new RunInitializeReceiver(this);
        filter = new IntentFilter();
        filter = new IntentFilter();
        filter.addAction(RUN_INITIALIZE_ACTION);
        filter.addAction(RUN_INITIALIZE_ACTION);
        context.registerReceiverAsUser(
        context.registerReceiverAsUser(
                runInitReceiver,
                mRunInitReceiver,
                UserHandle.of(userId),
                UserHandle.of(userId),
                filter,
                filter,
                android.Manifest.permission.BACKUP,
                android.Manifest.permission.BACKUP,
@@ -599,6 +602,12 @@ public class UserBackupManagerService {


    /** Cleans up state when the user of this service is stopped. */
    /** Cleans up state when the user of this service is stopped. */
    void tearDownService() {
    void tearDownService() {
        mAgentTimeoutParameters.stop();
        mConstants.stop();
        mContext.getContentResolver().unregisterContentObserver(mSetupObserver);
        mContext.unregisterReceiver(mRunBackupReceiver);
        mContext.unregisterReceiver(mRunInitReceiver);
        mContext.unregisterReceiver(mPackageTrackingReceiver);
        mUserBackupThread.quit();
        mUserBackupThread.quit();
    }
    }


@@ -747,7 +756,7 @@ public class UserBackupManagerService {


    @VisibleForTesting
    @VisibleForTesting
    BroadcastReceiver getPackageTrackingReceiver() {
    BroadcastReceiver getPackageTrackingReceiver() {
        return mBroadcastReceiver;
        return mPackageTrackingReceiver;
    }
    }


    @Nullable
    @Nullable
@@ -874,7 +883,7 @@ public class UserBackupManagerService {
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addDataScheme("package");
        filter.addDataScheme("package");
        mContext.registerReceiverAsUser(
        mContext.registerReceiverAsUser(
                mBroadcastReceiver,
                mPackageTrackingReceiver,
                UserHandle.of(mUserId),
                UserHandle.of(mUserId),
                filter,
                filter,
                /* broadcastPermission */ null,
                /* broadcastPermission */ null,
@@ -885,7 +894,7 @@ public class UserBackupManagerService {
        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
        sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
        mContext.registerReceiverAsUser(
        mContext.registerReceiverAsUser(
                mBroadcastReceiver,
                mPackageTrackingReceiver,
                UserHandle.of(mUserId),
                UserHandle.of(mUserId),
                sdFilter,
                sdFilter,
                /* broadcastPermission */ null,
                /* broadcastPermission */ null,
@@ -1158,7 +1167,7 @@ public class UserBackupManagerService {
     * A {@link BroadcastReceiver} tracking changes to packages and sd cards in order to update our
     * A {@link BroadcastReceiver} tracking changes to packages and sd cards in order to update our
     * internal bookkeeping.
     * internal bookkeeping.
     */
     */
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    private BroadcastReceiver mPackageTrackingReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
            if (MORE_DEBUG) {
            if (MORE_DEBUG) {
                Slog.d(TAG, "Received broadcast " + intent);
                Slog.d(TAG, "Received broadcast " + intent);