diff options
| author | 2019-04-17 15:31:51 -0700 | |
|---|---|---|
| committer | 2019-04-17 16:20:12 -0700 | |
| commit | 3daa9f56b5c9a0005963f8cc8e8d68f507dfca39 (patch) | |
| tree | de940a53306e41a2081c3fa91dbd49f789a76424 | |
| parent | dc868e04f941601d2d0e82908431b192748c28c0 (diff) | |
Fix: Allow system IME to be disabled when another IME is available
In P, pre-installed system IME could be disabled if an ASCII non-aux IME
was available. With I1352bf42dcb9219a370a16a381ea39c43c57637a,
system-IMEs could no longer be disabled. This was unintentional as the
method name isValidSystemNonAuxAsciiCapableIme was incorrect and it
wasn't checking isSystem() earlier.
This change renames it to isValidNonAuxAsciiCapableIme and removes the
system check in order to revert to original P behavior.
Change-Id: If40de88ca0536a4446135047b6ccab64681675ec
Fix: 124536147
Test: atest InputMethodPreferenceTest
Test: atest InputMethodAndSubtypeUtilTest
Test: Manually verified using steps in bug.
4 files changed, 31 insertions, 37 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java index 057123bcd224..1712a6b67e2f 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 @@ public class InputMethodAndSubtypeUtil { 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 120acd3bcc52..55b6cda5548c 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 @@ public class InputMethodPreference extends RestrictedSwitchPreference implements } 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 b6786d424e6f..13c1b823cb85 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 @@ public class InputMethodSettingValuesWrapper { 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 84606b4e4502..5171dda9bff7 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 @@ public class InputMethodAndSubtypeUtilTest { } @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"; |