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
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index 3e062c8..c54d138 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -253,11 +253,7 @@
@VisibleForTesting
static CharSequence getSubtitleText(Context context, AbstractPreferenceController controller,
SliceData sliceData) {
- CharSequence summaryText = sliceData.getSummary();
- if (isValidSummary(context, summaryText)) {
- return summaryText;
- }
-
+ CharSequence summaryText;
if (controller != null) {
summaryText = controller.getSummary();
@@ -266,7 +262,12 @@
}
}
- return sliceData.getScreenTitle();
+ summaryText = sliceData.getSummary();
+ if (isValidSummary(context, summaryText)) {
+ return summaryText;
+ }
+
+ return "";
}
private static boolean isValidSummary(Context context, CharSequence summary) {
diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
index df6be44..1f3f40f 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
@@ -188,26 +188,25 @@
}
@Test
- public void testDynamicSummary_returnsSliceScreenTitle() {
+ public void testDynamicSummary_returnsSliceEmptyString() {
final SliceData data = getDummyData((String) null);
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
-
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
- assertThat(summary).isEqualTo(data.getScreenTitle());
+ assertThat(summary).isEqualTo("");
}
@Test
- public void testDynamicSummary_placeHolderString_returnsScreenTitle() {
+ public void testDynamicSummary_placeHolderString_returnsEmptyString() {
final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder));
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
- assertThat(summary).isEqualTo(data.getScreenTitle());
+ assertThat(summary).isEqualTo("");
}
@Test
- public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceScreenTitle() {
+ public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceEmptyString() {
final String summaryPlaceholder = mContext.getString(R.string.summary_placeholder);
final SliceData data = getDummyData(summaryPlaceholder);
final FakePreferenceController controller = spy(
@@ -216,7 +215,19 @@
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