Loading core/java/android/companion/CompanionDeviceManager.java +39 −12 Original line number Diff line number Diff line Loading @@ -80,9 +80,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.BiConsumer; import java.util.function.Consumer; Loading Loading @@ -427,6 +429,10 @@ public final class CompanionDeviceManager { private final ArrayList<OnTransportsChangedListenerProxy> mTransportsChangedListeners = new ArrayList<>(); @GuardedBy("mMessageReceivedListeners") private final SparseArray<Set<OnMessageReceivedListenerProxy>> mMessageReceivedListeners = new SparseArray<>(); @GuardedBy("mTransports") private final SparseArray<Transport> mTransports = new SparseArray<>(); Loading Loading @@ -1141,6 +1147,7 @@ public final class CompanionDeviceManager { return; } synchronized (mMessageReceivedListeners) { final OnMessageReceivedListenerProxy proxy = new OnMessageReceivedListenerProxy( executor, listener); try { Loading @@ -1148,6 +1155,12 @@ public final class CompanionDeviceManager { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } if (!mMessageReceivedListeners.contains(messageType)) { mMessageReceivedListeners.put(messageType, new HashSet<>()); } mMessageReceivedListeners.get(messageType).add(proxy); } } /** Loading @@ -1163,13 +1176,27 @@ public final class CompanionDeviceManager { return; } final OnMessageReceivedListenerProxy proxy = new OnMessageReceivedListenerProxy( null, listener); synchronized (mMessageReceivedListeners) { if (!mMessageReceivedListeners.contains(messageType)) { Log.w(TAG, "Can't remove OnMessageReceivedListener. messageType " + messageType + " is not being listened."); return; } final Iterator<OnMessageReceivedListenerProxy> iterator = mMessageReceivedListeners.get(messageType).iterator(); while (iterator.hasNext()) { final OnMessageReceivedListenerProxy proxy = iterator.next(); if (proxy.mListener == listener) { try { mService.removeOnMessageReceivedListener(messageType, proxy); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } iterator.remove(); } } } } /** Loading Loading
core/java/android/companion/CompanionDeviceManager.java +39 −12 Original line number Diff line number Diff line Loading @@ -80,9 +80,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.BiConsumer; import java.util.function.Consumer; Loading Loading @@ -427,6 +429,10 @@ public final class CompanionDeviceManager { private final ArrayList<OnTransportsChangedListenerProxy> mTransportsChangedListeners = new ArrayList<>(); @GuardedBy("mMessageReceivedListeners") private final SparseArray<Set<OnMessageReceivedListenerProxy>> mMessageReceivedListeners = new SparseArray<>(); @GuardedBy("mTransports") private final SparseArray<Transport> mTransports = new SparseArray<>(); Loading Loading @@ -1141,6 +1147,7 @@ public final class CompanionDeviceManager { return; } synchronized (mMessageReceivedListeners) { final OnMessageReceivedListenerProxy proxy = new OnMessageReceivedListenerProxy( executor, listener); try { Loading @@ -1148,6 +1155,12 @@ public final class CompanionDeviceManager { } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } if (!mMessageReceivedListeners.contains(messageType)) { mMessageReceivedListeners.put(messageType, new HashSet<>()); } mMessageReceivedListeners.get(messageType).add(proxy); } } /** Loading @@ -1163,13 +1176,27 @@ public final class CompanionDeviceManager { return; } final OnMessageReceivedListenerProxy proxy = new OnMessageReceivedListenerProxy( null, listener); synchronized (mMessageReceivedListeners) { if (!mMessageReceivedListeners.contains(messageType)) { Log.w(TAG, "Can't remove OnMessageReceivedListener. messageType " + messageType + " is not being listened."); return; } final Iterator<OnMessageReceivedListenerProxy> iterator = mMessageReceivedListeners.get(messageType).iterator(); while (iterator.hasNext()) { final OnMessageReceivedListenerProxy proxy = iterator.next(); if (proxy.mListener == listener) { try { mService.removeOnMessageReceivedListener(messageType, proxy); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } iterator.remove(); } } } } /** Loading