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

Commit 0e4056a7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Remove UserLifecycleListener deps from SecureSettingsWrapper"" into main

parents f6b77762 44a859a6
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -997,8 +997,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
                    Process.THREAD_PRIORITY_FOREGROUND, true /* allowIo */);
            ioThread.start();

            SecureSettingsWrapper.setContentResolver(context.getContentResolver());

            return new InputMethodManagerService(context,
                    shouldEnableConcurrentMultiUserMode(context), thread.getLooper(),
                    Handler.createAsync(ioThread.getLooper()),
@@ -1057,7 +1055,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
        public void onUserRemoved(UserInfo user) {
            // Called directly from UserManagerService. Do not block the calling thread.
            final int userId = user.id;
            SecureSettingsWrapper.onUserRemoved(userId);
            AdditionalSubtypeMapRepository.remove(userId);
            InputMethodSettingsRepository.remove(userId);
            mService.mUserDataRepository.remove(userId);
@@ -1163,6 +1160,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
            mConcurrentMultiUserModeEnabled = concurrentMultiUserModeEnabled;
            mContext = context;
            mRes = context.getResources();
            SecureSettingsWrapper.onStart(mContext);

            mHandler = Handler.createAsync(uiLooper, this);
            mIoHandler = ioHandler;
+24 −16
Original line number Diff line number Diff line
@@ -20,7 +20,10 @@ import android.annotation.AnyThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManagerInternal;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.UserInfo;
import android.provider.Settings;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -318,13 +321,30 @@ final class SecureSettingsWrapper {
    }

    /**
     * Called when the system is starting.
     * Called when {@link InputMethodManagerService} is starting.
     *
     * @param contentResolver the {@link ContentResolver} to be used
     * @param context the {@link Context} to be used.
     */
    @AnyThread
    static void setContentResolver(@NonNull ContentResolver contentResolver) {
        sContentResolver = contentResolver;
    static void onStart(@NonNull Context context) {
        sContentResolver = context.getContentResolver();

        final int userId = LocalServices.getService(ActivityManagerInternal.class)
                .getCurrentUserId();
        final UserManagerInternal userManagerInternal =
                LocalServices.getService(UserManagerInternal.class);
        putOrGet(userId, createImpl(userManagerInternal, userId));

        userManagerInternal.addUserLifecycleListener(
                new UserManagerInternal.UserLifecycleListener() {
                    @Override
                    public void onUserRemoved(UserInfo user) {
                        synchronized (sMutationLock) {
                            sUserMap = sUserMap.cloneWithRemoveOrSelf(user.id);
                        }
                    }
                }
        );
    }

    /**
@@ -356,18 +376,6 @@ final class SecureSettingsWrapper {
        putOrGet(userId, readerWriter);
    }

    /**
     * Called when a user is being removed.
     *
     * @param userId the ID of the user whose storage is being removed.
     */
    @AnyThread
    static void onUserRemoved(@UserIdInt int userId) {
        synchronized (sMutationLock) {
            sUserMap = sUserMap.cloneWithRemoveOrSelf(userId);
        }
    }

    /**
     * Put the given string {@code value} to {@code key}.
     *