Merge " [Settings] UI part: Add metrics for numbers preferences" into udc-dev

This commit is contained in:
Zoey Chen
2023-04-25 03:00:20 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 6 deletions

View File

@@ -34,18 +34,22 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.Locale;
/** Uses to control the preference UI of numbering system page. */
public class NumberingSystemItemController extends BasePreferenceController {
private static final String TAG = NumberingSystemItemController.class.getSimpleName();
private static final String DISPLAY_KEYWORD_NUMBERING_SYSTEM = "numbers";
static final String ARG_VALUE_NUMBERING_SYSTEM_SELECT = "arg_value_numbering_system_select";
static final String ARG_VALUE_LANGUAGE_SELECT = "arg_value_language_select";
static final String KEY_SELECTED_LANGUAGE = "key_selected_language";
private static final String DISPLAY_KEYWORD_NUMBERING_SYSTEM = "numbers";
private final MetricsFeatureProvider mMetricsFeatureProvider;
private String mOption = "";
private String mSelectedLanguage = "";
@@ -60,6 +64,7 @@ public class NumberingSystemItemController extends BasePreferenceController {
RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE, "");
mSelectedLanguage = argument.getString(
NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "");
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
}
/**
@@ -146,10 +151,13 @@ public class NumberingSystemItemController extends BasePreferenceController {
}
private void handleLanguageSelect(Preference preference) {
String selectedLanguage = preference.getKey();
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES, selectedLanguage);
final Bundle extra = new Bundle();
extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
ARG_VALUE_NUMBERING_SYSTEM_SELECT);
extra.putString(KEY_SELECTED_LANGUAGE, preference.getKey());
extra.putString(KEY_SELECTED_LANGUAGE, selectedLanguage);
new SubSettingLauncher(preference.getContext())
.setDestination(NumberingPreferencesFragment.class.getName())
.setSourceMetricsCategory(
@@ -163,13 +171,15 @@ public class NumberingSystemItemController extends BasePreferenceController {
TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
Log.i(TAG, "[onPreferenceClick] key is " + pref.getKey());
if (pref.getKey().equals(preference.getKey())) {
String numberingSystem = pref.getKey();
pref.setSelected(true);
Locale updatedLocale =
saveNumberingSystemToLocale(
Locale.forLanguageTag(mSelectedLanguage), pref.getKey());
saveNumberingSystemToLocale(Locale.forLanguageTag(mSelectedLanguage),
numberingSystem);
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_SET_NUMBERS_PREFERENCES, numberingSystem);
// After updated locale to framework, this fragment will recreate,
// so it need to update the argement of selected language.
// so it needs to update the argument of selected language.
Bundle bundle = new Bundle();
bundle.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
ARG_VALUE_NUMBERING_SYSTEM_SELECT);

View File

@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.os.LocaleList;
@@ -33,6 +34,7 @@ import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import org.junit.After;
@@ -47,6 +49,7 @@ public class NumberingSystemItemControllerTest {
private NumberingPreferencesFragment mFragment;
private PreferenceScreen mPreferenceScreen;
private LocaleList mCacheLocale;
private FakeFeatureFactory mFeatureFactory;
@Before
@UiThreadTest
@@ -55,6 +58,7 @@ public class NumberingSystemItemControllerTest {
Looper.prepare();
}
mApplicationContext = ApplicationProvider.getApplicationContext();
mFeatureFactory = FakeFeatureFactory.setupForTest();
mFragment = spy(new NumberingPreferencesFragment());
PreferenceManager preferenceManager = new PreferenceManager(mApplicationContext);
mPreferenceScreen = preferenceManager.createPreferenceScreen(mApplicationContext);
@@ -89,6 +93,10 @@ public class NumberingSystemItemControllerTest {
}
assertTrue(isCallingStartActivity);
verify(mFeatureFactory.metricsFeatureProvider).action(
mApplicationContext,
SettingsEnums.ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES,
"I_am_the_key");
}
@Test
@@ -109,6 +117,9 @@ public class NumberingSystemItemControllerTest {
mController.handlePreferenceTreeClick(preference);
verify(mFragment).setArguments(any());
verify(mFeatureFactory.metricsFeatureProvider).action(
mApplicationContext, SettingsEnums.ACTION_SET_NUMBERS_PREFERENCES,
"test_key");
}
@Test