diff options
author | Yohei Yukawa <yukawa@google.com> | 2014-09-12 23:21:54 +0900 |
---|---|---|
committer | Yohei Yukawa <yukawa@google.com> | 2014-09-13 00:29:49 +0900 |
commit | 59cccf93d28648a77860a30349e52b7eeb98436c (patch) | |
tree | 0567d35535e94d5f9dfbcb1af3aa40a411729f7a | |
parent | b3ecb72af8cbbd4f6f8089d0dc22289f6e2588f6 (diff) | |
download | frameworks_base-59cccf93d28648a77860a30349e52b7eeb98436c.zip frameworks_base-59cccf93d28648a77860a30349e52b7eeb98436c.tar.gz frameworks_base-59cccf93d28648a77860a30349e52b7eeb98436c.tar.bz2 |
Enrich test cases when enabling default IMEs part 4
This is another groundwork for subsequent fixes.
Notable changes in test cases are:
- simplified test cases for voice IMEs.
- added more test cases for keyboard IMEs.
- introduced assertDefaultEnabledImes() to reduce code duplicate.
BUG: 17347871
Change-Id: I8cf61cfa18ac425a2cccc7823474c3f06dc0fa1e
-rw-r--r-- | core/tests/inputmethodtests/src/android/os/InputMethodTest.java | 432 |
1 files changed, 203 insertions, 229 deletions
diff --git a/core/tests/inputmethodtests/src/android/os/InputMethodTest.java b/core/tests/inputmethodtests/src/android/os/InputMethodTest.java index 30eb939..cb85fc5 100644 --- a/core/tests/inputmethodtests/src/android/os/InputMethodTest.java +++ b/core/tests/inputmethodtests/src/android/os/InputMethodTest.java @@ -45,177 +45,99 @@ public class InputMethodTest extends InstrumentationTestCase { private static final Locale LOCALE_EN_GB = new Locale("en", "GB"); private static final Locale LOCALE_EN_IN = new Locale("en", "IN"); private static final Locale LOCALE_HI = new Locale("hi"); + private static final Locale LOCALE_JA_JP = new Locale("ja", "JP"); + private static final String SUBTYPE_MODE_KEYBOARD = "keyboard"; + private static final String SUBTYPE_MODE_VOICE = "voice"; @SmallTest - public void testDefaultEnabledImesWithDefaultVoiceIme() throws Exception { - final Context context = getInstrumentation().getTargetContext(); - final ArrayList<InputMethodInfo> imis = new ArrayList<InputMethodInfo>(); - imis.add(createDefaultAutoDummyVoiceIme()); - imis.add(createNonDefaultAutoDummyVoiceIme0()); - imis.add(createNonDefaultAutoDummyVoiceIme1()); - imis.add(createNonDefaultDummyVoiceIme2()); - imis.add(createDefaultDummyLatinKeyboardIme()); - imis.add(createNonDefaultDummyJaJPKeyboardIme()); - imis.add(createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes()); - imis.add(createDefaultDummyHinglishKeyboardIme()); - - // locale: en_US, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnUs = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_US); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", + public void testVoiceImes() throws Exception { + // locale: en_US + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_EN_US, !IS_SYSTEM_READY, "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnUs)); - - // locale: en_US, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnUs = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_US); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnUs)); - - // locale: en_GB, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnGB = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_GB); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", + "DummyDefaultEnKeyboardIme", "DummyDefaultAutoVoiceIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_EN_US, !IS_SYSTEM_READY, "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnGB)); - - // locale: en_GB, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnGB = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_GB); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnGB)); - - // locale: en_IN, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnIN = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_IN); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", + "DummyDefaultEnKeyboardIme"); + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_EN_US, IS_SYSTEM_READY, + "DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_EN_US, IS_SYSTEM_READY, "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnIN)); + "DummyDefaultEnKeyboardIme"); - // locale: en_IN, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnIN = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_IN); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnIN)); - - // locale: hi, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleHi = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_HI); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", + // locale: en_GB + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_EN_GB, !IS_SYSTEM_READY, + "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", + "DummyDefaultEnKeyboardIme", "DummyDefaultAutoVoiceIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_EN_GB, !IS_SYSTEM_READY, + "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", + "DummyDefaultEnKeyboardIme"); + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_EN_GB, IS_SYSTEM_READY, + "DummyDefaultEnKeyboardIme", "DummyDefaultAutoVoiceIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_EN_GB, IS_SYSTEM_READY, "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleHi)); + "DummyDefaultEnKeyboardIme"); - // locale: hi, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleHi = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_HI); - assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme", + // locale: ja_JP + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_JA_JP, !IS_SYSTEM_READY, + "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", + "DummyDefaultEnKeyboardIme", "DummyDefaultAutoVoiceIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_JA_JP, !IS_SYSTEM_READY, + "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", + "DummyDefaultEnKeyboardIme"); + assertDefaultEnabledImes(getImesWithDefaultVoiceIme(), LOCALE_JA_JP, IS_SYSTEM_READY, "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleHi)); + "DummyDefaultEnKeyboardIme", "DummyDefaultAutoVoiceIme"); + assertDefaultEnabledImes(getImesWithoutDefaultVoiceIme(), LOCALE_JA_JP, IS_SYSTEM_READY, + "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", + "DummyDefaultEnKeyboardIme"); } @SmallTest - public void testDefaultEnabledImesWithOutDefaultVoiceIme() throws Exception { - final Context context = getInstrumentation().getTargetContext(); - final ArrayList<InputMethodInfo> imis = new ArrayList<InputMethodInfo>(); - imis.add(createNonDefaultAutoDummyVoiceIme0()); - imis.add(createNonDefaultAutoDummyVoiceIme1()); - imis.add(createNonDefaultDummyVoiceIme2()); - imis.add(createDefaultDummyLatinKeyboardIme()); - imis.add(createNonDefaultDummyJaJPKeyboardIme()); - imis.add(createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes()); - imis.add(createDefaultDummyHinglishKeyboardIme()); - - // locale: en_US, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnUs = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_US); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnUs)); - - // locale: en_US, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnUs = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_US); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnUs)); - - // locale: en_GB, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnGB = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_GB); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnGB)); - - // locale: en_GB, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnGB = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_GB); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnGB)); - - // locale: en_IN, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleEnIN = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_EN_IN); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleEnIN)); - - // locale: en_IN, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleEnIN = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_EN_IN); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleEnIN)); - - // locale: hi, system: not ready - final ArrayList<InputMethodInfo> enabledImisForSystemNotReadyLocaleHi = - callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis, - LOCALE_HI); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemNotReadyLocaleHi)); - - // locale: hi, system: ready - final ArrayList<InputMethodInfo> enabledImisForSystemReadyLocaleHi = - callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis, - LOCALE_HI); - assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1", - "DummyDefaultEnKeyboardIme", "DummyDefaultHinglishKeyboardIme"), - getPackageNames(enabledImisForSystemReadyLocaleHi)); + public void testKeyboardImes() throws Exception { + // locale: en_US + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_US, !IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_US, IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + + // locale: en_GB + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_GB, !IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_GB, IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + + // locale: en_IN + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_IN, !IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_EN_IN, IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + + // locale: hi + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_HI, !IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_HI, IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + + // locale: ja_JP + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_JA_JP, !IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi"); + assertDefaultEnabledImes(getSamplePreinstalledImes(), LOCALE_JA_JP, IS_SYSTEM_READY, + "com.android.apps.inputmethod.voice", "com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.hindi", "com.android.apps.inputmethod.japanese"); } @SmallTest public void testParcelable() throws Exception { - final ArrayList<InputMethodInfo> originalList = new ArrayList<InputMethodInfo>(); - originalList.add(createNonDefaultAutoDummyVoiceIme0()); - originalList.add(createNonDefaultAutoDummyVoiceIme1()); - originalList.add(createNonDefaultDummyVoiceIme2()); - originalList.add(createDefaultDummyLatinKeyboardIme()); - originalList.add(createNonDefaultDummyJaJPKeyboardIme()); - originalList.add(createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes()); - + final ArrayList<InputMethodInfo> originalList = getSamplePreinstalledImes(); final List<InputMethodInfo> clonedList = cloneViaParcel(originalList); assertNotNull(clonedList); final List<InputMethodInfo> clonedClonedList = cloneViaParcel(clonedList); @@ -230,6 +152,14 @@ public class InputMethodTest extends InstrumentationTestCase { } } + private void assertDefaultEnabledImes(final ArrayList<InputMethodInfo> preinstalledImes, + final Locale systemLocale, final boolean isSystemReady, String... imeNames) { + final Context context = getInstrumentation().getTargetContext(); + assertEquals(new HashSet<String>(Arrays.asList(imeNames)), + getPackageNames(callGetDefaultEnabledImesUnderWithLocale(context, + isSystemReady, preinstalledImes, systemLocale))); + } + private static List<InputMethodInfo> cloneViaParcel(final List<InputMethodInfo> list) { Parcel p = null; try { @@ -256,11 +186,6 @@ public class InputMethodTest extends InstrumentationTestCase { } } - @SafeVarargs - private static <T> HashSet<T> toSet(final T... xs) { - return new HashSet<T>(Arrays.asList(xs)); - } - private HashSet<String> getPackageNames(final ArrayList<InputMethodInfo> imis) { final HashSet<String> packageNames = new HashSet<>(); for (final InputMethodInfo imi : imis) { @@ -315,83 +240,132 @@ public class InputMethodTest extends InstrumentationTestCase { .build(); } - private static InputMethodInfo createDefaultAutoDummyVoiceIme() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("auto", "voice", IS_AUX, IS_AUTO, - !IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("en_US", "voice", IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyDefaultAutoVoiceIme", "dummy.voice0", - "DummyVoice0", IS_AUX, IS_DEFAULT, subtypes); + private static ArrayList<InputMethodInfo> getImesWithDefaultVoiceIme() { + ArrayList<InputMethodInfo> preinstalledImes = new ArrayList<>(); + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("auto", SUBTYPE_MODE_VOICE, IS_AUX, IS_AUTO, + !IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_VOICE, IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("DummyDefaultAutoVoiceIme", + "dummy.voice0", "DummyVoice0", IS_AUX, IS_DEFAULT, subtypes)); + } + preinstalledImes.addAll(getImesWithoutDefaultVoiceIme()); + return preinstalledImes; } - private static InputMethodInfo createNonDefaultAutoDummyVoiceIme0() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("auto", "voice", IS_AUX, IS_AUTO, - !IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("en_US", "voice", IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyNonDefaultAutoVoiceIme0", "dummy.voice1", - "DummyVoice1", IS_AUX, !IS_DEFAULT, subtypes); + private static ArrayList<InputMethodInfo> getImesWithoutDefaultVoiceIme() { + ArrayList<InputMethodInfo> preinstalledImes = new ArrayList<>(); + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("auto", SUBTYPE_MODE_VOICE, IS_AUX, IS_AUTO, + !IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_VOICE, IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("DummyNonDefaultAutoVoiceIme0", + "dummy.voice1", "DummyVoice1", IS_AUX, !IS_DEFAULT, subtypes)); + } + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("auto", SUBTYPE_MODE_VOICE, IS_AUX, IS_AUTO, + !IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_VOICE, IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("DummyNonDefaultAutoVoiceIme1", + "dummy.voice2", "DummyVoice2", IS_AUX, !IS_DEFAULT, subtypes)); + } + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_VOICE, IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("DummyNonDefaultVoiceIme2", + "dummy.voice3", "DummyVoice3", IS_AUX, !IS_DEFAULT, subtypes)); + } + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("DummyDefaultEnKeyboardIme", + "dummy.keyboard0", "DummyKeyboard0", !IS_AUX, IS_DEFAULT, subtypes)); + } + return preinstalledImes; } - private static InputMethodInfo createNonDefaultAutoDummyVoiceIme1() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("auto", "voice", IS_AUX, IS_AUTO, - !IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("en_US", "voice", IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyNonDefaultAutoVoiceIme1", "dummy.voice2", - "DummyVoice2", IS_AUX, !IS_DEFAULT, subtypes); - } + private static ArrayList<InputMethodInfo> getSamplePreinstalledImes() { + ArrayList<InputMethodInfo> preinstalledImes = new ArrayList<>(); + + // a dummy Voice IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("", SUBTYPE_MODE_VOICE, IS_AUX, + IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("com.android.apps.inputmethod.voice", + "com.android.inputmethod.voice", "DummyVoiceIme", IS_AUX, IS_DEFAULT, + subtypes)); + } - private static InputMethodInfo createNonDefaultDummyVoiceIme2() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("en_US", "voice", IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyNonDefaultVoiceIme2", "dummy.voice3", - "DummyVoice3", IS_AUX, !IS_DEFAULT, subtypes); - } + // a dummy Hindi IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + // TODO: This subtype should be marked as IS_ASCII_CAPABLE + subtypes.add(createDummyInputMethodSubtype("en_IN", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("hi", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("com.android.apps.inputmethod.hindi", + "com.android.inputmethod.hindi", "DummyHindiIme", !IS_AUX, IS_DEFAULT, + subtypes)); + } - private static InputMethodInfo createDefaultDummyLatinKeyboardIme() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("en_US", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("en_GB", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("en_IN", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("hi", "keyboard", !IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); // not AsciiCapable! - subtypes.add(createDummyInputMethodSubtype("hi_ZZ", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyDefaultEnKeyboardIme", "dummy.keyboard0", - "DummyKeyboard0", !IS_AUX, IS_DEFAULT, subtypes); - } + // a dummy Pinyin IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("zh_CN", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("ccom.android.apps.inputmethod.pinyin", + "com.android.apps.inputmethod.pinyin", "DummyPinyinIme", !IS_AUX, IS_DEFAULT, + subtypes)); + } - private static InputMethodInfo createNonDefaultDummyJaJPKeyboardIme() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("ja_JP", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - return createDummyInputMethodInfo("DummyNonDefaultJaJPKeyboardIme", "dummy.keyboard1", - "DummyKeyboard1", !IS_AUX, !IS_DEFAULT, subtypes); - } + // a dummy Korian IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("ko", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("com.android.apps.inputmethod.korean", + "com.android.apps.inputmethod.korean", "DummyKorianIme", !IS_AUX, IS_DEFAULT, + subtypes)); + } - // Although IMEs that have no subtype are considered to be deprecated, the Android framework - // must still be able to handle such IMEs as well as IMEs that have at least one subtype. - private static InputMethodInfo createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - return createDummyInputMethodInfo("DummyNonDefaultJaJPKeyboardImeWithoutSubtypes", - "dummy.keyboard2", "DummyKeyboard2", !IS_AUX, !IS_DEFAULT, NO_SUBTYPE); - } + // a dummy Latin IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("en_US", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("en_GB", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("en_IN", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("hi", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("com.android.apps.inputmethod.latin", + "com.android.apps.inputmethod.latin", "DummyLatinIme", !IS_AUX, IS_DEFAULT, + subtypes)); + } + + // a dummy Japanese IME + { + final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); + subtypes.add(createDummyInputMethodSubtype("ja", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + subtypes.add(createDummyInputMethodSubtype("emoji", SUBTYPE_MODE_KEYBOARD, !IS_AUX, + !IS_AUTO, !IS_ASCII_CAPABLE)); + preinstalledImes.add(createDummyInputMethodInfo("com.android.apps.inputmethod.japanese", + "com.android.apps.inputmethod.japanese", "DummyJapaneseIme", !IS_AUX, + IS_DEFAULT, subtypes)); + } - private static InputMethodInfo createDefaultDummyHinglishKeyboardIme() { - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); - subtypes.add(createDummyInputMethodSubtype("en_IN", "keyboard", !IS_AUX, !IS_AUTO, - IS_ASCII_CAPABLE)); - subtypes.add(createDummyInputMethodSubtype("hi", "keyboard", !IS_AUX, !IS_AUTO, - !IS_ASCII_CAPABLE)); // not AsciiCapable! - return createDummyInputMethodInfo("DummyDefaultHinglishKeyboardIme", "dummy.keyboard2", - "DummyKeyboard2", !IS_AUX, IS_DEFAULT, subtypes); + return preinstalledImes; } } |