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:
@@ -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();
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user