Log async ranking state in Settings search ranking

Bug: 62072727
Test: RunSettingsRoboTests

Change-Id: I2140c41d01f18a1e4b9e3f505e0afa4a8757d049
This commit is contained in:
Soroosh Mariooryad
2017-06-30 11:47:09 -07:00
parent f0398e1294
commit 55bb0c258d
4 changed files with 28 additions and 5 deletions

View File

@@ -418,6 +418,9 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
taggedData.add(Pair.create(
MetricsEvent.FIELD_SETTINGS_SEARCH_RESULT_RANK,
resultViewHolder.getAdapterPosition()));
taggedData.add(Pair.create(
MetricsEvent.FIELD_SETTINGS_SEARCH_RESULT_ASYNC_RANKING_STATE,
mSearchAdapter.getAsyncRankingState()));
taggedData.add(Pair.create(
MetricsEvent.FIELD_SETTINGS_SEARCH_QUERY_LENGTH,
TextUtils.isEmpty(mQuery) ? 0 : mQuery.length()));

View File

@@ -77,11 +77,16 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder>
@IntDef({DISABLED, PENDING_RESULTS, SUCCEEDED, FAILED, TIMED_OUT})
@Retention(RetentionPolicy.SOURCE)
private @interface AsyncRankingState {}
private static final int DISABLED = 0;
private static final int PENDING_RESULTS = 1;
private static final int SUCCEEDED = 2;
private static final int FAILED = 3;
private static final int TIMED_OUT = 4;
@VisibleForTesting
static final int DISABLED = 0;
@VisibleForTesting
static final int PENDING_RESULTS = 1;
@VisibleForTesting
static final int SUCCEEDED = 2;
@VisibleForTesting
static final int FAILED = 3;
@VisibleForTesting
static final int TIMED_OUT = 4;
private @AsyncRankingState int mAsyncRankingState;
public SearchResultsAdapter(SearchFragment fragment,
@@ -244,6 +249,10 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder>
}
}
@AsyncRankingState int getAsyncRankingState() {
return mAsyncRankingState;
}
/**
* Merge the results from each of the loaders into one list for the adapter.
* Prioritizes results from the local database over installed apps.

View File

@@ -443,6 +443,8 @@ public class SearchFragmentTest {
eq("test_setting"),
argThat(pairMatches(MetricsProto.MetricsEvent.FIELD_SETTINGS_SEARCH_RESULT_COUNT)),
argThat(pairMatches(MetricsProto.MetricsEvent.FIELD_SETTINGS_SEARCH_RESULT_RANK)),
argThat(pairMatches(MetricsProto.MetricsEvent
.FIELD_SETTINGS_SEARCH_RESULT_ASYNC_RANKING_STATE)),
argThat(pairMatches(MetricsProto.MetricsEvent.FIELD_SETTINGS_SEARCH_QUERY_LENGTH)));
verify(mFeatureFactory.searchFeatureProvider).searchResultClicked(nullable(Context.class),

View File

@@ -220,6 +220,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[5]); // appCharlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.SUCCEEDED);
}
@Test
@@ -245,6 +246,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[5]); // appCharlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.SUCCEEDED);
}
@Test
@@ -270,6 +272,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[2]); // charlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.FAILED);
}
@Test
@@ -295,6 +298,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[2]); // charlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.FAILED);
}
@Test
@@ -321,6 +325,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[2]); // charlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.TIMED_OUT);
}
@Test
@@ -348,6 +353,7 @@ public class SearchResultsAdapterTest {
assertThat(results.get(5).title).isEqualTo(TITLES[2]); // charlie
verify(mFragment).onSearchResultsDisplayed(mSearchResultsCountCaptor.capture());
assertThat(mSearchResultsCountCaptor.getValue()).isEqualTo(6);
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.TIMED_OUT);
}
@Test
@@ -451,6 +457,7 @@ public class SearchResultsAdapterTest {
mAdapter.notifyResultsLoaded();
verify(mSearchFeatureProvider, never()).querySearchResults(
any(Context.class), anyString(), any(SearchResultsRankerCallback.class));
assertThat(mAdapter.getAsyncRankingState()).isEqualTo(SearchResultsAdapter.DISABLED);
}
@Test
@@ -460,6 +467,8 @@ public class SearchResultsAdapterTest {
mAdapter.notifyResultsLoaded();
verify(mSearchFeatureProvider, times(1)).querySearchResults(
any(Context.class), anyString(), any(SearchResultsRankerCallback.class));
assertThat(mAdapter.getAsyncRankingState())
.isEqualTo(SearchResultsAdapter.PENDING_RESULTS);
}
@Test