Add basic breadcrumb on search result.

- Some line formatting
- Some UI tweak to make it more polished
- Updated the way we generate docid
- Use screen title as leaf level breadcrumb and display on UI (TBD how
  to get parent level titles)
- Hardcode breadcrumb for installed app results

Bug: 32936784
Test: make RunSettingsRoboTests
Change-Id: I18e0780f91b1123bbf25cd99adf2e2a5f684a83c
This commit is contained in:
Fan Zhang
2017-01-20 15:50:11 -08:00
parent 48717f5c2d
commit 248d95c618
13 changed files with 274 additions and 174 deletions

View File

@@ -41,6 +41,7 @@ import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
@@ -73,6 +74,7 @@ public class IntentSearchViewHolderTest {
assertThat(mHolder.titleView).isNotNull();
assertThat(mHolder.summaryView).isNotNull();
assertThat(mHolder.iconView).isNotNull();
assertThat(mHolder.breadcrumbView).isNotNull();
}
@Test
@@ -84,11 +86,43 @@ public class IntentSearchViewHolderTest {
assertThat(mHolder.titleView.getText()).isEqualTo(TITLE);
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
assertThat(mHolder.iconView.getDrawable()).isEqualTo(mIcon);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mHolder.breadcrumbView.getVisibility()).isEqualTo(View.GONE);
verify(mFragment).onSearchResultClicked();
verify(mFragment).startActivity(any(Intent.class));
}
@Test
public void testBindViewElements_emptySummary_hideSummaryView() {
final SearchResult result = new Builder().addTitle(TITLE)
.addRank(1)
.addPayload(new IntentPayload(null))
.addIcon(mIcon)
.build();
mHolder.onBind(mFragment, result);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void testBindViewElements_withBreadcrumb_shouldFormatBreadcrumb() {
final List<String> breadcrumbs = new ArrayList<>();
breadcrumbs.add("a");
breadcrumbs.add("b");
breadcrumbs.add("c");
final SearchResult result = new Builder().addTitle(TITLE)
.addRank(1)
.addPayload(new IntentPayload(null))
.addBreadcrumbs(breadcrumbs)
.addIcon(mIcon)
.build();
mHolder.onBind(mFragment, result);
assertThat(mHolder.breadcrumbView.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mHolder.breadcrumbView.getText()).isEqualTo("a > b > c");
}
private SearchResult getSearchResult() {
Builder builder = new Builder();
builder.addTitle(TITLE)