From f4669dffd5d604f227ceb74c6ea86ee78a882e73 Mon Sep 17 00:00:00 2001 From: Sailesh Nepal Date: Thu, 14 Aug 2014 17:43:13 -0700 Subject: [PATCH] Use thread safe set for RemoteConnection.mListeners Switch from HashSet to set backed by a ConcurrentHashMap to prevent ConcurrentModificationExceptions. (Relanding ag/521178. This got reveretd in ag/520450). Bug: 16901565 Change-Id: I997898ed94f305d9b8c57eead04e0dfe6c04a884 --- telecomm/java/android/telecomm/RemoteConnection.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/telecomm/java/android/telecomm/RemoteConnection.java b/telecomm/java/android/telecomm/RemoteConnection.java index 13b08343aad3f..d3972d31fa39c 100644 --- a/telecomm/java/android/telecomm/RemoteConnection.java +++ b/telecomm/java/android/telecomm/RemoteConnection.java @@ -24,9 +24,11 @@ import android.os.RemoteException; import android.telephony.DisconnectCause; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; /** * A connection provided to a {@link ConnectionService} by another {@code ConnectionService} @@ -182,7 +184,8 @@ public final class RemoteConnection { private IConnectionService mConnectionService; private final String mConnectionId; - private final Set mListeners = new HashSet<>(); + private final Set mListeners = Collections.newSetFromMap( + new ConcurrentHashMap(2)); private final Set mConferenceableConnections = new HashSet<>(); private int mState = Connection.STATE_NEW;