Merge "Revert "[LE unicast] The isBusy state should involve the state of sub device"" into tm-qpr-dev

This commit is contained in:
SongFerng Wang
2022-10-26 12:43:12 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 91 deletions

View File

@@ -758,23 +758,16 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
}
public boolean isBusy() {
for (CachedBluetoothDevice memberDevice : getMemberDevice()) {
if (isBusyState(memberDevice)) {
return true;
synchronized (mProfileLock) {
for (LocalBluetoothProfile profile : mProfiles) {
int status = getProfileConnectionState(profile);
if (status == BluetoothProfile.STATE_CONNECTING
|| status == BluetoothProfile.STATE_DISCONNECTING) {
return true;
}
}
return getBondState() == BluetoothDevice.BOND_BONDING;
}
return isBusyState(this);
}
private boolean isBusyState(CachedBluetoothDevice device){
for (LocalBluetoothProfile profile : device.getProfiles()) {
int status = device.getProfileConnectionState(profile);
if (status == BluetoothProfile.STATE_CONNECTING
|| status == BluetoothProfile.STATE_DISCONNECTING) {
return true;
}
}
return device.getBondState() == BluetoothDevice.BOND_BONDING;
}
private boolean updateProfiles() {

View File

@@ -1069,80 +1069,4 @@ public class CachedBluetoothDeviceTest {
assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
}
@Test
public void isBusy_mainDeviceIsConnecting_returnsBusy() {
mCachedDevice.addMemberDevice(mSubCachedDevice);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mSubDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTING);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
assertThat(mCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mSubCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mCachedDevice.isBusy()).isTrue();
}
@Test
public void isBusy_mainDeviceIsBonding_returnsBusy() {
mCachedDevice.addMemberDevice(mSubCachedDevice);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
when(mSubDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
assertThat(mCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mSubCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mCachedDevice.isBusy()).isTrue();
}
@Test
public void isBusy_memberDeviceIsConnecting_returnsBusy() {
mCachedDevice.addMemberDevice(mSubCachedDevice);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mSubDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTING);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
assertThat(mCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mSubCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mCachedDevice.isBusy()).isTrue();
}
@Test
public void isBusy_memberDeviceIsBonding_returnsBusy() {
mCachedDevice.addMemberDevice(mSubCachedDevice);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mSubDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
assertThat(mCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mSubCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mCachedDevice.isBusy()).isTrue();
}
@Test
public void isBusy_allDevicesAreNotBusy_returnsNotBusy() {
mCachedDevice.addMemberDevice(mSubCachedDevice);
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
updateSubDeviceProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
when(mSubDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
assertThat(mCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mSubCachedDevice.getProfiles().contains(mA2dpProfile)).isTrue();
assertThat(mCachedDevice.isBusy()).isFalse();
}
}