[Audiosharing] Avoid start sharing dialog for single device.

Issue - for LEA device with two BT addresses, when the second bud connected with
incorrect group id, we wrongly show up the start audio sharing dialog.

Fix - check there are two connected LEA valid groups before show up
start audio sharing dialog.

Bug: 347655885
Test: atest
Flag: com.android.settingslib.flags.enable_le_audio_sharing
Change-Id: Icd86ce2cfa4312c10c14906f46df324357c56990
This commit is contained in:
Yiyi Shen
2024-06-25 17:59:02 +08:00
parent 06feb6d1f7
commit f9424c6231
2 changed files with 46 additions and 3 deletions

View File

@@ -248,6 +248,23 @@ public class AudioSharingDialogHandlerTest {
verify(mCachedDevice1).setActive();
}
@Test
public void handleUserTriggeredLeaDeviceConnected_noSharingLeaDeviceInErrorState_setActive() {
setUpBroadcast(false);
when(mCachedDevice1.getGroupId()).thenReturn(-1);
when(mLeAudioProfile.getGroupId(mDevice1)).thenReturn(-1);
ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
when(mAssistant.getDevicesMatchingConnectionStates(
new int[] {BluetoothProfile.STATE_CONNECTED}))
.thenReturn(deviceList);
when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ true);
shadowOf(Looper.getMainLooper()).idle();
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
assertThat(childFragments).isEmpty();
verify(mCachedDevice1).setActive();
}
@Test
public void handleUserTriggeredLeaDeviceConnected_noSharingTwoLeaDevices_showJoinDialog() {
setUpBroadcast(false);
@@ -451,6 +468,23 @@ public class AudioSharingDialogHandlerTest {
verify(mCachedDevice1, never()).setActive();
}
@Test
public void handleLeaDeviceConnected_noSharingLeaDeviceInErrorState_doNothing() {
setUpBroadcast(false);
when(mCachedDevice1.getGroupId()).thenReturn(-1);
when(mLeAudioProfile.getGroupId(mDevice1)).thenReturn(-1);
ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
when(mAssistant.getDevicesMatchingConnectionStates(
new int[] {BluetoothProfile.STATE_CONNECTED}))
.thenReturn(deviceList);
when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ false);
shadowOf(Looper.getMainLooper()).idle();
List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
assertThat(childFragments).isEmpty();
verify(mCachedDevice1, never()).setActive();
}
@Test
public void handleLeaDeviceConnected_noSharingTwoLeaDevices_showJoinDialog() {
setUpBroadcast(false);