Add metrics for region change dialog

1. ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED
2. ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_POSITIVE_BTN_CLICKED
3. ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED
4. ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_NEGATIVE_BTN_CLICKED

Bug: 389568296
Test: manual
Flag: EXEMPT bugfix
Change-Id: Ic6739c8ec31f8027d6879b584cd92a748d5c7f12
This commit is contained in:
danielwbhuang
2025-03-20 22:11:51 +08:00
parent 2f63c57042
commit 3796245d45
3 changed files with 42 additions and 17 deletions

View File

@@ -18,6 +18,14 @@ package com.android.settings.localepicker;
import static android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT; import static android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT;
import static com.android.settings.regionalpreferences.RegionDialogFragment.ARG_CALLING_PAGE;
import static com.android.settings.regionalpreferences.RegionDialogFragment.CALLING_PAGE_LANGUAGE_CHOOSE_A_REGION;
import static com.android.settings.regionalpreferences.RegionDialogFragment.DIALOG_CHANGE_SYSTEM_LOCALE_REGION;
import static com.android.settings.regionalpreferences.RegionDialogFragment.DIALOG_CHANGE_PREFERRED_LOCALE_REGION;
import static com.android.settings.regionalpreferences.RegionDialogFragment.ARG_DIALOG_TYPE;
import static com.android.settings.regionalpreferences.RegionDialogFragment.ARG_TARGET_LOCALE;
import static com.android.settings.regionalpreferences.RegionDialogFragment.ARG_REPLACED_TARGET_LOCALE;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
@@ -50,11 +58,6 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity
private static final String TAG = LocalePickerWithRegionActivity.class.getSimpleName(); private static final String TAG = LocalePickerWithRegionActivity.class.getSimpleName();
private static final String PARENT_FRAGMENT_NAME = "localeListEditor"; private static final String PARENT_FRAGMENT_NAME = "localeListEditor";
private static final String CHILD_FRAGMENT_NAME = "LocalePickerWithRegion"; private static final String CHILD_FRAGMENT_NAME = "LocalePickerWithRegion";
private static final int DIALOG_CHANGE_SYSTEM_LOCALE_REGION = 1;
private static final int DIALOG_CHANGE_PREFERRED_LOCALE_REGION = 2;
private static final String ARG_DIALOG_TYPE = "arg_dialog_type";
private static final String ARG_TARGET_LOCALE = "arg_target_locale";
private static final String ARG_REPLACED_TARGET_LOCALE = "arg_replaced_target_locale";
private static final String TAG_DIALOG_CHANGE_REGION = "dialog_change_region"; private static final String TAG_DIALOG_CHANGE_REGION = "dialog_change_region";
private static final int DISPOSE = -1; private static final int DISPOSE = -1;
private static final int SHOW_DIALOG_FOR_SYSTEM_LANGUAGE = 0; private static final int SHOW_DIALOG_FOR_SYSTEM_LANGUAGE = 0;
@@ -139,6 +142,7 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity
LocaleStore.LocaleInfo locale, FragmentManager fragmentManager) { LocaleStore.LocaleInfo locale, FragmentManager fragmentManager) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(ARG_DIALOG_TYPE, DIALOG_CHANGE_SYSTEM_LOCALE_REGION); args.putInt(ARG_DIALOG_TYPE, DIALOG_CHANGE_SYSTEM_LOCALE_REGION);
args.putInt(ARG_CALLING_PAGE, CALLING_PAGE_LANGUAGE_CHOOSE_A_REGION);
args.putSerializable(ARG_TARGET_LOCALE, locale); args.putSerializable(ARG_TARGET_LOCALE, locale);
RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance();
regionDialogFragment.setArguments(args); regionDialogFragment.setArguments(args);
@@ -149,6 +153,7 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity
LocaleStore.LocaleInfo locale, Locale replacedLocale, FragmentManager fragmentManager) { LocaleStore.LocaleInfo locale, Locale replacedLocale, FragmentManager fragmentManager) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(ARG_DIALOG_TYPE, DIALOG_CHANGE_PREFERRED_LOCALE_REGION); args.putInt(ARG_DIALOG_TYPE, DIALOG_CHANGE_PREFERRED_LOCALE_REGION);
args.putInt(ARG_CALLING_PAGE, CALLING_PAGE_LANGUAGE_CHOOSE_A_REGION);
args.putSerializable(ARG_TARGET_LOCALE, locale); args.putSerializable(ARG_TARGET_LOCALE, locale);
args.putSerializable(ARG_REPLACED_TARGET_LOCALE, replacedLocale); args.putSerializable(ARG_REPLACED_TARGET_LOCALE, replacedLocale);
RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance();

View File

