diff --git a/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java b/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java index a639c9d297a..b962b9e8d46 100644 --- a/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java +++ b/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java @@ -16,6 +16,7 @@ package com.android.settings.localepicker; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.util.Log; @@ -24,8 +25,10 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.HelpUtils; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.widget.FooterPreference; /** @@ -36,8 +39,11 @@ public class LocaleHelperPreferenceController extends AbstractPreferenceControll private static final String KEY_FOOTER_LANGUAGE_PICKER = "footer_languages_picker"; + private final MetricsFeatureProvider mMetricsFeatureProvider; + public LocaleHelperPreferenceController(Context context) { super(context); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -72,6 +78,7 @@ public class LocaleHelperPreferenceController extends AbstractPreferenceControll mContext.getString(R.string.link_locale_picker_footer_learn_more), mContext.getClass().getName()); if (intent != null) { + mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE); mContext.startActivity(intent); } else { Log.w(TAG, "HelpIntent is null"); diff --git a/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListController.java b/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListController.java index 03a59dec50b..d509d2e2f12 100644 --- a/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListController.java +++ b/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListController.java @@ -16,6 +16,7 @@ package com.android.settings.regionalpreferences; +import android.app.settings.SettingsEnums; import android.content.Context; import com.android.settings.R; @@ -57,4 +58,9 @@ public class FirstDayOfWeekItemListController extends protected String[] getUnitValues() { return mContext.getResources().getStringArray(R.array.first_day_of_week); } + + @Override + protected int getMetricsActionKey() { + return SettingsEnums.ACTION_SET_FIRST_DAY_OF_WEEK; + } } diff --git a/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java b/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java index 2f2bf765e62..ac0e7ee8b27 100644 --- a/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java +++ b/src/com/android/settings/regionalpreferences/RegionalPreferenceListBasePreferenceController.java @@ -22,16 +22,20 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.TickButtonPreference; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** A base controller for handling all regional preferences controllers. */ public abstract class RegionalPreferenceListBasePreferenceController extends BasePreferenceController { + private final MetricsFeatureProvider mMetricsFeatureProvider; private PreferenceCategory mPreferenceCategory; public RegionalPreferenceListBasePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -61,6 +65,8 @@ public abstract class RegionalPreferenceListBasePreferenceController extends RegionalPreferencesDataUtils.savePreference(mContext, getExtensionTypes(), item.equals(RegionalPreferencesDataUtils.DEFAULT_VALUE) ? null : item); + mMetricsFeatureProvider.action(mContext, getMetricsActionKey(), + getPreferenceTitle(value) + " > " + getPreferenceTitle(item)); return true; }); pref.setSelected(!value.isEmpty() && item.equals(value)); @@ -90,4 +96,8 @@ public abstract class RegionalPreferenceListBasePreferenceController extends protected abstract String getExtensionTypes(); protected abstract String[] getUnitValues(); + + protected abstract int getMetricsActionKey(); + + } diff --git a/src/com/android/settings/regionalpreferences/TemperatureUnitListController.java b/src/com/android/settings/regionalpreferences/TemperatureUnitListController.java index c51ca715987..91ab1a25216 100644 --- a/src/com/android/settings/regionalpreferences/TemperatureUnitListController.java +++ b/src/com/android/settings/regionalpreferences/TemperatureUnitListController.java @@ -16,6 +16,7 @@ package com.android.settings.regionalpreferences; +import android.app.settings.SettingsEnums; import android.content.Context; import com.android.settings.R; @@ -55,4 +56,9 @@ public class TemperatureUnitListController extends RegionalPreferenceListBasePre protected String[] getUnitValues() { return mContext.getResources().getStringArray(R.array.temperature_units); } + + @Override + protected int getMetricsActionKey() { + return SettingsEnums.ACTION_SET_TEMPERATURE_UNIT; + } } diff --git a/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java b/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java index 31b8e794480..5ac367e35b2 100644 --- a/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java @@ -19,12 +19,14 @@ package com.android.settings.localepicker; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.verify; +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.Looper; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.widget.FooterPreference; import org.junit.Before; @@ -37,6 +39,7 @@ import org.mockito.MockitoAnnotations; public class LocaleHelperPreferenceControllerTest { private Context mContext; private LocaleHelperPreferenceController mLocaleHelperPreferenceController; + private FakeFeatureFactory mFeatureFactory; @Mock private FooterPreference mMockFooterPreference; @@ -49,11 +52,16 @@ public class LocaleHelperPreferenceControllerTest { } mContext = ApplicationProvider.getApplicationContext(); mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext); + mFeatureFactory = FakeFeatureFactory.setupForTest(); } @Test public void updateFooterPreference_setFooterPreference_hasClickAction() { mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference); verify(mMockFooterPreference).setLearnMoreText(anyString()); + mMockFooterPreference.setLearnMoreAction(v -> { + verify(mFeatureFactory.metricsFeatureProvider).action( + mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE); + }); } }