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

Commit e2aeded3 authored by tom hsu's avatar tom hsu
Browse files

[Regional Preferences] Remove u extension for subtitle of Language

 - Remove the language tag info of subtitle in  Settings -> System -> Languages
 - Syuc same result to entry of numbering system.

Bug: b/268278327
Bug: b/268276472
Test: atest passed
Test: Manual test passed
Change-Id: I46dd0899059e9209b99f5ef3b7b84eb083d4e140
parent 6f76d5dc
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -27,10 +27,16 @@ public class LocaleFeatureProviderImpl implements LocaleFeatureProvider {
    @Override
    public String getLocaleNames() {
        final LocaleList locales = LocalePicker.getLocales();
        Locale[] arrLocalesWithoutExtension = new Locale[locales.size()];
        for (int i = 0; i < locales.size(); i++) {
            arrLocalesWithoutExtension[i] = locales.get(i).stripExtensions();
        }
        final Locale displayLocale = Locale.getDefault();
        return LocaleHelper.toSentenceCase(
                LocaleHelper.getDisplayLocaleList(
                        locales, displayLocale, 2 /* Show up to two locales from the list */),
                        new LocaleList(arrLocalesWithoutExtension),
                        displayLocale,
                        2 /* Show up to two locales from the list */),
                displayLocale);
    }
}
+2 −11
Original line number Diff line number Diff line
@@ -17,12 +17,9 @@
package com.android.settings.regionalpreferences;

import android.content.Context;
import android.os.LocaleList;

import com.android.settings.core.BasePreferenceController;

import java.util.Locale;
import java.util.StringJoiner;
import com.android.settings.localepicker.LocaleFeatureProviderImpl;

/** A controller for the entry of Numbering System's page */
public class NumberingSystemController extends BasePreferenceController {
@@ -50,12 +47,6 @@ public class NumberingSystemController extends BasePreferenceController {

    @Override
    public CharSequence getSummary() {
        LocaleList localeList = LocaleList.getDefault();
        StringJoiner stringJoiner = new StringJoiner(", ");
        for (int i = 0; i < localeList.size(); i++) {
            Locale locale = localeList.get(i);
            stringJoiner.add(locale.stripExtensions().getDisplayName(locale));
        }
        return stringJoiner.toString();
        return new LocaleFeatureProviderImpl().getLocaleNames();
    }
}
+80 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.localepicker;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import android.app.ActivityManager;
import android.app.ActivityThread;
import android.content.res.Configuration;
import android.os.LocaleList;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Locale;

public class LocaleFeatureProviderImplTest {
    private LocaleFeatureProviderImpl mLocaleFeatureProviderImpl;
    private Configuration mCacheConfig;

    @Before
    public void setUp() throws Exception {
        mLocaleFeatureProviderImpl = new LocaleFeatureProviderImpl();
        // Cache current configuration.
        mCacheConfig = ActivityManager.getService().getConfiguration();
    }

    @After
    public void tearDown() throws Exception {
        // Recovery the configuration to the current device.
        ActivityManager.getService().updatePersistentConfigurationWithAttribution(mCacheConfig,
                ActivityThread.currentOpPackageName(), null);
    }

    @Test
    public void getLocaleNames_hasEnAndZh_resultIsEnglishAndChinese() throws Exception {
        LocaleList locales = LocaleList.forLanguageTags("en-US-u-mu-celsius,zh-TW");
        final Configuration config = new Configuration();
        config.setLocales(locales);
        ActivityManager.getService().updatePersistentConfigurationWithAttribution(config,
                ActivityThread.currentOpPackageName(), null);

        String result = mLocaleFeatureProviderImpl.getLocaleNames().trim();

        String expected1 =
                Locale.forLanguageTag("en-US-u-mu-celsius").stripExtensions().getDisplayName();
        String expected2 = Locale.forLanguageTag("zh-TW").getDisplayName();
        assertTrue(result.contains(expected1));
        assertTrue(result.contains(expected2));
    }

    @Test
    public void getLocaleNames_hasExtension_resultWithoutExtensionInfo() throws Exception {
        LocaleList locales = LocaleList.forLanguageTags("en-US-u-mu-celsius,zh-TW");
        final Configuration config = new Configuration();
        config.setLocales(locales);
        ActivityManager.getService().updatePersistentConfigurationWithAttribution(config,
                ActivityThread.currentOpPackageName(), null);

        String result = mLocaleFeatureProviderImpl.getLocaleNames().toLowerCase(Locale.ROOT);

        assertFalse(result.contains("celsius"));
    }
}
+0 −83
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.regionalpreferences;

import static org.junit.Assert.assertEquals;

import android.content.Context;
import android.os.LocaleList;

import androidx.test.core.app.ApplicationProvider;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Locale;

public class NumberingSystemControllerTest {
    private Context mApplicationContext;
    private NumberingSystemController mController;
    private LocaleList mCacheLocales;

    @Before
    public void setUp() throws Exception {
        mApplicationContext = ApplicationProvider.getApplicationContext();
        mController = new NumberingSystemController(mApplicationContext, "key");
        mCacheLocales = LocaleList.getDefault();
    }


    @After
    public void tearDown() throws Exception {
        LocaleList.setDefault(mCacheLocales);
    }

    @Test
    public void getSummary_has1Locale_showEnUs() {
        LocaleList.setDefault(LocaleList.forLanguageTags("en-US"));

        String summary = mController.getSummary().toString();

        String expectedResult =
                Locale.forLanguageTag("en-us").getDisplayName();
        assertEquals(expectedResult, summary);
    }

    @Test
    public void getSummary_has2Locales_showEnUsAndZhTw() {
        LocaleList.setDefault(LocaleList.forLanguageTags("en-US,zh-TW"));

        String summary = mController.getSummary().toString();

        Locale locale1 = Locale.forLanguageTag("en-US");
        Locale locale2 = Locale.forLanguageTag("zh-TW");
        String expectedResult =
                locale1.getDisplayName(locale1) + ", " + locale2.getDisplayName(locale2);
        assertEquals(expectedResult, summary);
    }

    @Test
    public void getSummary_localeHasExtensionTag_showEnUsWithoutTag() {
        LocaleList.setDefault(LocaleList.forLanguageTags("en-US-u-ca-chinese"));

        String summary = mController.getSummary().toString();

        String expectedResult = Locale.forLanguageTag("en-US").getDisplayName();
        assertEquals(expectedResult, summary);
    }
}