Add locale souce metrics

Bug: 284094665
Test: atest SettingsRoboTests:com.android.settings.localepicker
Change-Id: I174e31fb185e859dd70b6277e23fab759c495e80
This commit is contained in:
Allen Su
2023-11-01 16:24:27 +00:00
parent 1dfa082592
commit 5604177818
2 changed files with 75 additions and 0 deletions

View File

@@ -18,6 +18,8 @@ package com.android.settings.localepicker;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
@@ -27,6 +29,7 @@ import static org.mockito.Mockito.when;
import android.app.Activity;
import android.app.ApplicationPackageManager;
import android.app.LocaleConfig;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -51,6 +54,7 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.AppLocaleUtil;
import com.android.settings.flags.Flags;
import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.After;
import org.junit.Before;
@@ -91,6 +95,7 @@ public class AppLocalePickerActivityTest {
private static final String EN_US = "en-US";
private static int sUid;
private FakeFeatureFactory mFeatureFactory;
private LocaleNotificationDataManager mDataManager;
private AppLocalePickerActivity mActivity;
@@ -117,6 +122,7 @@ public class AppLocalePickerActivityTest {
when(mLocaleConfig.getSupportedLocales()).thenReturn(LocaleList.forLanguageTags("en-US"));
ReflectionHelpers.setStaticField(AppLocaleUtil.class, "sLocaleConfig", mLocaleConfig);
sUid = Process.myUid();
mFeatureFactory = FakeFeatureFactory.setupForTest();
}
@After
@@ -228,6 +234,37 @@ public class AppLocalePickerActivityTest {
assertThat(controller.get().isFinishing()).isTrue();
}
@Test
public void onLocaleSelected_logLocaleSource() {
ActivityController<TestAppLocalePickerActivity> controller =
initActivityController(true);
LocaleList.setDefault(LocaleList.forLanguageTags("ja-JP,en-CA,en-US"));
Locale locale = new Locale("en", "US");
when(mLocaleInfo.getLocale()).thenReturn(locale);
when(mLocaleInfo.isSystemLocale()).thenReturn(false);
when(mLocaleInfo.isSuggested()).thenReturn(true);
when(mLocaleInfo.isSuggestionOfType(LocaleStore.LocaleInfo.SUGGESTION_TYPE_SIM)).thenReturn(
true);
when(mLocaleInfo.isSuggestionOfType(
LocaleStore.LocaleInfo.SUGGESTION_TYPE_SYSTEM_AVAILABLE_LANGUAGE)).thenReturn(
true);
when(mLocaleInfo.isSuggestionOfType(
LocaleStore.LocaleInfo.SUGGESTION_TYPE_OTHER_APP_LANGUAGE)).thenReturn(
true);
when(mLocaleInfo.isSuggestionOfType(
LocaleStore.LocaleInfo.SUGGESTION_TYPE_IME_LANGUAGE)).thenReturn(
true);
controller.create();
AppLocalePickerActivity mActivity = controller.get();
mActivity.onLocaleSelected(mLocaleInfo);
int localeSource = 15; // SIM_LOCALE | SYSTEM_LOCALE |IME_LOCALE|APP_LOCALE
verify(mFeatureFactory.metricsFeatureProvider).action(
any(), eq(SettingsEnums.ACTION_CHANGE_APP_LANGUAGE_FROM_SUGGESTED),
eq(localeSource));
}
@Test
@RequiresFlagsEnabled(Flags.FLAG_LOCALE_NOTIFICATION_ENABLED)
public void onLocaleSelected_evaluateNotification_simpleLocaleUpdate_localeCreatedWithUid()