[Panlingual]Log metrics for App's locale from the suggested

Bug: 258128535
Test: atest AppLocalePickerActivityTest
Change-Id: I007c0e76d8b88f08518ba2696d42bd1db194f5b7
Merged-In: I007c0e76d8b88f08518ba2696d42bd1db194f5b7
This commit is contained in:
Allen Su
2023-04-26 07:27:43 +00:00
parent 0df79b1ccc
commit c871c5654d
2 changed files with 75 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ package com.android.settings.localepicker;
import android.app.FragmentTransaction;
import android.app.LocaleManager;
import android.app.settings.SettingsEnums;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
@@ -37,15 +38,22 @@ import com.android.settings.R;
import com.android.settings.applications.AppLocaleUtil;
import com.android.settings.applications.appinfo.AppLocaleDetails;
import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class AppLocalePickerActivity extends SettingsBaseActivity
implements LocalePickerWithRegion.LocaleSelectedListener, MenuItem.OnActionExpandListener {
private static final String TAG = AppLocalePickerActivity.class.getSimpleName();
private static final int SIM_LOCALE = 1 << 0;
private static final int SYSTEM_LOCALE = 1 << 1;
private static final int APP_LOCALE = 1 << 2;
private static final int IME_LOCALE = 1 << 3;
private String mPackageName;
private LocalePickerWithRegion mLocalePickerWithRegion;
private AppLocaleDetails mAppLocaleDetails;
private View mAppLocaleDetailContainer;
private MetricsFeatureProvider mMetricsFeatureProvider;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -71,6 +79,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
setTitle(R.string.app_locale_picker_title);
getActionBar().setDisplayHomeAsUpEnabled(true);
mMetricsFeatureProvider = FeatureFactory.getFactory(this).getMetricsFeatureProvider();
mLocalePickerWithRegion = LocalePickerWithRegion.createLanguagePicker(
this,
@@ -99,6 +108,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
if (localeInfo == null || localeInfo.getLocale() == null || localeInfo.isSystemLocale()) {
setAppDefaultLocale("");
} else {
logLocaleSource(localeInfo);
setAppDefaultLocale(localeInfo.getLocale().toLanguageTag());
}
finish();
@@ -177,4 +187,32 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
return false;
}
private void logLocaleSource(LocaleStore.LocaleInfo localeInfo) {
if (!localeInfo.isSuggested() || localeInfo.isAppCurrentLocale()) {
return;
}
int localeSource = 0;
if (hasSuggestionType(localeInfo,
LocaleStore.LocaleInfo.SUGGESTION_TYPE_SYSTEM_AVAILABLE_LANGUAGE)) {
localeSource |= SYSTEM_LOCALE;
}
if (hasSuggestionType(localeInfo,
LocaleStore.LocaleInfo.SUGGESTION_TYPE_OTHER_APP_LANGUAGE)) {
localeSource |= APP_LOCALE;
}
if (hasSuggestionType(localeInfo, LocaleStore.LocaleInfo.SUGGESTION_TYPE_IME_LANGUAGE)) {
localeSource |= IME_LOCALE;
}
if (hasSuggestionType(localeInfo, LocaleStore.LocaleInfo.SUGGESTION_TYPE_SIM)) {
localeSource |= SIM_LOCALE;
}
mMetricsFeatureProvider.action(this,
SettingsEnums.ACTION_CHANGE_APP_LANGUAGE_FROM_SUGGESTED, localeSource);
}
private static boolean hasSuggestionType(LocaleStore.LocaleInfo localeInfo,
int suggestionType) {
return localeInfo.isSuggestionOfType(suggestionType);
}
}