Skip "null" string when building advanced button summary

- Also added help string to SoundSettings as a side fix.

Change-Id: Ia81a46c6e199b72b52ae1fa9d996c094193b506c
Fix: 37933524
Test: robotests
This commit is contained in:
Fan Zhang
2017-05-03 10:26:23 -07:00
parent 833927929e
commit 540023608d
3 changed files with 32 additions and 9 deletions

View File

@@ -231,7 +231,7 @@ public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickL
/** /**
* Add preference to collapsed list. * Add preference to collapsed list.
*/ */
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) @VisibleForTesting
void addToCollapsedList(Preference preference) { void addToCollapsedList(Preference preference) {
// Insert preference based on it's order. // Insert preference based on it's order.
int insertionIndex = Collections.binarySearch(mCollapsedPrefs, preference); int insertionIndex = Collections.binarySearch(mCollapsedPrefs, preference);
@@ -242,12 +242,12 @@ public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickL
updateExpandButtonSummary(); updateExpandButtonSummary();
} }
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) @VisibleForTesting
List<Preference> getCollapsedPrefs() { List<Preference> getCollapsedPrefs() {
return mCollapsedPrefs; return mCollapsedPrefs;
} }
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) @VisibleForTesting
void updateExpandButtonSummary() { void updateExpandButtonSummary() {
final int size = mCollapsedPrefs.size(); final int size = mCollapsedPrefs.size();
if (size == 0) { if (size == 0) {
@@ -257,8 +257,11 @@ public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickL
} else { } else {
CharSequence summary = mCollapsedPrefs.get(0).getTitle(); CharSequence summary = mCollapsedPrefs.get(0).getTitle();
for (int i = 1; i < size; i++) { for (int i = 1; i < size; i++) {
summary = mContext.getString(R.string.join_many_items_middle, summary, final CharSequence nextSummary = mCollapsedPrefs.get(i).getTitle();
mCollapsedPrefs.get(i).getTitle()); if (!TextUtils.isEmpty(nextSummary)) {
summary = mContext.getString(R.string.join_many_items_middle, summary,
nextSummary);
}
} }
mExpandButton.setSummary(summary); mExpandButton.setSummary(summary);
} }

View File

@@ -75,6 +75,11 @@ public class SoundSettings extends DashboardFragment {
} }
} }
@Override
protected int getHelpResource() {
return R.string.help_url_sound;
}
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();

View File

@@ -25,7 +25,6 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before; import org.junit.Before;
@@ -58,8 +57,6 @@ public class ProgressiveDisclosureTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext; private Context mContext;
@Mock
private FakeFeatureFactory mFakeFeatureFactory;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PreferenceFragment mPreferenceFragment; private PreferenceFragment mPreferenceFragment;
@Mock @Mock
@@ -75,7 +72,6 @@ public class ProgressiveDisclosureTest {
FakeFeatureFactory.setupForTest(mContext); FakeFeatureFactory.setupForTest(mContext);
mScreen = mPreferenceFragment.getPreferenceScreen(); mScreen = mPreferenceFragment.getPreferenceScreen();
mAppContext = ShadowApplication.getInstance().getApplicationContext(); mAppContext = ShadowApplication.getInstance().getApplicationContext();
mFakeFeatureFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext);
mMixin = new ProgressiveDisclosureMixin(mAppContext, mMixin = new ProgressiveDisclosureMixin(mAppContext,
mPreferenceFragment, false /* keepExpanded */); mPreferenceFragment, false /* keepExpanded */);
ReflectionHelpers.setField(mMixin, "mExpandButton", mExpandButton); ReflectionHelpers.setField(mMixin, "mExpandButton", mExpandButton);
@@ -314,6 +310,25 @@ public class ProgressiveDisclosureTest {
verify(mExpandButton).setSummary(null); verify(mExpandButton).setSummary(null);
} }
@Test
public void updateExpandSummary_doNotIncludeEmptyPrefTitle() {
final Preference pref1 = new Preference(mAppContext);
pref1.setTitle("1");
final Preference pref2 = new Preference(mAppContext);
pref2.setTitle(null);
final Preference pref3 = new Preference(mAppContext);
pref3.setTitle("3");
final Preference pref4 = new Preference(mAppContext);
pref4.setTitle("");
mMixin.addToCollapsedList(pref1);
mMixin.addToCollapsedList(pref2);
mMixin.addToCollapsedList(pref3);
mMixin.addToCollapsedList(pref4);
verify(mExpandButton).setSummary("1, 3");
}
@Test @Test
public void updateExapndSummary_singlePref_expandSummarySameAsPrefTitle() { public void updateExapndSummary_singlePref_expandSummarySameAsPrefTitle() {
final String TEST = "test"; final String TEST = "test";