From 05811609c763caf3cf145d9ee112f253114387e9 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Tue, 6 Mar 2018 10:55:40 -0800 Subject: [PATCH] Create a new list when building suggestion data. - using sublist of the original suggestions list may results in ConcurrentModificationException if the originaly list is being modified. Create a new list instead to avoid running into the issue. Change-Id: Ia83a0432be542eeb428d177f6118d26fc2262e93 Fixes: 74194336 Test: run monkey --- src/com/android/settings/dashboard/DashboardAdapter.java | 4 ++-- src/com/android/settings/dashboard/DashboardData.java | 6 +++++- .../android/settings/dashboard/DashboardAdapterTest.java | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 99de73eb075..9d9058dfee0 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -155,8 +155,8 @@ public class DashboardAdapter extends RecyclerView.Adapter suggestionsToShow = new ArrayList<>(MAX_SUGGESTION_COUNT); + for (int i = 0; i < MAX_SUGGESTION_COUNT; i++) { + suggestionsToShow.add(suggestions.get(i)); + } + return suggestionsToShow; } /** diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java index e28e89d3d87..e45b02c3db0 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java @@ -124,10 +124,9 @@ public class DashboardAdapterTest { final Suggestion suggestionToRemove = suggestions.get(1); adapter.onSuggestionClosed(suggestionToRemove); - assertThat(adapter.mDashboardData).isEqualTo(dashboardData); assertThat(suggestions.size()).isEqualTo(2); assertThat(suggestions.contains(suggestionToRemove)).isFalse(); - verify(adapter, never()).notifyDashboardDataChanged(any()); + verify(adapter).notifyDashboardDataChanged(any()); } @Test