From 3796245d4551c9806dd95a01ff0bbeb7da50dc22 Mon Sep 17 00:00:00 2001 From: danielwbhuang Date: Thu, 20 Mar 2025 22:11:51 +0800 Subject: [PATCH] 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 --- .../LocalePickerWithRegionActivity.java | 15 +++++--- .../RegionDialogFragment.java | 38 +++++++++++++------ ...ionPickerBaseListPreferenceController.java | 6 ++- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java index 9f67251e6bb..ab5017868a3 100644 --- a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java +++ b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java @@ -18,6 +18,14 @@ package com.android.settings.localepicker; 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.content.Intent; 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 PARENT_FRAGMENT_NAME = "localeListEditor"; 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 int DISPOSE = -1; private static final int SHOW_DIALOG_FOR_SYSTEM_LANGUAGE = 0; @@ -139,6 +142,7 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity LocaleStore.LocaleInfo locale, FragmentManager fragmentManager) { Bundle args = new Bundle(); 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); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); regionDialogFragment.setArguments(args); @@ -149,6 +153,7 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity LocaleStore.LocaleInfo locale, Locale replacedLocale, FragmentManager fragmentManager) { Bundle args = new Bundle(); 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_REPLACED_TARGET_LOCALE, replacedLocale); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); diff --git a/src/com/android/settings/regionalpreferences/RegionDialogFragment.java b/src/com/android/settings/regionalpreferences/RegionDialogFragment.java index aff85b59171..b0ff7399f46 100644 --- a/src/com/android/settings/regionalpreferences/RegionDialogFragment.java +++ b/src/com/android/settings/regionalpreferences/RegionDialogFragment.java @@ -16,8 +16,13 @@ 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.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; @@ -46,12 +51,17 @@ import java.util.Set; * Create a dialog for system region events. */ 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"; - 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 @@ -66,7 +76,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment { @Override public int getMetricsCategory() { - return SettingsEnums.CHANGE_REGION_DIALOG; + return CHANGE_REGION_DIALOG; } @NonNull @@ -114,6 +124,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment { class RegionDialogController implements DialogInterface.OnClickListener { private final Context mContext; private final int mDialogType; + private final int mCallingPage; private final LocaleStore.LocaleInfo mLocaleInfo; private final Locale mReplacedLocale; private final MetricsFeatureProvider mMetricsFeatureProvider; @@ -123,6 +134,7 @@ public class RegionDialogFragment extends InstrumentedDialogFragment { mContext = context; Bundle arguments = dialogFragment.getArguments(); mDialogType = arguments.getInt(ARG_DIALOG_TYPE); + mCallingPage = arguments.getInt(ARG_CALLING_PAGE); mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(ARG_TARGET_LOCALE); mReplacedLocale = (Locale) arguments.getSerializable(ARG_REPLACED_TARGET_LOCALE); mMetricsFeatureProvider = @@ -137,8 +149,10 @@ public class RegionDialogFragment extends InstrumentedDialogFragment { updateRegion(mLocaleInfo.getLocale().toLanguageTag()); mMetricsFeatureProvider.action( mContext, - SettingsEnums.ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED); - // TODO: add new metrics for DIALOG_CHANGE_PREFERRED_LOCALE_REGION + mDialogType == DIALOG_CHANGE_SYSTEM_LOCALE_REGION + ? ACTION_CHANGE_REGION_DIALOG_POSITIVE_BTN_CLICKED + : ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_POSITIVE_BTN_CLICKED, + mCallingPage); dismiss(); if (getActivity() != null) { getActivity().finish(); @@ -146,8 +160,10 @@ public class RegionDialogFragment extends InstrumentedDialogFragment { } else { mMetricsFeatureProvider.action( mContext, - SettingsEnums.ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED); - // TODO: add new metrics for DIALOG_CHANGE_PREFERRED_LOCALE_REGION + mDialogType == DIALOG_CHANGE_SYSTEM_LOCALE_REGION + ? ACTION_CHANGE_REGION_DIALOG_NEGATIVE_BTN_CLICKED + : ACTION_CHANGE_PREFERRED_LANGUAGE_REGION_NEGATIVE_BTN_CLICKED, + mCallingPage); dismiss(); } } diff --git a/src/com/android/settings/regionalpreferences/RegionPickerBaseListPreferenceController.java b/src/com/android/settings/regionalpreferences/RegionPickerBaseListPreferenceController.java index 5768421b11f..8385a7a4f05 100644 --- a/src/com/android/settings/regionalpreferences/RegionPickerBaseListPreferenceController.java +++ b/src/com/android/settings/regionalpreferences/RegionPickerBaseListPreferenceController.java @@ -167,8 +167,12 @@ public abstract class RegionPickerBaseListPreferenceController extends BasePrefe mFragmentManager = mParent.getChildFragmentManager(); Bundle args = new Bundle(); - args.putInt(RegionDialogFragment.ARG_DIALOG_TYPE, + args.putInt( + RegionDialogFragment.ARG_DIALOG_TYPE, 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); RegionDialogFragment regionDialogFragment = RegionDialogFragment.newInstance(); regionDialogFragment.setArguments(args);