diff options
author | Yohei Yukawa <yukawa@google.com> | 2014-07-25 19:05:26 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-24 22:43:15 +0000 |
commit | 48e28ad06cb2cb30d3c327b0215c15dd4843fb6f (patch) | |
tree | 95288c10844865089ad8886c5279389804751e46 | |
parent | bc976e3f4c79a8565ec625564c92d316825f26a7 (diff) | |
parent | 71cf0a32d0d9a45653704a671154f26a8bc3132b (diff) | |
download | frameworks_base-48e28ad06cb2cb30d3c327b0215c15dd4843fb6f.zip frameworks_base-48e28ad06cb2cb30d3c327b0215c15dd4843fb6f.tar.gz frameworks_base-48e28ad06cb2cb30d3c327b0215c15dd4843fb6f.tar.bz2 |
Merge "Stop assuming language part in locale string is up to 2-letter" into lmp-dev
-rw-r--r-- | core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java | 28 | ||||
-rw-r--r-- | core/tests/inputmethodtests/src/android/os/InputMethodSubtypeSwitchingControllerTest.java | 29 |
2 files changed, 53 insertions, 4 deletions
diff --git a/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java b/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java index fdd24a6..52485dd 100644 --- a/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java +++ b/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java @@ -54,8 +54,8 @@ public class InputMethodSubtypeSwitchingController { public final CharSequence mSubtypeName; public final InputMethodInfo mImi; public final int mSubtypeId; - private final boolean mIsSystemLocale; - private final boolean mIsSystemLanguage; + public final boolean mIsSystemLocale; + public final boolean mIsSystemLanguage; public ImeSubtypeListItem(CharSequence imeName, CharSequence subtypeName, InputMethodInfo imi, int subtypeId, String subtypeLocale, String systemLocale) { @@ -68,8 +68,28 @@ public class InputMethodSubtypeSwitchingController { mIsSystemLanguage = false; } else { mIsSystemLocale = subtypeLocale.equals(systemLocale); - mIsSystemLanguage = mIsSystemLocale - || subtypeLocale.startsWith(systemLocale.substring(0, 2)); + if (mIsSystemLocale) { + mIsSystemLanguage = true; + } else { + // TODO: Use Locale#getLanguage or Locale#toLanguageTag + final String systemLanguage = parseLanguageFromLocaleString(systemLocale); + final String subtypeLanguage = parseLanguageFromLocaleString(subtypeLocale); + mIsSystemLanguage = systemLanguage.length() >= 2 && + systemLanguage.equals(subtypeLanguage); + } + } + } + + /** + * Returns the language component of a given locale string. + * TODO: Use {@link Locale#getLanguage()} instead. + */ + private static String parseLanguageFromLocaleString(final String locale) { + final int idx = locale.indexOf('_'); + if (idx < 0) { + return locale; + } else { + return locale.substring(0, idx); } } diff --git a/core/tests/inputmethodtests/src/android/os/InputMethodSubtypeSwitchingControllerTest.java b/core/tests/inputmethodtests/src/android/os/InputMethodSubtypeSwitchingControllerTest.java index ca68e93..3a598f2 100644 --- a/core/tests/inputmethodtests/src/android/os/InputMethodSubtypeSwitchingControllerTest.java +++ b/core/tests/inputmethodtests/src/android/os/InputMethodSubtypeSwitchingControllerTest.java @@ -295,4 +295,33 @@ public class InputMethodSubtypeSwitchingControllerTest extends InstrumentationTe assertRotationOrder(anotherController, false /* onlyCurrentIme */, switchingUnawarelatinIme_en_UK, switchUnawareJapaneseIme_ja_JP); } + + @SmallTest + public void testImeSubtypeListItem() throws Exception { + final List<ImeSubtypeListItem> items = new ArrayList<ImeSubtypeListItem>(); + addDummyImeSubtypeListItems(items, "LatinIme", "LatinIme", + Arrays.asList("en_US", "fr", "en", "en_uk", "enn", "e", "EN_US"), + true /* supportsSwitchingToNextInputMethod*/); + final ImeSubtypeListItem item_en_US = items.get(0); + final ImeSubtypeListItem item_fr = items.get(1); + final ImeSubtypeListItem item_en = items.get(2); + final ImeSubtypeListItem item_enn = items.get(3); + final ImeSubtypeListItem item_e = items.get(4); + final ImeSubtypeListItem item_EN_US = items.get(5); + + assertTrue(item_en_US.mIsSystemLocale); + assertFalse(item_fr.mIsSystemLocale); + assertFalse(item_en.mIsSystemLocale); + assertFalse(item_en.mIsSystemLocale); + assertFalse(item_enn.mIsSystemLocale); + assertFalse(item_e.mIsSystemLocale); + assertFalse(item_EN_US.mIsSystemLocale); + + assertTrue(item_en_US.mIsSystemLanguage); + assertFalse(item_fr.mIsSystemLanguage); + assertTrue(item_en.mIsSystemLanguage); + assertFalse(item_enn.mIsSystemLocale); + assertFalse(item_e.mIsSystemLocale); + assertFalse(item_EN_US.mIsSystemLocale); + } } |