Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9c13fc3 authored by Matthew Fritze's avatar Matthew Fritze
Browse files

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
parent b7b355a1
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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();

+31 −28
Original line number Diff line number Diff line
@@ -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)