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

Commit af05cf7e authored by Zoey Chen's avatar Zoey Chen
Browse files

[Settings] UI part: Add metrics for numbers preferences

Bug: 275003276
Test: local test
Change-Id: I2455252f3ed7f5355a363a79076113bd4452732d
parent 134bea19
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -34,18 +34,22 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import java.util.Locale;

/** Uses to control the preference UI of numbering system page. */
public class NumberingSystemItemController extends BasePreferenceController {
    private static final String TAG = NumberingSystemItemController.class.getSimpleName();
    private static final String DISPLAY_KEYWORD_NUMBERING_SYSTEM = "numbers";

    static final String ARG_VALUE_NUMBERING_SYSTEM_SELECT = "arg_value_numbering_system_select";
    static final String ARG_VALUE_LANGUAGE_SELECT = "arg_value_language_select";
    static final String KEY_SELECTED_LANGUAGE = "key_selected_language";
    private static final String DISPLAY_KEYWORD_NUMBERING_SYSTEM = "numbers";

    private final MetricsFeatureProvider mMetricsFeatureProvider;

    private String mOption = "";
    private String mSelectedLanguage = "";
@@ -60,6 +64,7 @@ public class NumberingSystemItemController extends BasePreferenceController {
                RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE, "");
        mSelectedLanguage = argument.getString(
                NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "");
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    /**
@@ -146,10 +151,13 @@ public class NumberingSystemItemController extends BasePreferenceController {
    }

    private void handleLanguageSelect(Preference preference) {
        String selectedLanguage = preference.getKey();
        mMetricsFeatureProvider.action(mContext,
                SettingsEnums.ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES, selectedLanguage);
        final Bundle extra = new Bundle();
        extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
                ARG_VALUE_NUMBERING_SYSTEM_SELECT);
        extra.putString(KEY_SELECTED_LANGUAGE, preference.getKey());
        extra.putString(KEY_SELECTED_LANGUAGE, selectedLanguage);
        new SubSettingLauncher(preference.getContext())
                .setDestination(NumberingPreferencesFragment.class.getName())
                .setSourceMetricsCategory(
@@ -163,13 +171,15 @@ public class NumberingSystemItemController extends BasePreferenceController {
            TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
            Log.i(TAG, "[onPreferenceClick] key is " + pref.getKey());
            if (pref.getKey().equals(preference.getKey())) {
                String numberingSystem = pref.getKey();
                pref.setSelected(true);
                Locale updatedLocale =
                        saveNumberingSystemToLocale(
                                Locale.forLanguageTag(mSelectedLanguage), pref.getKey());

                        saveNumberingSystemToLocale(Locale.forLanguageTag(mSelectedLanguage),
                                numberingSystem);
                mMetricsFeatureProvider.action(mContext,
                        SettingsEnums.ACTION_SET_NUMBERS_PREFERENCES, numberingSystem);
                // After updated locale to framework, this fragment will recreate,
                // so it need to update the argement of selected language.
                // so it needs to update the argument of selected language.
                Bundle bundle = new Bundle();
                bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
                        ARG_VALUE_NUMBERING_SYSTEM_SELECT);
+11 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.os.LocaleList;
@@ -33,6 +34,7 @@ import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.TickButtonPreference;

import org.junit.After;
@@ -47,6 +49,7 @@ public class NumberingSystemItemControllerTest {
    private NumberingPreferencesFragment mFragment;
    private PreferenceScreen mPreferenceScreen;
    private LocaleList mCacheLocale;
    private FakeFeatureFactory mFeatureFactory;

    @Before
    @UiThreadTest
@@ -55,6 +58,7 @@ public class NumberingSystemItemControllerTest {
            Looper.prepare();
        }
        mApplicationContext = ApplicationProvider.getApplicationContext();
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mFragment = spy(new NumberingPreferencesFragment());
        PreferenceManager preferenceManager = new PreferenceManager(mApplicationContext);
        mPreferenceScreen = preferenceManager.createPreferenceScreen(mApplicationContext);
@@ -89,6 +93,10 @@ public class NumberingSystemItemControllerTest {
        }

        assertTrue(isCallingStartActivity);
        verify(mFeatureFactory.metricsFeatureProvider).action(
                mApplicationContext,
                SettingsEnums.ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES,
                "I_am_the_key");
    }

    @Test
@@ -109,6 +117,9 @@ public class NumberingSystemItemControllerTest {
        mController.handlePreferenceTreeClick(preference);

        verify(mFragment).setArguments(any());
        verify(mFeatureFactory.metricsFeatureProvider).action(
                mApplicationContext, SettingsEnums.ACTION_SET_NUMBERS_PREFERENCES,
                "test_key");
    }

    @Test