[Settings] UI part: Add metrics for language

Bug: 279915462
Test: atest
Change-Id: Ie13c57b2b398beb48dfe0ac289ec336483575445
This commit is contained in:
Zoey Chen
2023-04-24 12:26:04 +00:00
parent 2b44fc26d1
commit cfaa13442c
4 changed files with 31 additions and 0 deletions

View File

@@ -37,6 +37,8 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment; import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** /**
* Create a dialog for system locale events. * Create a dialog for system locale events.
@@ -143,6 +145,7 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
private final int mDialogType; private final int mDialogType;
private final LocaleStore.LocaleInfo mLocaleInfo; private final LocaleStore.LocaleInfo mLocaleInfo;
private final ResultReceiver mResultReceiver; private final ResultReceiver mResultReceiver;
private final MetricsFeatureProvider mMetricsFeatureProvider;
LocaleDialogController( LocaleDialogController(
@NonNull Context context, @NonNull LocaleDialogFragment dialogFragment) { @NonNull Context context, @NonNull LocaleDialogFragment dialogFragment) {
@@ -152,6 +155,8 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable( mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(
ARG_TARGET_LOCALE); ARG_TARGET_LOCALE);
mResultReceiver = (ResultReceiver) arguments.getParcelable(ARG_RESULT_RECEIVER); mResultReceiver = (ResultReceiver) arguments.getParcelable(ARG_RESULT_RECEIVER);
mMetricsFeatureProvider = FeatureFactory.getFactory(
mContext).getMetricsFeatureProvider();
} }
LocaleDialogController(@NonNull LocaleDialogFragment dialogFragment) { LocaleDialogController(@NonNull LocaleDialogFragment dialogFragment) {
@@ -163,11 +168,15 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
if (mResultReceiver != null && mDialogType == DIALOG_CONFIRM_SYSTEM_DEFAULT) { if (mResultReceiver != null && mDialogType == DIALOG_CONFIRM_SYSTEM_DEFAULT) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt(ARG_DIALOG_TYPE, DIALOG_CONFIRM_SYSTEM_DEFAULT); bundle.putInt(ARG_DIALOG_TYPE, DIALOG_CONFIRM_SYSTEM_DEFAULT);
boolean changed = false;
if (which == DialogInterface.BUTTON_POSITIVE) { if (which == DialogInterface.BUTTON_POSITIVE) {
changed = true;
mResultReceiver.send(Activity.RESULT_OK, bundle); mResultReceiver.send(Activity.RESULT_OK, bundle);
} else if (which == DialogInterface.BUTTON_NEGATIVE) { } else if (which == DialogInterface.BUTTON_NEGATIVE) {
mResultReceiver.send(Activity.RESULT_CANCELED, bundle); mResultReceiver.send(Activity.RESULT_CANCELED, bundle);
} }
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_CHANGE_LANGUAGE, changed);
} }
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.localepicker; package com.android.settings.localepicker;
import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log; import android.util.Log;
@@ -24,8 +25,10 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.HelpUtils; import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.FooterPreference; 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 static final String KEY_FOOTER_LANGUAGE_PICKER = "footer_languages_picker";
private final MetricsFeatureProvider mMetricsFeatureProvider;
public LocaleHelperPreferenceController(Context context) { public LocaleHelperPreferenceController(Context context) {
super(context); super(context);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
} }
@Override @Override
@@ -72,6 +78,7 @@ public class LocaleHelperPreferenceController extends AbstractPreferenceControll
mContext.getString(R.string.link_locale_picker_footer_learn_more), mContext.getString(R.string.link_locale_picker_footer_learn_more),
mContext.getClass().getName()); mContext.getClass().getName());
if (intent != null) { if (intent != null) {
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE);
mContext.startActivity(intent); mContext.startActivity(intent);
} else { } else {
Log.w(TAG, "HelpIntent is null"); Log.w(TAG, "HelpIntent is null");

View File

@@ -38,6 +38,7 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import com.android.internal.app.LocaleStore; import com.android.internal.app.LocaleStore;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.ResourcesUtils; import com.android.settings.testutils.ResourcesUtils;
import org.junit.Before; import org.junit.Before;
@@ -55,11 +56,13 @@ public class LocaleDialogFragmentTest {
private Context mContext; private Context mContext;
private LocaleDialogFragment mDialogFragment; private LocaleDialogFragment mDialogFragment;
private FakeFeatureFactory mFeatureFactory;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
mContext = ApplicationProvider.getApplicationContext(); mContext = ApplicationProvider.getApplicationContext();
mDialogFragment = new LocaleDialogFragment(); mDialogFragment = new LocaleDialogFragment();
mFeatureFactory = FakeFeatureFactory.setupForTest();
} }
private void setArgument( private void setArgument(
@@ -112,6 +115,8 @@ public class LocaleDialogFragmentTest {
controller.onClick(null, DialogInterface.BUTTON_POSITIVE); controller.onClick(null, DialogInterface.BUTTON_POSITIVE);
verify(resultReceiver).send(eq(Activity.RESULT_OK), any()); verify(resultReceiver).send(eq(Activity.RESULT_OK), any());
verify(mFeatureFactory.metricsFeatureProvider).action(
mContext, SettingsEnums.ACTION_CHANGE_LANGUAGE, true);
} }
@Test @Test
@@ -124,6 +129,8 @@ public class LocaleDialogFragmentTest {
controller.onClick(null, DialogInterface.BUTTON_NEGATIVE); controller.onClick(null, DialogInterface.BUTTON_NEGATIVE);
verify(resultReceiver).send(eq(Activity.RESULT_CANCELED), any()); verify(resultReceiver).send(eq(Activity.RESULT_CANCELED), any());
verify(mFeatureFactory.metricsFeatureProvider).action(
mContext, SettingsEnums.ACTION_CHANGE_LANGUAGE, false);
} }
@Test @Test

View File

@@ -19,12 +19,14 @@ package com.android.settings.localepicker;
import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.os.Looper; import android.os.Looper;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreference;
import org.junit.Before; import org.junit.Before;
@@ -37,6 +39,7 @@ import org.mockito.MockitoAnnotations;
public class LocaleHelperPreferenceControllerTest { public class LocaleHelperPreferenceControllerTest {
private Context mContext; private Context mContext;
private LocaleHelperPreferenceController mLocaleHelperPreferenceController; private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
private FakeFeatureFactory mFeatureFactory;
@Mock @Mock
private FooterPreference mMockFooterPreference; private FooterPreference mMockFooterPreference;
@@ -49,11 +52,16 @@ public class LocaleHelperPreferenceControllerTest {
} }
mContext = ApplicationProvider.getApplicationContext(); mContext = ApplicationProvider.getApplicationContext();
mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext); mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext);
mFeatureFactory = FakeFeatureFactory.setupForTest();
} }
@Test @Test
public void updateFooterPreference_setFooterPreference_hasClickAction() { public void updateFooterPreference_setFooterPreference_hasClickAction() {
mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference); mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference);
verify(mMockFooterPreference).setLearnMoreText(anyString()); verify(mMockFooterPreference).setLearnMoreText(anyString());
mMockFooterPreference.setLearnMoreAction(v -> {
verify(mFeatureFactory.metricsFeatureProvider).action(
mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE);
});
} }
} }