Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06db8a68 authored by Allen Su's avatar Allen Su Committed by Automerger Merge Worker
Browse files

Merge "[Panlingual]Fix duplicate language from IME" into udc-qpr-dev am: a312052b

parents be3b1554 a312052b
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -390,13 +390,18 @@ public class LocaleStore {
    public static Set<LocaleInfo> transformImeLanguageTagToLocaleInfo(
            List<InputMethodSubtype> list) {
        Set<LocaleInfo> imeLocales = new HashSet<>();
        Set<String> languageTagSet = new HashSet<>();
        for (InputMethodSubtype subtype : list) {
            Locale locale = Locale.forLanguageTag(subtype.getLanguageTag());
            String languageTag = subtype.getLanguageTag();
            if (!languageTagSet.contains(languageTag)) {
                languageTagSet.add(languageTag);
                Locale locale = Locale.forLanguageTag(languageTag);
                LocaleInfo cacheInfo = getLocaleInfo(locale, sLocaleCache);
                LocaleInfo localeInfo = new LocaleInfo(cacheInfo);
                localeInfo.mSuggestionFlags |= LocaleInfo.SUGGESTION_TYPE_IME_LANGUAGE;
                imeLocales.add(localeInfo);
            }
        }
        return imeLocales;
    }

+19 −0
Original line number Diff line number Diff line
@@ -62,6 +62,25 @@ public class LocaleStoreTest {
        }
    }

    @Test
    public void testTransformImeLanguageTagToLocaleInfo_duplicateTagFilter() {
        List<InputMethodSubtype> list = List.of(
                new InputMethodSubtypeBuilder().setLanguageTag("en-US").build(),
                new InputMethodSubtypeBuilder().setLanguageTag("en-US").build(),
                new InputMethodSubtypeBuilder().setLanguageTag("en-US").build(),
                new InputMethodSubtypeBuilder().setLanguageTag("zh-TW").build(),
                new InputMethodSubtypeBuilder().setLanguageTag("ja-JP").build());

        Set<LocaleInfo> localeSet = LocaleStore.transformImeLanguageTagToLocaleInfo(list);

        Set<String> expectedLanguageTag = Set.of("en-US", "zh-TW", "ja-JP");
        assertEquals(localeSet.size(), expectedLanguageTag.size());
        for (LocaleInfo info : localeSet) {
            assertEquals(info.mSuggestionFlags, LocaleInfo.SUGGESTION_TYPE_IME_LANGUAGE);
            assertTrue(expectedLanguageTag.contains(info.getId()));
        }
    }

    @Test
    public void convertExplicitLocales_noExplicitLcoales_returnEmptyHashMap() {
        Collection<LocaleInfo> supportedLocale = getFakeSupportedLocales();