Fix null pointer exception when logging suggestions.

In monkey test, the suggestions list can become null. So, add check
for valid suggestions list before trying to iterate through the
suggestions.

Fixes: 64757618
Test: make RunSettingsRoboTests
Change-Id: Ib670808a4f222187b9cd53d7d939e71b5ce8dbae
This commit is contained in:
Doris Ling
2017-08-16 12:40:01 -07:00
parent 595627c630
commit 97da51876b
2 changed files with 20 additions and 1 deletions

View File

@@ -329,7 +329,11 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
}
private void logSuggestions() {
for (Tile suggestion : mDashboardData.getSuggestions()) {
final List<Tile> suggestions = mDashboardData.getSuggestions();
if (suggestions == null) {
return;
}
for (Tile suggestion : suggestions) {
final String suggestionId = mSuggestionFeatureProvider.getSuggestionIdentifier(
mContext, suggestion);
if (!mSuggestionsShownLogged.contains(suggestionId)) {

View File

@@ -318,6 +318,21 @@ public class DashboardAdapterTest {
assertThat(mActionCategoryCaptor.getAllValues().toArray()).isEqualTo(expectedActions);
}
@Test
public void testSuggestionsLogs_nullSuggestionsList_shouldNotCrash() {
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3", "pkg4", "pkg5"));
mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData);
// set suggestions to null
final DashboardData prevData = mDashboardAdapter.mDashboardData;
mDashboardAdapter.mDashboardData = new DashboardData.Builder(prevData)
.setSuggestions(null)
.build();
mSuggestionHolder.itemView.callOnClick();
// no crash
}
@Test
public void testSuggestionDismissed_notOnlySuggestion_updateSuggestionOnly() {
final DashboardAdapter adapter =