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

Commit 03711a8e authored by allenwtsu's avatar allenwtsu
Browse files

Change locale comparison API

Bug: 209729853
Test: atest AppLocaleDetailsTest
Change-Id: I1568fe9474e473ac6d3fb81dcf9edf9ba7434e85
parent e2f4baed
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -237,18 +237,28 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen
                mSuggestedLocales.add(appLocale);
            }
            // 2nd locale in suggested languages group.
            if (simLocale != null && !simLocale.equals(appLocale)) {
            if (simLocale != null && !compareLocale(simLocale, appLocale)) {
                mSuggestedLocales.add(simLocale);
            }
            // Other locales in suggested languages group.
            for (int i = 0; i < currentSystemLocales.size(); i++) {
                Locale locale = currentSystemLocales.get(i);
                if (!locale.equals(appLocale) && !locale.equals(simLocale)) {
                if (!compareLocale(locale, appLocale) && !compareLocale(locale, simLocale)) {
                    mSuggestedLocales.add(locale);
                }
            }
        }

        static boolean compareLocale(Locale source, Locale target) {
            if (source == null && target == null) {
                return true;
            } else if (source != null && target != null) {
                return LocaleList.matchesLanguageAndScript(source, target);
            } else {
                return false;
            }
        }

        @VisibleForTesting
        void handleSupportedLocales() {
            //TODO Waiting for PackageManager api
+20 −0
Original line number Diff line number Diff line
@@ -152,6 +152,26 @@ public class AppLocaleDetailsTest {
        assertFalse(helper.getSupportedLocales().isEmpty());
    }

    @Test
    @UiThreadTest
    public void handleAllLocalesData_compareLocale() {
        //Use LocaleList.matchScore() to compare two locales.
        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("en-US"),
                Locale.forLanguageTag("en-CA")));
        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"),
                Locale.forLanguageTag("zh")));
        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"),
                Locale.forLanguageTag("zh-Hans")));
        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-TW"),
                Locale.forLanguageTag("zh-Hant")));

        //Use Locale.equals() to compare two locales.
        assertFalse(Locale.forLanguageTag("en-US").equals(Locale.forLanguageTag("en-CA")));
        assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh")));
        assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh-Hans")));
        assertFalse(Locale.forLanguageTag("zh-TW").equals(Locale.forLanguageTag("zh-Hant")));
    }

    /**
     * Sets the initial Locale data
     *