Merge "Add a utility method to SuggestionSpanUtils"
commit
db6c32778e
|
@ -28,9 +28,13 @@ import com.android.inputmethod.latin.SuggestedWords;
|
||||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
|
import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
|
||||||
import com.android.inputmethod.latin.define.DebugFlags;
|
import com.android.inputmethod.latin.define.DebugFlags;
|
||||||
|
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public final class SuggestionSpanUtils {
|
public final class SuggestionSpanUtils {
|
||||||
// Note that SuggestionSpan.FLAG_AUTO_CORRECTION has been introduced
|
// Note that SuggestionSpan.FLAG_AUTO_CORRECTION has been introduced
|
||||||
|
@ -98,4 +102,28 @@ public final class SuggestionSpanUtils {
|
||||||
spannable.setSpan(suggestionSpan, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
spannable.setSpan(suggestionSpan, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
return spannable;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,4 +178,30 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase {
|
||||||
typedAndCollectedWords));
|
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…
Reference in New Issue