@@ -16,8 +16,13 @@
package com.android.settings.regionalpreferences; package com.android.settings.regionalpreferences;
import static android.app.settings.SettingsEnums.ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_POSITIVE_BTN_CLICKED;
import static android.app.settings.SettingsEnums.ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_NEGATIVE_BTN_CLICKED;
import static android.app.settings.SettingsEnums.ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED;
import static android.app.settings.SettingsEnums.ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED;
import static android.app.settings.SettingsEnums.CHANGE_REGION_DIALOG;
import android.app.Dialog; import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
@@ -46,12 +51,17 @@ import java.util.Set;
* Create a dialog for system region events. * Create a dialog for system region events.
*/ */
public class RegionDialogFragment extends InstrumentedDialogFragment { public class RegionDialogFragment extends InstrumentedDialogFragment {
public static final String ARG_CALLING_PAGE = "arg_calling_page";
public static final int CALLING_PAGE_LANGUAGE_CHOOSE_A_REGION = 0;
public static final int CALLING_PAGE_REGIONAL_PREFERENCES_REGION_PICKER = 1;
public static final int DIALOG_CHANGE_SYSTEM_LOCALE_REGION = 1;
public static final int DIALOG_CHANGE_PREFERRED_LOCALE_REGION = 2;
public static final String ARG_DIALOG_TYPE = "arg_dialog_type";
public static final String ARG_TARGET_LOCALE = "arg_target_locale";
public static final String ARG_REPLACED_TARGET_LOCALE = "arg_replaced_target_locale";
private static final String TAG = "RegionDialogFragment"; private static final String TAG = "RegionDialogFragment";
static final int DIALOG_CHANGE_SYSTEM_LOCALE_REGION = 1;
static final int DIALOG_CHANGE_PREFERRED_LOCALE_REGION = 2;
static final String ARG_DIALOG_TYPE = "arg_dialog_type";
static final String ARG_TARGET_LOCALE = "arg_target_locale";
static final String ARG_REPLACED_TARGET_LOCALE = "arg_replaced_target_locale";
/** /**
* Use this factory method to create a new instance of * Use this factory method to create a new instance of
@@ -66,7 +76,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment {
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
return SettingsEnums.CHANGE_REGION_DIALOG; return CHANGE_REGION_DIALOG;
} }
@NonNull @NonNull
@@ -114,6 +124,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment {
class RegionDialogController implements DialogInterface.OnClickListener { class RegionDialogController implements DialogInterface.OnClickListener {
private final Context mContext; private final Context mContext;
private final int mDialogType; private final int mDialogType;
private final int mCallingPage;
private final LocaleStore.LocaleInfo mLocaleInfo; private final LocaleStore.LocaleInfo mLocaleInfo;
private final Locale mReplacedLocale; private final Locale mReplacedLocale;
private final MetricsFeatureProvider mMetricsFeatureProvider; private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -123,6 +134,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment {
mContext = context; mContext = context;
Bundle arguments = dialogFragment.getArguments(); Bundle arguments = dialogFragment.getArguments();
mDialogType = arguments.getInt(ARG_DIALOG_TYPE); mDialogType = arguments.getInt(ARG_DIALOG_TYPE);
mCallingPage = arguments.getInt(ARG_CALLING_PAGE);
mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(ARG_TARGET_LOCALE); mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(ARG_TARGET_LOCALE);
mReplacedLocale = (Locale) arguments.getSerializable(ARG_REPLACED_TARGET_LOCALE); mReplacedLocale = (Locale) arguments.getSerializable(ARG_REPLACED_TARGET_LOCALE);
mMetricsFeatureProvider = mMetricsFeatureProvider =
@@ -137,8 +149,10 @@ public class RegionDialogFragment extends InstrumentedDialogFragment {
updateRegion(mLocaleInfo.getLocale().toLanguageTag()); updateRegion(mLocaleInfo.getLocale().toLanguageTag());
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(
mContext, mContext,
SettingsEnums.ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED); mDialogType == DIALOG_CHANGE_SYSTEM_LOCALE_REGION
// TODO: add new metrics for DIALOG_CHANGE_PREFERRED_LOCALE_REGION ? ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED
: ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_POSITIVE_BTN_CLICKED,
mCallingPage);
dismiss(); dismiss();
if (getActivity() != null) { if (getActivity() != null) {
getActivity().finish(); getActivity().finish();
@@ -146,8 +160,10 @@ public class RegionDialogFragment extends InstrumentedDialogFragment {
} else { } else {
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(
mContext, mContext,
SettingsEnums.ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED); mDialogType == DIALOG_CHANGE_SYSTEM_LOCALE_REGION
// TODO: add new metrics for DIALOG_CHANGE_PREFERRED_LOCALE_REGION ? ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED
: ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_NEGATIVE_BTN_CLICKED,
mCallingPage);
dismiss(); dismiss();
} }
} }

View File

@@ -167,8 +167,12 @@ public abstract class RegionPickerBaseListPreferenceController extends BasePrefe
mFragmentManager = mParent.getChildFragmentManager(); mFragmentManager = mParent.getChildFragmentManager();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(RegionDialogFragment.ARG_DIALOG_TYPE, args.putInt(
RegionDialogFragment.ARG_DIALOG_TYPE,
RegionDialogFragment.DIALOG_CHANGE_SYSTEM_LOCALE_REGION); RegionDialogFragment.DIALOG_CHANGE_SYSTEM_LOCALE_REGION);
args.putInt(
RegionDialogFragment.ARG_CALLING_PAGE,
RegionDialogFragment.CALLING_PAGE_REGIONAL_PREFERENCES_REGION_PICKER);
args.putSerializable(RegionDialogFragment.ARG_TARGET_LOCALE, localeInfo); args.putSerializable(RegionDialogFragment.ARG_TARGET_LOCALE, localeInfo);
RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance();
regionDialogFragment.setArguments(args); regionDialogFragment.setArguments(args);