Merge "[Settings] UI part: Add metrics for language" into udc-dev am: bd9263b391 am: 39b150171b

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22788844

Change-Id: Id2f4e945fc893315f15f4f58e0f114187b5edb19
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tom Hsu
2023-04-28 04:06:24 +00:00
committed by Automerger Merge Worker
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.RestrictedSettingsFragment;
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.
@@ -143,6 +145,7 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
private final int mDialogType;
private final LocaleStore.LocaleInfo mLocaleInfo;
private final ResultReceiver mResultReceiver;
private final MetricsFeatureProvider mMetricsFeatureProvider;
LocaleDialogController(
@NonNull Context context, @NonNull LocaleDialogFragment dialogFragment) {
@@ -152,6 +155,8 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(
ARG_TARGET_LOCALE);
mResultReceiver = (ResultReceiver) arguments.getParcelable(ARG_RESULT_RECEIVER);
mMetricsFeatureProvider = FeatureFactory.getFactory(
mContext).getMetricsFeatureProvider();
}
LocaleDialogController(@NonNull LocaleDialogFragment dialogFragment) {
@@ -163,11 +168,15 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
if (mResultReceiver != null && mDialogType == DIALOG_CONFIRM_SYSTEM_DEFAULT) {
Bundle bundle = new Bundle();
bundle.putInt(ARG_DIALOG_TYPE, DIALOG_CONFIRM_SYSTEM_DEFAULT);
boolean changed = false;
if (which == DialogInterface.BUTTON_POSITIVE) {
changed = true;
mResultReceiver.send(Activity.RESULT_OK, bundle);
} else if (which == DialogInterface.BUTTON_NEGATIVE) {
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;
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.getFactory(context).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");

View File

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

View File

@@ -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);
});
}
}