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

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

Merge "Remove InputMethodSubtypeSwitchingController#mContext" into main

parents 21b52618 a20bd93d
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1282,7 +1282,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
            @SuppressWarnings("GuardedBy") final IntFunction<InputMethodBindingController>
                    bindingControllerFactory = userId -> new InputMethodBindingController(userId,
                    InputMethodManagerService.this);
            mUserDataRepository = new UserDataRepository(mContext, mHandler, mUserManagerInternal,
            mUserDataRepository = new UserDataRepository(mHandler, mUserManagerInternal,
                    bindingControllerForTesting != null ? bindingControllerForTesting
                            : bindingControllerFactory);
            for (int id : mUserManagerInternal.getUserIds()) {
@@ -1291,7 +1291,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.

            final InputMethodSettings settings = InputMethodSettingsRepository.get(mCurrentUserId);
            final var userData = getUserData(mCurrentUserId);
            userData.mSwitchingController.resetCircularListLocked(settings);
            userData.mSwitchingController.resetCircularListLocked(mContext, settings);
            userData.mHardwareKeyboardShortcutController.update(settings);

            mMenuController = new InputMethodMenuController(this);
@@ -2958,7 +2958,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
        }

        final var userData = getUserData(userId);
        userData.mSwitchingController.resetCircularListLocked(settings);
        userData.mSwitchingController.resetCircularListLocked(mContext, settings);
        userData.mHardwareKeyboardShortcutController.update(settings);
    }

@@ -3036,7 +3036,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
        }

        final var userData = getUserData(userId);
        userData.mSwitchingController.resetCircularListLocked(settings);
        userData.mSwitchingController.resetCircularListLocked(mContext, settings);
        userData.mHardwareKeyboardShortcutController.update(settings);
        sendOnNavButtonFlagsChangedLocked();
    }
@@ -5301,7 +5301,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
        updateDefaultVoiceImeIfNeededLocked();

        final var userData = getUserData(userId);
        userData.mSwitchingController.resetCircularListLocked(settings);
        userData.mSwitchingController.resetCircularListLocked(mContext, settings);
        userData.mHardwareKeyboardShortcutController.update(settings);

        sendOnNavButtonFlagsChangedLocked();
+4 −6
Original line number Diff line number Diff line
@@ -476,13 +476,10 @@ final class InputMethodSubtypeSwitchingController {
        }
    }

    @NonNull
    private final Context mContext;
    @NonNull
    private ControllerImpl mController;

    InputMethodSubtypeSwitchingController(@NonNull Context context) {
        mContext = context;
    InputMethodSubtypeSwitchingController() {
        mController = ControllerImpl.createFrom(null, Collections.emptyList());
    }

@@ -491,11 +488,12 @@ final class InputMethodSubtypeSwitchingController {
        mController.onUserActionLocked(imi, subtype);
    }

    public void resetCircularListLocked(@NonNull InputMethodSettings settings) {
    public void resetCircularListLocked(@NonNull Context context,
            @NonNull InputMethodSettings settings) {
        mController = ControllerImpl.createFrom(mController,
                getSortedInputMethodAndSubtypeList(
                        false /* includeAuxiliarySubtypes */, false /* isScreenLocked */,
                        false /* forImeMenu */, mContext, settings));
                        false /* forImeMenu */, context, settings));
    }

    @Nullable
+3 −9
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.server.inputmethod;

