Merge "Fix ConcurrentModificationException"

This commit is contained in:
TreeHugger Robot
2020-07-08 00:04:52 +00:00
committed by Android (Google) Code Review

View File

@@ -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);
}