Merge "Fix: Allow system IME to be disabled when another IME is available" into qt-dev
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java
index 057123b..1712a6b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java
+++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java
@@ -419,8 +419,8 @@
return configurationLocale;
}
- public static boolean isValidSystemNonAuxAsciiCapableIme(InputMethodInfo imi) {
- if (imi.isAuxiliaryIme() || !imi.isSystem()) {
+ public static boolean isValidNonAuxAsciiCapableIme(InputMethodInfo imi) {
+ if (imi.isAuxiliaryIme()) {
return false;
}
final int subtypeCount = imi.getSubtypeCount();
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java
index 120acd3..55b6cda 100644
--- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java
+++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java
@@ -125,7 +125,7 @@
}
mInputMethodSettingValues = InputMethodSettingValuesWrapper.getInstance(context);
mHasPriorityInSorting = imi.isSystem()
- && InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(imi);
+ && InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(imi);
setOnPreferenceClickListener(this);
setOnPreferenceChangeListener(this);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSettingValuesWrapper.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSettingValuesWrapper.java
index b6786d4..13c1b82 100644
--- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSettingValuesWrapper.java
+++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSettingValuesWrapper.java
@@ -77,25 +77,25 @@
return true;
}
- final int enabledValidSystemNonAuxAsciiCapableImeCount =
- getEnabledValidSystemNonAuxAsciiCapableImeCount();
+ final int enabledValidNonAuxAsciiCapableImeCount =
+ getEnabledValidNonAuxAsciiCapableImeCount();
- return enabledValidSystemNonAuxAsciiCapableImeCount <= 1
- && !(enabledValidSystemNonAuxAsciiCapableImeCount == 1 && !isEnabled)
+ return enabledValidNonAuxAsciiCapableImeCount <= 1
+ && !(enabledValidNonAuxAsciiCapableImeCount == 1 && !isEnabled)
&& imi.isSystem()
- && InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(imi);
+ && InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(imi);
}
- private int getEnabledValidSystemNonAuxAsciiCapableImeCount() {
+ private int getEnabledValidNonAuxAsciiCapableImeCount() {
int count = 0;
final List<InputMethodInfo> enabledImis = getEnabledInputMethodList();
for (final InputMethodInfo imi : enabledImis) {
- if (InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(imi)) {
+ if (InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(imi)) {
++count;
}
}
if (count == 0) {
- Log.w(TAG, "No \"enabledValidSystemNonAuxAsciiCapableIme\"s found.");
+ Log.w(TAG, "No \"enabledValidNonAuxAsciiCapableIme\"s found.");
}
return count;
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilTest.java
index 84606b4..5171dda 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilTest.java
@@ -192,53 +192,47 @@
}
@Test
- public void isValidSystemNonAuxAsciiCapableIme() {
- // System IME w/ no subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, false)))
+ public void isValidNonAuxAsciiCapableIme() {
+ // IME w/ no subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(false)))
.isFalse();
- // System IME w/ non-Aux and non-ASCII-capable "keyboard" subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, false, createDummySubtype("keyboard", false, false))))
+ // IME w/ non-Aux and non-ASCII-capable "keyboard" subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(false, createDummySubtype("keyboard", false, false))))
.isFalse();
- // System IME w/ non-Aux and ASCII-capable "keyboard" subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, false, createDummySubtype("keyboard", false, true))))
+ // IME w/ non-Aux and ASCII-capable "keyboard" subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(false, createDummySubtype("keyboard", false, true))))
.isTrue();
- // System IME w/ Aux and ASCII-capable "keyboard" subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, true, createDummySubtype("keyboard", true, true))))
+ // IME w/ Aux and ASCII-capable "keyboard" subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(true, createDummySubtype("keyboard", true, true))))
.isFalse();
- // System IME w/ non-Aux and ASCII-capable "voice" subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, false, createDummySubtype("voice", false, true))))
+ // IME w/ non-Aux and ASCII-capable "voice" subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(false, createDummySubtype("voice", false, true))))
.isFalse();
- // System IME w/ non-Aux and non-ASCII-capable subtype + Non-Aux and ASCII-capable subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(true, false,
+ // IME w/ non-Aux and non-ASCII-capable subtype + Non-Aux and ASCII-capable subtype
+ assertThat(InputMethodAndSubtypeUtil.isValidNonAuxAsciiCapableIme(
+ createDummyIme(false,
createDummySubtype("keyboard", false, true),
createDummySubtype("keyboard", false, false))))
.isTrue();
-
- // Non-system IME w/ non-Aux and ASCII-capable "keyboard" subtype
- assertThat(InputMethodAndSubtypeUtil.isValidSystemNonAuxAsciiCapableIme(
- createDummyIme(false, false, createDummySubtype("keyboard", false, true))))
- .isFalse();
}
- private static InputMethodInfo createDummyIme(boolean isSystem, boolean isAuxIme,
+ private static InputMethodInfo createDummyIme(boolean isAuxIme,
InputMethodSubtype... subtypes) {
final ResolveInfo ri = new ResolveInfo();
final ServiceInfo si = new ServiceInfo();
final ApplicationInfo ai = new ApplicationInfo();
ai.packageName = "com.example.android.dummyime";
ai.enabled = true;
- ai.flags |= (isSystem ? ApplicationInfo.FLAG_SYSTEM : 0);
si.applicationInfo = ai;
si.enabled = true;
si.packageName = "com.example.android.dummyime";