Loading java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java +28 −0 Original line number Diff line number Diff line Loading @@ -28,9 +28,13 @@ import com.android.inputmethod.latin.SuggestedWords; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver; import com.android.inputmethod.latin.define.DebugFlags; import com.android.inputmethod.latin.utils.LocaleUtils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Locale; import javax.annotation.Nullable; public final class SuggestionSpanUtils { // Note that SuggestionSpan.FLAG_AUTO_CORRECTION has been introduced Loading Loading @@ -98,4 +102,28 @@ public final class SuggestionSpanUtils { spannable.setSpan(suggestionSpan, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return spannable; } /** * Returns first {@link Locale} found in the given array of {@link SuggestionSpan}. * @param suggestionSpans the array of {@link SuggestionSpan} to be examined. * @return the first {@link Locale} found in {@code suggestionSpans}. {@code null} when not * found. */ @UsedForTesting @Nullable public static Locale findFirstLocaleFromSuggestionSpans( final SuggestionSpan[] suggestionSpans) { for (final SuggestionSpan suggestionSpan : suggestionSpans) { final String localeString = suggestionSpan.getLocale(); if (TextUtils.isEmpty(localeString)) { continue; } final Locale locale = LocaleUtils.constructLocaleFromString(localeString); if (locale == null) { continue; } return locale; } return null; } } tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -178,4 +178,30 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { typedAndCollectedWords)); } } public void testFindFirstLocaleFromSuggestionSpans() { final String[] suggestions = new String[] {"Quality", "Speed", "Price"}; final SuggestionSpan nullLocaleSpan = new SuggestionSpan((Locale)null, suggestions, 0); final SuggestionSpan emptyLocaleSpan = new SuggestionSpan(new Locale(""), suggestions, 0); final SuggestionSpan enUsLocaleSpan = new SuggestionSpan(Locale.US, suggestions, 0); final SuggestionSpan jaJpLocaleSpan = new SuggestionSpan(Locale.JAPAN, suggestions, 0); assertEquals(null, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {})); assertEquals(null, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {emptyLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {enUsLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, enUsLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, emptyLocaleSpan, enUsLocaleSpan})); assertEquals(Locale.JAPAN, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, jaJpLocaleSpan, enUsLocaleSpan})); } } Loading
java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java +28 −0 Original line number Diff line number Diff line Loading @@ -28,9 +28,13 @@ import com.android.inputmethod.latin.SuggestedWords; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver; import com.android.inputmethod.latin.define.DebugFlags; import com.android.inputmethod.latin.utils.LocaleUtils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Locale; import javax.annotation.Nullable; public final class SuggestionSpanUtils { // Note that SuggestionSpan.FLAG_AUTO_CORRECTION has been introduced Loading Loading @@ -98,4 +102,28 @@ public final class SuggestionSpanUtils { spannable.setSpan(suggestionSpan, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return spannable; } /** * Returns first {@link Locale} found in the given array of {@link SuggestionSpan}. * @param suggestionSpans the array of {@link SuggestionSpan} to be examined. * @return the first {@link Locale} found in {@code suggestionSpans}. {@code null} when not * found. */ @UsedForTesting @Nullable public static Locale findFirstLocaleFromSuggestionSpans( final SuggestionSpan[] suggestionSpans) { for (final SuggestionSpan suggestionSpan : suggestionSpans) { final String localeString = suggestionSpan.getLocale(); if (TextUtils.isEmpty(localeString)) { continue; } final Locale locale = LocaleUtils.constructLocaleFromString(localeString); if (locale == null) { continue; } return locale; } return null; } }
tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -178,4 +178,30 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { typedAndCollectedWords)); } } public void testFindFirstLocaleFromSuggestionSpans() { final String[] suggestions = new String[] {"Quality", "Speed", "Price"}; final SuggestionSpan nullLocaleSpan = new SuggestionSpan((Locale)null, suggestions, 0); final SuggestionSpan emptyLocaleSpan = new SuggestionSpan(new Locale(""), suggestions, 0); final SuggestionSpan enUsLocaleSpan = new SuggestionSpan(Locale.US, suggestions, 0); final SuggestionSpan jaJpLocaleSpan = new SuggestionSpan(Locale.JAPAN, suggestions, 0); assertEquals(null, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {})); assertEquals(null, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {emptyLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {enUsLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, enUsLocaleSpan})); assertEquals(Locale.US, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, emptyLocaleSpan, enUsLocaleSpan})); assertEquals(Locale.JAPAN, SuggestionSpanUtils.findFirstLocaleFromSuggestionSpans( new SuggestionSpan[] {nullLocaleSpan, jaJpLocaleSpan, enUsLocaleSpan})); } }