From 7b40aa36e8419e134c8171e22a7fa2a2d3bf85a7 Mon Sep 17 00:00:00 2001 From: Xinyi Zhou <zxy@google.com> Date: Mon, 7 Aug 2023 17:32:36 -0700 Subject: [PATCH] [nearby] Returns error code for startBroadcast if there is an existing broadcast Fix: 294461081 Test: -m Ignore-AOSP-First: nearby_not_in_aosp_yet Change-Id: Icc3227ec5aa7d0ea7d33b7100ef131928577b5a7 --- .../nearby/managers/BroadcastProviderManager.java | 6 ++++++ .../nearby/managers/BroadcastProviderManagerTest.java | 11 +++++++++++ 2 files changed, 17 insertions(+) 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 d95032cb4a..28a33fa1c0 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 47133f4b3e..7ff7b13ab5 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( -- GitLab