import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.pm.UserInfo;
import android.os.Handler;
import android.util.SparseArray;
@@ -36,15 +35,12 @@ final class UserDataRepository {

    private final IntFunction<InputMethodBindingController> mBindingControllerFactory;

    @NonNull
    private final Context mContext;

    @GuardedBy("ImfLock.class")
    @NonNull
    UserData getOrCreate(@UserIdInt int userId) {
        UserData userData = mUserData.get(userId);
        if (userData == null) {
            userData = new UserData(userId, mBindingControllerFactory.apply(userId), mContext);
            userData = new UserData(userId, mBindingControllerFactory.apply(userId));
            mUserData.put(userId, userData);
        }
        return userData;
@@ -58,10 +54,8 @@ final class UserDataRepository {
    }

    UserDataRepository(
            @NonNull Context context,
            @NonNull Handler handler, @NonNull UserManagerInternal userManagerInternal,
            @NonNull IntFunction<InputMethodBindingController> bindingControllerFactory) {
        mContext = context;
        mBindingControllerFactory = bindingControllerFactory;
        userManagerInternal.addUserLifecycleListener(
                new UserManagerInternal.UserLifecycleListener() {
@@ -105,10 +99,10 @@ final class UserDataRepository {
         * Intended to be instantiated only from this file.
         */
        private UserData(@UserIdInt int userId,
                @NonNull InputMethodBindingController bindingController, @NonNull Context context) {
                @NonNull InputMethodBindingController bindingController) {
            mUserId = userId;
            mBindingController = bindingController;
            mSwitchingController = new InputMethodSubtypeSwitchingController(context);
            mSwitchingController = new InputMethodSubtypeSwitchingController();
            mHardwareKeyboardShortcutController = new HardwareKeyboardShortcutController();
        }

+0 −1
Original line number Diff line number Diff line
@@ -181,7 +181,6 @@ public class InputMethodManagerServiceTestBase {
        // InputMethodManagerService.
        doNothing().when(mContext).enforceCallingPermission(anyString(), anyString());
        doNothing().when(mContext).sendBroadcastAsUser(any(), any());
        doReturn(mContext).when(mContext).createContextAsUser(any(), anyInt());
        doReturn(null).when(mContext).registerReceiver(any(), any());
        doReturn(null)
                .when(mContext)
+3 −13
Original line number Diff line number Diff line
@@ -18,22 +18,16 @@ package com.android.server.inputmethod;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.content.pm.UserInfo;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.Looper;
import android.platform.test.ravenwood.RavenwoodRule;

import androidx.test.platform.app.InstrumentationRegistry;

import com.android.server.pm.UserManagerInternal;

import org.junit.After;
@@ -67,14 +61,10 @@ public final class UserDataRepositoryTest {

    private IntFunction<InputMethodBindingController> mBindingControllerFactory;

    private Context mMockedContext;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        SecureSettingsWrapper.startTestMode();
        mMockedContext = spy(InstrumentationRegistry.getInstrumentation().getTargetContext());
        doReturn(mMockedContext).when(mMockedContext).createContextAsUser(any(), anyInt());

        mHandler = new Handler(Looper.getMainLooper());
        mBindingControllerFactory = new IntFunction<InputMethodBindingController>() {
@@ -96,7 +86,7 @@ public final class UserDataRepositoryTest {
        // Create UserDataRepository and capture the user lifecycle listener
        final var captor = ArgumentCaptor.forClass(UserManagerInternal.UserLifecycleListener.class);
        final var bindingControllerFactorySpy = spy(mBindingControllerFactory);
        final var repository = new UserDataRepository(mMockedContext, mHandler,
        final var repository = new UserDataRepository(mHandler,
                mMockUserManagerInternal, bindingControllerFactorySpy);

        verify(mMockUserManagerInternal, times(1)).addUserLifecycleListener(captor.capture());
@@ -123,7 +113,7 @@ public final class UserDataRepositoryTest {
    public void testUserDataRepository_removesUserInfoOnUserRemovedEvent() {
        // Create UserDataRepository and capture the user lifecycle listener
        final var captor = ArgumentCaptor.forClass(UserManagerInternal.UserLifecycleListener.class);
        final var repository = new UserDataRepository(mMockedContext, mHandler,
        final var repository = new UserDataRepository(mHandler,
                mMockUserManagerInternal,
                userId -> new InputMethodBindingController(userId, mMockInputMethodManagerService));

@@ -146,7 +136,7 @@ public final class UserDataRepositoryTest {

    @Test
    public void testGetOrCreate() {
        final var repository = new UserDataRepository(mMockedContext, mHandler,
        final var repository = new UserDataRepository(mHandler,
                mMockUserManagerInternal, mBindingControllerFactory);

        synchronized (ImfLock.class) {