Set slice summary text to screentitle first

To improve context on search surfaces where the
setting may be ambiguous, we set the screentitle
as the summary text as the top priority. If there is
no screentitle or the it matches the title, then we
try to use the controller summary. If the controller
summary is not valid, then we show nothing.

Bug: 79780762
Test: robotests
Change-Id: If4f7f8d4a072125604ede14e3df2afd667fa24b7
This commit is contained in:
Matthew Fritze
2018-05-15 19:22:35 -07:00
parent b7b355a1c5
commit f9c13fc305
2 changed files with 37 additions and 29 deletions

View File

@@ -190,7 +190,12 @@ public class SliceBuilderUtils {
*/ */
public static CharSequence getSubtitleText(Context context, public static CharSequence getSubtitleText(Context context,
AbstractPreferenceController controller, SliceData sliceData) { AbstractPreferenceController controller, SliceData sliceData) {
CharSequence summaryText; CharSequence summaryText = sliceData.getScreenTitle();
if (isValidSummary(context, summaryText) && !TextUtils.equals(summaryText,
sliceData.getTitle())) {
return summaryText;
}
if (controller != null) { if (controller != null) {
summaryText = controller.getSummary(); summaryText = controller.getSummary();

View File

@@ -204,18 +204,18 @@ public class SliceBuilderUtilsTest {
} }
@Test @Test
public void testDynamicSummary_returnsSliceSummary() { public void getDynamicSummary_returnsScreenTitle() {
final SliceData data = getDummyData(); final SliceData data = getDummyData();
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.getSummary()); assertThat(summary).isEqualTo(data.getScreenTitle());
} }
@Test @Test
public void testDynamicSummary_returnsFragmentSummary() { public void getDynamicSummary_noScreenTitle_returnsPrefControllerSummary() {
final SliceData data = getDummyData(null); final SliceData data = getDummyData("", "");
final FakePreferenceController controller = spy( final FakePreferenceController controller = spy(
new FakePreferenceController(mContext, KEY)); new FakePreferenceController(mContext, KEY));
final String controllerSummary = "new_Summary"; final String controllerSummary = "new_Summary";
@@ -227,8 +227,21 @@ public class SliceBuilderUtilsTest {
} }
@Test @Test
public void testDynamicSummary_returnsSliceEmptyString() { public void getDynamicSummary_screenTitleMatchesTitle_returnsPrefControllerSummary() {
final SliceData data = getDummyData(null); 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 FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data); final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
@@ -236,8 +249,9 @@ public class SliceBuilderUtilsTest {
} }
@Test @Test
public void testDynamicSummary_placeHolderString_returnsEmptyString() { public void
final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder)); getDynamicSummary_emptyScreenTitle_placeHolderControllerSummary_returnsEmptyString() {
final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder), 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);
@@ -245,9 +259,9 @@ public class SliceBuilderUtilsTest {
} }
@Test @Test
public void testDynamicSummary_sliceDataAndFragmentPlaceholder_returnsSliceEmptyString() { public void getDynamicSummary_screenTitleAndControllerPlaceholder_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, summaryPlaceholder);
final FakePreferenceController controller = spy( final FakePreferenceController controller = spy(
new FakePreferenceController(mContext, KEY)); new FakePreferenceController(mContext, KEY));
doReturn(summaryPlaceholder).when(controller).getSummary(); doReturn(summaryPlaceholder).when(controller).getSummary();
@@ -257,18 +271,6 @@ public class SliceBuilderUtilsTest {
assertThat(summary).isEqualTo(""); 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
public void getPathData_splitsIntentUri() { public void getPathData_splitsIntentUri() {
final Uri uri = new Uri.Builder() final Uri uri = new Uri.Builder()
@@ -417,23 +419,24 @@ public class SliceBuilderUtilsTest {
} }
private SliceData getDummyData() { 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) { private SliceData getDummyData(String summary, String screenTitle) {
return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH); return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH, screenTitle);
} }
private SliceData getDummyData(Class prefController, int sliceType) { 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() return new SliceData.Builder()
.setKey(KEY) .setKey(KEY)
.setTitle(TITLE) .setTitle(TITLE)
.setSummary(summary) .setSummary(summary)
.setScreenTitle(SCREEN_TITLE) .setScreenTitle(screenTitle)
.setKeywords(KEYWORDS) .setKeywords(KEYWORDS)
.setIcon(ICON) .setIcon(ICON)
.setFragmentName(FRAGMENT_NAME) .setFragmentName(FRAGMENT_NAME)