From 4be105e9f46567bfde1f0903e4a212fcf21d5c54 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Wed, 8 Feb 2017 12:52:48 -0800 Subject: [PATCH] Checke radio on default app screen if there's 1 option only Change-Id: Ib091eb033ce541dc6a6d97ef45a15a5eb957e405 Fix: 34746591 Test: make RunSettingsRoboTests -j40 --- .../defaultapps/DefaultAppPickerFragment.java | 13 +++++++++++++ .../defaultapps/DefaultAppPickerFragmentTest.java | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java index b322dab2579..7e3b676a4bc 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java +++ b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java @@ -126,6 +126,7 @@ public abstract class DefaultAppPickerFragment extends InstrumentedPreferenceFra pref.setOnClickListener(this); screen.addPreference(pref); } + mayCheckOnlyRadioButton(); } @Override @@ -163,6 +164,18 @@ public abstract class DefaultAppPickerFragment extends InstrumentedPreferenceFra } } + @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + void mayCheckOnlyRadioButton() { + final PreferenceScreen screen = getPreferenceScreen(); + // If there is only 1 thing on screen, select it. + if (screen != null && screen.getPreferenceCount() == 1) { + final Preference onlyPref = screen.getPreference(0); + if (onlyPref instanceof RadioButtonPreference) { + ((RadioButtonPreference) onlyPref).setChecked(true); + } + } + } + protected boolean shouldShowItemNone() { return false; } diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java index 4f560c99ef2..6c44bd51da7 100644 --- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java +++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java @@ -106,6 +106,18 @@ public class DefaultAppPickerFragmentTest { mFragment.onRadioButtonClicked(pref); } + @Test + public void displaySingleOption_shouldSelectRadioButton() { + final RadioButtonPreference pref = + new RadioButtonPreference(RuntimeEnvironment.application); + when(mScreen.getPreferenceCount()).thenReturn(1); + when(mScreen.getPreference(0)).thenReturn(pref); + + mFragment.mayCheckOnlyRadioButton(); + + assertThat(pref.isChecked()).isTrue(); + } + public static class TestFragment extends DefaultAppPickerFragment { boolean setDefaultAppKeyCalled;