Adjusted Settings to use updated internal InputMethodManager methods

IMM#isStylusHandwritingAvailableAsUser, IMM#getEnabledInputMethodListAsUser, and IMM#getEnabledInputMethodSubtypeListAsUser use now UserHandle instead of userId. These internal APIs are used in Settings and are updated.

Test: atest android.view.inputmethod.cts.installtests.MultiUserTest
Fix: 283765791
Change-Id: Iedb301fbe26810f2101cbb2669b8be95b87a3e7f
This commit is contained in:
Felix Stern
2023-07-25 08:09:58 +00:00
parent bc8d6ba152
commit e8de480865
4 changed files with 9 additions and 6 deletions

View File

@@ -155,7 +155,7 @@ public class AvailableVirtualKeyboardFragment extends DashboardFragment
final Context prefContext = getPrefContext(); final Context prefContext = getPrefContext();
final List<InputMethodInfo> imis = mInputMethodSettingValues.getInputMethodList(); final List<InputMethodInfo> imis = mInputMethodSettingValues.getInputMethodList();
final List<InputMethodInfo> enabledImis = getContext().getSystemService( final List<InputMethodInfo> enabledImis = getContext().getSystemService(
InputMethodManager.class).getEnabledInputMethodListAsUser(mUserId); InputMethodManager.class).getEnabledInputMethodListAsUser(UserHandle.of(mUserId));
final int numImis = (imis == null ? 0 : imis.size()); final int numImis = (imis == null ? 0 : imis.size());
for (int i = 0; i < numImis; ++i) { for (int i = 0; i < numImis; ++i) {
final InputMethodInfo imi = imis.get(i); final InputMethodInfo imi = imis.get(i);

View File

@@ -145,7 +145,8 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment
PreferenceScreen preferenceScreen = getPreferenceScreen(); PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removeAll(); preferenceScreen.removeAll();
List<InputMethodInfo> infoList = mImm.getEnabledInputMethodListAsUser(mUserId); List<InputMethodInfo> infoList =
mImm.getEnabledInputMethodListAsUser(UserHandle.of(mUserId));
Collections.sort(infoList, new Comparator<InputMethodInfo>() { Collections.sort(infoList, new Comparator<InputMethodInfo>() {
public int compare(InputMethodInfo o1, InputMethodInfo o2) { public int compare(InputMethodInfo o1, InputMethodInfo o2) {
String s1 = o1.loadLabel(mContext.getPackageManager()).toString(); String s1 = o1.loadLabel(mContext.getPackageManager()).toString();
@@ -157,7 +158,8 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment
for (InputMethodInfo info : infoList) { for (InputMethodInfo info : infoList) {
mKeyboardInfoList.clear(); mKeyboardInfoList.clear();
List<InputMethodSubtype> subtypes = List<InputMethodSubtype> subtypes =
mImm.getEnabledInputMethodSubtypeListAsUser(info.getId(), true, mUserId); mImm.getEnabledInputMethodSubtypeListAsUser(info.getId(), true,
UserHandle.of(mUserId));
for (InputMethodSubtype subtype : subtypes) { for (InputMethodSubtype subtype : subtypes) {
if (subtype.isSuitableForPhysicalKeyboardLayoutMapping()) { if (subtype.isSuitableForPhysicalKeyboardLayoutMapping()) {
mapLanguageWithLayout(info, subtype); mapLanguageWithLayout(info, subtype);

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout; import android.hardware.input.KeyboardLayout;
import android.os.UserHandle;
import android.view.InputDevice; import android.view.InputDevice;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
@@ -55,7 +56,7 @@ public class NewKeyboardSettingsUtils {
static List<String> getSuitableImeLabels(Context context, InputMethodManager imm, int userId) { static List<String> getSuitableImeLabels(Context context, InputMethodManager imm, int userId) {
List<String> suitableInputMethodInfoLabels = new ArrayList<>(); List<String> suitableInputMethodInfoLabels = new ArrayList<>();
List<InputMethodInfo> infoList = imm.getEnabledInputMethodListAsUser(userId); List<InputMethodInfo> infoList = imm.getEnabledInputMethodListAsUser(UserHandle.of(userId));
for (InputMethodInfo info : infoList) { for (InputMethodInfo info : infoList) {
List<InputMethodSubtype> subtypes = List<InputMethodSubtype> subtypes =
imm.getEnabledInputMethodSubtypeList(info, true); imm.getEnabledInputMethodSubtypeList(info, true);

View File

@@ -23,11 +23,11 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
@@ -159,7 +159,7 @@ public class AvailableVirtualKeyboardFragmentTest {
mFragment.updateInputMethodPreferenceViews(); mFragment.updateInputMethodPreferenceViews();
verify(mValuesWrapper).getInputMethodList(); verify(mValuesWrapper).getInputMethodList();
verify(mInputMethodManager).getEnabledInputMethodListAsUser(anyInt()); verify(mInputMethodManager).getEnabledInputMethodListAsUser(any(UserHandle.class));
} }
@Test @Test