[Audiosharing] Block pairing if there exists temp bond device
Test: atest Flag: com.android.settingslib.flags.enable_temporary_bond_devices_ui Bug: 392004799 Change-Id: I641ec995e7e0883b428effe219acb25d2c2da9dd
This commit is contained in:
@@ -54,6 +54,7 @@ import com.android.settingslib.utils.ThreadUtils;
|
|||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -315,11 +316,15 @@ public final class Utils {
|
|||||||
CachedBluetoothDeviceManager deviceManager = localBtManager.getCachedDeviceManager();
|
CachedBluetoothDeviceManager deviceManager = localBtManager.getCachedDeviceManager();
|
||||||
List<BluetoothDevice> connectedDevices =
|
List<BluetoothDevice> connectedDevices =
|
||||||
assistant == null ? ImmutableList.of() : assistant.getAllConnectedDevices();
|
assistant == null ? ImmutableList.of() : assistant.getAllConnectedDevices();
|
||||||
|
Collection<CachedBluetoothDevice> bondedDevices =
|
||||||
|
deviceManager == null ? ImmutableList.of() : deviceManager.getCachedDevicesCopy();
|
||||||
// Block the pairing if there is ongoing audio sharing session and
|
// Block the pairing if there is ongoing audio sharing session and
|
||||||
// a) there is already one temp bond sink connected
|
// a) there is already one temp bond sink bonded
|
||||||
// or b) there are already two sinks joining the audio sharing
|
// or b) there are already two sinks joining the audio sharing
|
||||||
return assistant != null && deviceManager != null
|
return assistant != null && deviceManager != null
|
||||||
&& (connectedDevices.stream().anyMatch(BluetoothUtils::isTemporaryBondDevice)
|
&& (bondedDevices.stream().anyMatch(
|
||||||
|
d -> BluetoothUtils.isTemporaryBondDevice(d.getDevice())
|
||||||
|
&& d.getBondState() == BluetoothDevice.BOND_BONDED)
|
||||||
|| connectedDevices.stream().filter(
|
|| connectedDevices.stream().filter(
|
||||||
d -> BluetoothUtils.hasActiveLocalBroadcastSourceForBtDevice(d,
|
d -> BluetoothUtils.hasActiveLocalBroadcastSourceForBtDevice(d,
|
||||||
localBtManager))
|
localBtManager))
|
||||||
|
@@ -117,7 +117,9 @@ public class UtilsTest {
|
|||||||
when(mDeviceManager.findDevice(device)).thenReturn(cachedDevice);
|
when(mDeviceManager.findDevice(device)).thenReturn(cachedDevice);
|
||||||
when(cachedDevice.getGroupId()).thenReturn(1);
|
when(cachedDevice.getGroupId()).thenReturn(1);
|
||||||
when(cachedDevice.getDevice()).thenReturn(device);
|
when(cachedDevice.getDevice()).thenReturn(device);
|
||||||
|
when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(device));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(device));
|
||||||
|
when(mDeviceManager.getCachedDevicesCopy()).thenReturn(ImmutableList.of(cachedDevice));
|
||||||
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
||||||
when(state.getBroadcastId()).thenReturn(1);
|
when(state.getBroadcastId()).thenReturn(1);
|
||||||
when(mAssistant.getAllSources(device)).thenReturn(ImmutableList.of(state));
|
when(mAssistant.getAllSources(device)).thenReturn(ImmutableList.of(state));
|
||||||
@@ -133,9 +135,11 @@ public class UtilsTest {
|
|||||||
when(mDeviceManager.findDevice(device)).thenReturn(cachedDevice);
|
when(mDeviceManager.findDevice(device)).thenReturn(cachedDevice);
|
||||||
when(cachedDevice.getGroupId()).thenReturn(1);
|
when(cachedDevice.getGroupId()).thenReturn(1);
|
||||||
when(cachedDevice.getDevice()).thenReturn(device);
|
when(cachedDevice.getDevice()).thenReturn(device);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(device));
|
when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||||
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of());
|
||||||
|
when(mDeviceManager.getCachedDevicesCopy()).thenReturn(ImmutableList.of(cachedDevice));
|
||||||
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
||||||
when(state.getBroadcastId()).thenReturn(1);
|
when(state.getBroadcastId()).thenReturn(0);
|
||||||
when(mAssistant.getAllSources(device)).thenReturn(ImmutableList.of(state));
|
when(mAssistant.getAllSources(device)).thenReturn(ImmutableList.of(state));
|
||||||
when(device.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS))
|
when(device.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS))
|
||||||
.thenReturn(TEMP_BOND_METADATA.getBytes());
|
.thenReturn(TEMP_BOND_METADATA.getBytes());
|
||||||
@@ -154,9 +158,13 @@ public class UtilsTest {
|
|||||||
when(mDeviceManager.findDevice(device2)).thenReturn(cachedDevice2);
|
when(mDeviceManager.findDevice(device2)).thenReturn(cachedDevice2);
|
||||||
when(cachedDevice1.getGroupId()).thenReturn(1);
|
when(cachedDevice1.getGroupId()).thenReturn(1);
|
||||||
when(cachedDevice2.getGroupId()).thenReturn(2);
|
when(cachedDevice2.getGroupId()).thenReturn(2);
|
||||||
|
when(cachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||||
when(cachedDevice1.getDevice()).thenReturn(device1);
|
when(cachedDevice1.getDevice()).thenReturn(device1);
|
||||||
when(cachedDevice2.getDevice()).thenReturn(device2);
|
when(cachedDevice2.getDevice()).thenReturn(device2);
|
||||||
|
when(cachedDevice2.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||||
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(device1, device2));
|
when(mAssistant.getAllConnectedDevices()).thenReturn(ImmutableList.of(device1, device2));
|
||||||
|
when(mDeviceManager.getCachedDevicesCopy()).thenReturn(
|
||||||
|
ImmutableList.of(cachedDevice1, cachedDevice2));
|
||||||
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
|
||||||
when(state.getBroadcastId()).thenReturn(1);
|
when(state.getBroadcastId()).thenReturn(1);
|
||||||
when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(state));
|
when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(state));
|
||||||
|
Reference in New Issue
Block a user