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