diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index be2e8df63e1..06d071f70c1 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -190,7 +190,12 @@ public class SliceBuilderUtils { */ public static CharSequence getSubtitleText(Context context, AbstractPreferenceController controller, SliceData sliceData) { - CharSequence summaryText; + CharSequence summaryText = sliceData.getScreenTitle(); + if (isValidSummary(context, summaryText) && !TextUtils.equals(summaryText, + sliceData.getTitle())) { + return summaryText; + } + if (controller != null) { summaryText = controller.getSummary(); diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java index bd589bf3d27..00e8fe17d08 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java @@ -204,18 +204,18 @@ public class SliceBuilderUtilsTest { } @Test - public void testDynamicSummary_returnsSliceSummary() { + public void getDynamicSummary_returnsScreenTitle() { final SliceData data = getDummyData(); final FakePreferenceController controller = new FakePreferenceController(mContext, KEY); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); - assertThat(summary).isEqualTo(data.getSummary()); + assertThat(summary).isEqualTo(data.getScreenTitle()); } @Test - public void testDynamicSummary_returnsFragmentSummary() { - final SliceData data = getDummyData(null); + public void getDynamicSummary_noScreenTitle_returnsPrefControllerSummary() { + final SliceData data = getDummyData("", ""); final FakePreferenceController controller = spy( new FakePreferenceController(mContext, KEY)); final String controllerSummary = "new_Summary"; @@ -227,8 +227,21 @@ public class SliceBuilderUtilsTest { } @Test - public void testDynamicSummary_returnsSliceEmptyString() { - final SliceData data = getDummyData(null); + public void getDynamicSummary_screenTitleMatchesTitle_returnsPrefControllerSummary() { + final SliceData data = getDummyData("", TITLE); + final FakePreferenceController controller = spy( + new FakePreferenceController(mContext, KEY)); + final String controllerSummary = "new_Summary"; + doReturn(controllerSummary).when(controller).getSummary(); + + final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); + + assertThat(summary).isEqualTo(controllerSummary); + } + + @Test + public void getDynamicSummary_emptyScreenTitle_emptyControllerSummary_returnsEmptyString() { + final SliceData data = getDummyData(null, null); final FakePreferenceController controller = new FakePreferenceController(mContext, KEY); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); @@ -236,8 +249,9 @@ public class SliceBuilderUtilsTest { } @Test - public void testDynamicSummary_placeHolderString_returnsEmptyString() { - final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder)); + public void + getDynamicSummary_emptyScreenTitle_placeHolderControllerSummary_returnsEmptyString() { + final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder), null); final FakePreferenceController controller = new FakePreferenceController(mContext, KEY); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); @@ -245,9 +259,9 @@ public class SliceBuilderUtilsTest { } @Test - public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceEmptyString() { + public void getDynamicSummary_screenTitleAndControllerPlaceholder_returnsSliceEmptyString() { final String summaryPlaceholder = mContext.getString(R.string.summary_placeholder); - final SliceData data = getDummyData(summaryPlaceholder); + final SliceData data = getDummyData(summaryPlaceholder, summaryPlaceholder); final FakePreferenceController controller = spy( new FakePreferenceController(mContext, KEY)); doReturn(summaryPlaceholder).when(controller).getSummary(); @@ -257,18 +271,6 @@ public class SliceBuilderUtilsTest { 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 public void getPathData_splitsIntentUri() { final Uri uri = new Uri.Builder() @@ -417,23 +419,24 @@ public class SliceBuilderUtilsTest { } private SliceData getDummyData() { - return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH); + return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE); } - private SliceData getDummyData(String summary) { - return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH); + private SliceData getDummyData(String summary, String screenTitle) { + return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH, screenTitle); } private SliceData getDummyData(Class prefController, int sliceType) { - return getDummyData(prefController, SUMMARY, sliceType); + return getDummyData(prefController, SUMMARY, sliceType, SCREEN_TITLE); } - private SliceData getDummyData(Class prefController, String summary, int sliceType) { + private SliceData getDummyData(Class prefController, String summary, int sliceType, + String screenTitle) { return new SliceData.Builder() .setKey(KEY) .setTitle(TITLE) .setSummary(summary) - .setScreenTitle(SCREEN_TITLE) + .setScreenTitle(screenTitle) .setKeywords(KEYWORDS) .setIcon(ICON) .setFragmentName(FRAGMENT_NAME)