Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05811609 authored by Doris Ling's avatar Doris Ling
Browse files

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
parent 59520b02
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -155,8 +155,8 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
            // remain as the dashboard item. Need to refresh the dashboard list.
            setSuggestions(null);
        } else {
            mSuggestionAdapter.removeSuggestion(suggestion);
            notifyItemChanged(0, null);
            list.remove(suggestion);
            setSuggestions(list);
        }
    }

+5 −1
Original line number Diff line number Diff line
@@ -246,7 +246,11 @@ public class DashboardData {
        if (suggestions.size() <= MAX_SUGGESTION_COUNT) {
            return suggestions;
        }
        return suggestions.subList(0, MAX_SUGGESTION_COUNT);
        final List<Suggestion> suggestionsToShow = new ArrayList<>(MAX_SUGGESTION_COUNT);
        for (int i = 0; i < MAX_SUGGESTION_COUNT; i++) {
            suggestionsToShow.add(suggestions.get(i));
        }
        return suggestionsToShow;
    }

    /**
+1 −2
Original line number Diff line number Diff line
@@ -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