Snap for 11028996 from 59fdce4f2c77e7d7e2b60ace6a26776921e185f8 to mainline-permission-release
Change-Id: I438b16fdd6f76ef4b89a578f8a1a4a6595ebb45e
diff --git a/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java b/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
index 0432696..91aaadc 100644
--- a/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
+++ b/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
@@ -49,11 +49,13 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.WeakHashMap;
+import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.CountDownLatch;
@@ -283,13 +285,15 @@
// This is synchronized which isn't massively performant but it only gets accessed once straight
// after creating a Sender, and once each time availability changes
private static final Set<CrossProfileSender> senders =
- synchronizedSet(newSetFromMap(new WeakHashMap<>()));
+ synchronizedSet(newSetFromMap(new WeakHashMap<>()));
private static final BroadcastReceiver profileAvailabilityReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- for (CrossProfileSender sender : senders) {
- sender.scheduledExecutorService.execute(sender::checkAvailability);
+ synchronized (senders) {
+ for (CrossProfileSender sender : senders) {
+ sender.scheduledExecutorService.execute(sender::checkAvailability);
+ }
}
}
};