Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -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()) { Loading @@ -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); Loading Loading @@ -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); } Loading Loading @@ -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(); } Loading Loading @@ -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(); Loading services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java +4 −6 Original line number Diff line number Diff line Loading @@ -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()); } Loading @@ -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 Loading services/core/java/com/android/server/inputmethod/UserDataRepository.java +3 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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(); } Loading services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java +0 −1 Original line number Diff line number Diff line Loading @@ -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) Loading services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java +3 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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>() { Loading @@ -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()); Loading @@ -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)); Loading @@ -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) { Loading Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -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()) { Loading @@ -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); Loading Loading @@ -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); } Loading Loading @@ -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(); } Loading Loading @@ -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(); Loading
services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java +4 −6 Original line number Diff line number Diff line Loading @@ -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()); } Loading @@ -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 Loading
services/core/java/com/android/server/inputmethod/UserDataRepository.java +3 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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(); } Loading
services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java +0 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java +3 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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>() { Loading @@ -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()); Loading @@ -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)); Loading @@ -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) { Loading