Merge "Fix ConcurrentModificationException"
This commit is contained in:
committed by
Android (Google) Code Review
commit
e2ab932b5b
@@ -26,11 +26,14 @@ import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class SysuiTestableContext extends TestableContext {
|
||||
|
||||
private Set<BroadcastReceiver> mRegisteredReceivers = new ArraySet<>();
|
||||
@GuardedBy("mRegisteredReceivers")
|
||||
private final Set<BroadcastReceiver> mRegisteredReceivers = new ArraySet<>();
|
||||
|
||||
public SysuiTestableContext(Context base) {
|
||||
super(base);
|
||||
@@ -54,7 +57,11 @@ public class SysuiTestableContext extends TestableContext {
|
||||
}
|
||||
|
||||
public void cleanUpReceivers(String testName) {
|
||||
Set<BroadcastReceiver> copy = new ArraySet<>(mRegisteredReceivers);
|
||||
Set<BroadcastReceiver> copy;
|
||||
synchronized (mRegisteredReceivers) {
|
||||
copy = new ArraySet<>(mRegisteredReceivers);
|
||||
mRegisteredReceivers.clear();
|
||||
}
|
||||
for (BroadcastReceiver r : copy) {
|
||||
try {
|
||||
unregisterReceiver(r);
|
||||
@@ -68,7 +75,9 @@ public class SysuiTestableContext extends TestableContext {
|
||||
@Override
|
||||
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
|
||||
if (receiver != null) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
synchronized (mRegisteredReceivers) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
}
|
||||
}
|
||||
return super.registerReceiver(receiver, filter);
|
||||
}
|
||||
@@ -77,7 +86,9 @@ public class SysuiTestableContext extends TestableContext {
|
||||
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
|
||||
String broadcastPermission, Handler scheduler) {
|
||||
if (receiver != null) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
synchronized (mRegisteredReceivers) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
}
|
||||
}
|
||||
return super.registerReceiver(receiver, filter, broadcastPermission, scheduler);
|
||||
}
|
||||
@@ -86,7 +97,9 @@ public class SysuiTestableContext extends TestableContext {
|
||||
public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
|
||||
IntentFilter filter, String broadcastPermission, Handler scheduler) {
|
||||
if (receiver != null) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
synchronized (mRegisteredReceivers) {
|
||||
mRegisteredReceivers.add(receiver);
|
||||
}
|
||||
}
|
||||
return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler);
|
||||
}
|
||||
@@ -94,7 +107,9 @@ public class SysuiTestableContext extends TestableContext {
|
||||
@Override
|
||||
public void unregisterReceiver(BroadcastReceiver receiver) {
|
||||
if (receiver != null) {
|
||||
mRegisteredReceivers.remove(receiver);
|
||||
synchronized (mRegisteredReceivers) {
|
||||
mRegisteredReceivers.remove(receiver);
|
||||
}
|
||||
}
|
||||
super.unregisterReceiver(receiver);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user