From af05cf7e0e4df17729edc18ba835624dcbd9249e Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Mon, 24 Apr 2023 06:17:38 +0000 Subject: [PATCH] [Settings] UI part: Add metrics for numbers preferences Bug: 275003276 Test: local test Change-Id: I2455252f3ed7f5355a363a79076113bd4452732d --- .../NumberingSystemItemController.java | 22 ++++++++++++++----- .../NumberingSystemItemControllerTest.java | 11 ++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java index 8b851b86eb0..379733df9fc 100644 --- a/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java +++ b/src/com/android/settings/regionalpreferences/NumberingSystemItemController.java @@ -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); diff --git a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java index 708987efc7d..6a91295c00c 100644 --- a/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java +++ b/tests/unit/src/com/android/settings/regionalpreferences/NumberingSystemItemControllerTest.java @@ -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