From 9615f82abf4164e153fe45cc5e4b0be306c59200 Mon Sep 17 00:00:00 2001 From: Matthew Fritze Date: Fri, 5 May 2017 11:05:53 -0700 Subject: [PATCH] Prevent non-blocking whitespaces from showing up in search When search results use the placeholder summary text, it becomes non-breaking whitespace. If that is the summary, set the visibility to gone. Change-Id: Ic3987a0990c33b6cc5aabffa0782ece6c553784a Merged-In: Ifefa785b6c56d56da73ca78d874f46efcb9e991f Fixes: 38029215 Test: make RunSettingsRoboTests --- .../settings/search2/SearchViewHolder.java | 7 ++++++- .../search/IntentSearchViewHolderTest.java | 20 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/search2/SearchViewHolder.java b/src/com/android/settings/search2/SearchViewHolder.java index fef936790ed..67653e02aa5 100644 --- a/src/com/android/settings/search2/SearchViewHolder.java +++ b/src/com/android/settings/search2/SearchViewHolder.java @@ -34,6 +34,8 @@ import com.android.settings.overlay.FeatureFactory; */ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { + private final String mPlaceholderSummary; + public final TextView titleView; public final TextView summaryView; public final TextView breadcrumbView; @@ -49,11 +51,14 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { summaryView = view.findViewById(android.R.id.summary); iconView = view.findViewById(android.R.id.icon); breadcrumbView = view.findViewById(R.id.breadcrumb); + + mPlaceholderSummary = view.getContext().getString(R.string.summary_placeholder); } public void onBind(SearchFragment fragment, SearchResult result) { titleView.setText(result.title); - if (TextUtils.isEmpty(result.summary)) { + if (TextUtils.isEmpty(result.summary) + || TextUtils.equals(result.summary, mPlaceholderSummary)) { summaryView.setVisibility(View.GONE); } else { summaryView.setText(result.summary); diff --git a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java index 7ba77dff24b..cc7e4ec4856 100644 --- a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java +++ b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java @@ -111,7 +111,8 @@ public class IntentSearchViewHolderTest { @Test public void testBindViewElements_emptySummary_hideSummaryView() { - final SearchResult result = new Builder().addTitle(TITLE) + final SearchResult result = new Builder() + .addTitle(TITLE) .addRank(1) .addPayload(new IntentPayload(null)) .addIcon(mIcon) @@ -127,7 +128,8 @@ public class IntentSearchViewHolderTest { breadcrumbs.add("a"); breadcrumbs.add("b"); breadcrumbs.add("c"); - final SearchResult result = new Builder().addTitle(TITLE) + final SearchResult result = new Builder() + .addTitle(TITLE) .addRank(1) .addPayload(new IntentPayload(null)) .addBreadcrumbs(breadcrumbs) @@ -139,6 +141,20 @@ public class IntentSearchViewHolderTest { assertThat(mHolder.breadcrumbView.getText()).isEqualTo("a > b > c"); } + @Test + public void testBindElements_placeholderSummary_visibilityIsGone() { + String nonBreakingSpace = mContext.getString(R.string.summary_placeholder); + SearchResult result = new Builder() + .addTitle(TITLE) + .addSummary(nonBreakingSpace) + .addPayload(new IntentPayload(null)) + .build(); + + mHolder.onBind(mFragment, result); + + assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.GONE); + } + private SearchResult getSearchResult() { Builder builder = new Builder(); builder.addTitle(TITLE)