From bfdcc82dc76008db5d7cd28dc12e5e56d4f00a2b Mon Sep 17 00:00:00 2001 From: Yiyi Shen Date: Wed, 29 May 2024 15:24:54 +0800 Subject: [PATCH] [Audiosharing] Add flag to start broadcast with no lea headset connected Allow audio sharing with no connected le audio headset when settings_need_connected_ble_device_for_broadcast is false Bug: 343277847 Test: atest Change-Id: I560338d53ddf290550faf8198cd7173bb734d150 --- .../AudioSharingSwitchBarController.java | 14 +++++++++---- .../AudioSharingSwitchBarControllerTest.java | 20 ++++++++++++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java index df49de45d45..475be85a8a3 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java @@ -27,6 +27,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.util.FeatureFlagUtils; import android.util.Log; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; @@ -320,10 +321,15 @@ public class AudioSharingSwitchBarController extends BasePreferenceController } return; } - if (mAssistant - .getDevicesMatchingConnectionStates( - new int[] {BluetoothProfile.STATE_CONNECTED}) - .isEmpty()) { + // FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST is always true in + // prod. We can turn off the flag for debug purpose. + if (FeatureFlagUtils.isEnabled( + mContext, + FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST) + && mAssistant + .getDevicesMatchingConnectionStates( + new int[] {BluetoothProfile.STATE_CONNECTED}) + .isEmpty()) { // Pop up dialog to ask users to connect at least one lea buds before audio sharing. AudioSharingUtils.postOnMainThread( mContext, diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java index 0b8f1211b71..0ead2d5d807 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java @@ -42,6 +42,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Looper; import android.platform.test.flag.junit.SetFlagsRule; +import android.util.FeatureFlagUtils; import android.widget.CompoundButton; import androidx.lifecycle.LifecycleOwner; @@ -322,7 +323,9 @@ public class AudioSharingSwitchBarControllerTest { } @Test - public void onCheckedChangedToChecked_noConnectedLeaDevices_notStartAudioSharing() { + public void onCheckedChangedToChecked_noConnectedLeaDevices_flagOn_notStartAudioSharing() { + FeatureFlagUtils.setEnabled( + mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true); when(mBtnView.isEnabled()).thenReturn(true); when(mAssistant.getDevicesMatchingConnectionStates( new int[] {BluetoothProfile.STATE_CONNECTED})) @@ -333,8 +336,23 @@ public class AudioSharingSwitchBarControllerTest { verify(mBroadcast, times(0)).startPrivateBroadcast(); } + @Test + public void onCheckedChangedToChecked_noConnectedLeaDevices_flagOff_startAudioSharing() { + FeatureFlagUtils.setEnabled( + mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, false); + when(mBtnView.isEnabled()).thenReturn(true); + when(mAssistant.getDevicesMatchingConnectionStates( + new int[] {BluetoothProfile.STATE_CONNECTED})) + .thenReturn(ImmutableList.of()); + doNothing().when(mBroadcast).startPrivateBroadcast(); + mController.onCheckedChanged(mBtnView, /* isChecked= */ true); + verify(mBroadcast).startPrivateBroadcast(); + } + @Test public void onCheckedChangedToChecked_notSharing_withConnectedLeaDevices_startAudioSharing() { + FeatureFlagUtils.setEnabled( + mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true); when(mBtnView.isEnabled()).thenReturn(true); when(mAssistant.getDevicesMatchingConnectionStates( new int[] {BluetoothProfile.STATE_CONNECTED}))