Prioritize dynamic summaries

If both Xml and a controller provide a summary,
the controller's should be prioritized.

Change-Id: I030746b0f253ce4884a7868e385069b208f63082
Fixes: 77602860
Test: robotests
This commit is contained in:
Matthew Fritze
2018-04-04 16:58:56 -07:00
parent 66e6e637a4
commit 8db4358f76
2 changed files with 25 additions and 13 deletions

View File

@@ -253,11 +253,7 @@ public class SliceBuilderUtils {
@VisibleForTesting @VisibleForTesting
static CharSequence getSubtitleText(Context context, AbstractPreferenceController controller, static CharSequence getSubtitleText(Context context, AbstractPreferenceController controller,
SliceData sliceData) { SliceData sliceData) {
CharSequence summaryText = sliceData.getSummary(); CharSequence summaryText;
if (isValidSummary(context, summaryText)) {
return summaryText;
}
if (controller != null) { if (controller != null) {
summaryText = controller.getSummary(); summaryText = controller.getSummary();
@@ -266,7 +262,12 @@ public class SliceBuilderUtils {
} }
} }
return sliceData.getScreenTitle(); summaryText = sliceData.getSummary();
if (isValidSummary(context, summaryText)) {
return summaryText;
}
return "";
} }
private static boolean isValidSummary(Context context, CharSequence summary) { private static boolean isValidSummary(Context context, CharSequence summary) {

View File

@@ -188,26 +188,25 @@ public class SliceBuilderUtilsTest {
} }
@Test @Test
public void testDynamicSummary_returnsSliceScreenTitle() { public void testDynamicSummary_returnsSliceEmptyString() {
final SliceData data = getDummyData((String) null); final SliceData data = getDummyData((String) null);
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY); final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(data.getScreenTitle()); assertThat(summary).isEqualTo("");
} }
@Test @Test
public void testDynamicSummary_placeHolderString_returnsScreenTitle() { public void testDynamicSummary_placeHolderString_returnsEmptyString() {
final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder)); final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder));
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY); final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(data.getScreenTitle()); assertThat(summary).isEqualTo("");
} }
@Test @Test
public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceScreenTitle() { public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceEmptyString() {
final String summaryPlaceholder = mContext.getString(R.string.summary_placeholder); final String summaryPlaceholder = mContext.getString(R.string.summary_placeholder);
final SliceData data = getDummyData(summaryPlaceholder); final SliceData data = getDummyData(summaryPlaceholder);
final FakePreferenceController controller = spy( final FakePreferenceController controller = spy(
@@ -216,7 +215,19 @@ public class SliceBuilderUtilsTest {
CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(data.getScreenTitle()); assertThat(summary).isEqualTo("");
}
@Test
public void summaryText_bothDynamicAndStaticSummary_dynamicSummaryReturned() {
SliceData data = getDummyData("bad_summary");
FakePreferenceController controller = spy(new FakePreferenceController(mContext, KEY));
String controllerSummary = "new_Summary";
doReturn(controllerSummary).when(controller).getSummary();
CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(controllerSummary);
} }
@Test @Test