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

Commit 6db8c336 authored by Danning Chen's avatar Danning Chen Committed by Automerger Merge Worker
Browse files

Merge "Run PeopleService#onUserStopping on a background thread" into rvc-dev...

Merge "Run PeopleService#onUserStopping on a background thread" into rvc-dev am: 712d70eb am: 864b49a5 am: e29170d7

Change-Id: I281b6ef4dfd72e9f6d6ed8b123fa3c7c6e0ab9aa
parents 7047b356 e29170d7
Loading
Loading
Loading
Loading
+45 −34
Original line number Diff line number Diff line
@@ -152,42 +152,12 @@ public class DataManager {
    /** This method is called when a user is stopping. */
    public void onUserStopping(int userId) {
        synchronized (mLock) {
            ContentResolver contentResolver = mContext.getContentResolver();
            if (mUserDataArray.indexOfKey(userId) >= 0) {
                mUserDataArray.get(userId).setUserStopped();
            }
            if (mUsageStatsQueryFutures.indexOfKey(userId) >= 0) {
                mUsageStatsQueryFutures.get(userId).cancel(true);
            }
            if (mBroadcastReceivers.indexOfKey(userId) >= 0) {
                mContext.unregisterReceiver(mBroadcastReceivers.get(userId));
            }
            if (mContactsContentObservers.indexOfKey(userId) >= 0) {
                contentResolver.unregisterContentObserver(mContactsContentObservers.get(userId));
            }
            if (mNotificationListeners.indexOfKey(userId) >= 0) {
                try {
                    mNotificationListeners.get(userId).unregisterAsSystemService();
                } catch (RemoteException e) {
                    // Should never occur for local calls.
                }
            }
            if (mPackageMonitors.indexOfKey(userId) >= 0) {
                mPackageMonitors.get(userId).unregister();
            }
            if (userId == UserHandle.USER_SYSTEM) {
                if (mCallLogContentObserver != null) {
                    contentResolver.unregisterContentObserver(mCallLogContentObserver);
                    mCallLogContentObserver = null;
                }
                if (mMmsSmsContentObserver != null) {
                    contentResolver.unregisterContentObserver(mMmsSmsContentObserver);
                    mCallLogContentObserver = null;
            UserData userData = mUserDataArray.get(userId);
            if (userData != null) {
                userData.setUserStopped();
            }
        }

            DataMaintenanceService.cancelJob(mContext, userId);
        }
        mScheduledExecutor.execute(() -> cleanupUser(userId));
    }

    /**
@@ -371,6 +341,47 @@ public class DataManager {
        }
    }

    private void cleanupUser(@UserIdInt int userId) {
        synchronized (mLock) {
            UserData userData = mUserDataArray.get(userId);
            if (userData == null || userData.isUnlocked()) {
                return;
            }
            ContentResolver contentResolver = mContext.getContentResolver();
            if (mUsageStatsQueryFutures.indexOfKey(userId) >= 0) {
                mUsageStatsQueryFutures.get(userId).cancel(true);
            }
            if (mBroadcastReceivers.indexOfKey(userId) >= 0) {
                mContext.unregisterReceiver(mBroadcastReceivers.get(userId));
            }
            if (mContactsContentObservers.indexOfKey(userId) >= 0) {
                contentResolver.unregisterContentObserver(mContactsContentObservers.get(userId));
            }
            if (mNotificationListeners.indexOfKey(userId) >= 0) {
                try {
                    mNotificationListeners.get(userId).unregisterAsSystemService();
                } catch (RemoteException e) {
                    // Should never occur for local calls.
                }
            }
            if (mPackageMonitors.indexOfKey(userId) >= 0) {
                mPackageMonitors.get(userId).unregister();
            }
            if (userId == UserHandle.USER_SYSTEM) {
                if (mCallLogContentObserver != null) {
                    contentResolver.unregisterContentObserver(mCallLogContentObserver);
                    mCallLogContentObserver = null;
                }
                if (mMmsSmsContentObserver != null) {
                    contentResolver.unregisterContentObserver(mMmsSmsContentObserver);
                    mCallLogContentObserver = null;
                }
            }

            DataMaintenanceService.cancelJob(mContext, userId);
        }
    }

    private int mimeTypeToShareEventType(String mimeType) {
        if (mimeType.startsWith("text/")) {
            return Event.TYPE_SHARE_TEXT;