diff --git a/nearby/service/java/com/android/server/nearby/managers/BroadcastProviderManager.java b/nearby/service/java/com/android/server/nearby/managers/BroadcastProviderManager.java index d95032cb4a57230177b1b30ba7a6d59699da6448..28a33fa1c03c85311f8a0198f557899c144002ad 100644 --- a/nearby/service/java/com/android/server/nearby/managers/BroadcastProviderManager.java +++ b/nearby/service/java/com/android/server/nearby/managers/BroadcastProviderManager.java @@ -79,6 +79,12 @@ public class BroadcastProviderManager implements BleBroadcastProvider.BroadcastL if (listener == null) { return; } + if (mBroadcastListener != null) { + Log.i(TAG, "We do not support multi clients yet," + + " please stop previous broadcast first."); + reportBroadcastStatus(listener, BroadcastCallback.STATUS_FAILURE); + return; + } if (!mNearbyConfiguration.isTestAppSupported()) { NearbyConfiguration configuration = new NearbyConfiguration(); if (!configuration.isPresenceBroadcastLegacyEnabled()) { diff --git a/nearby/tests/unit/src/com/android/server/nearby/managers/BroadcastProviderManagerTest.java b/nearby/tests/unit/src/com/android/server/nearby/managers/BroadcastProviderManagerTest.java index 47133f4b3e7f1fbe4db4433bde8f12b0e292c22a..7ff7b13ab5ee7b5fbaad991857b2953e1546f9d5 100644 --- a/nearby/tests/unit/src/com/android/server/nearby/managers/BroadcastProviderManagerTest.java +++ b/nearby/tests/unit/src/com/android/server/nearby/managers/BroadcastProviderManagerTest.java @@ -24,6 +24,7 @@ import static com.android.server.nearby.NearbyConfiguration.NEARBY_SUPPORT_TEST_ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -125,6 +126,16 @@ public class BroadcastProviderManagerTest { verify(mBinder).unlinkToDeath(any(), eq(0)); } + @Test + public void testRegisterAdvertising_twoTimes_fail() throws Exception { + IBroadcastListener newListener = mock(IBroadcastListener.class); + IBinder newBinder = mock(IBinder.class); + when(newListener.asBinder()).thenReturn(newBinder); + mBroadcastProviderManager.startBroadcast(mBroadcastRequest, mBroadcastListener); + mBroadcastProviderManager.startBroadcast(mBroadcastRequest, newListener); + verify(newListener).onStatusChanged(eq(BroadcastCallback.STATUS_FAILURE)); + } + @Test public void testStartAdvertising_featureDisabled() throws Exception { DeviceConfig.setProperty(