Merge "[LE unicast] The isBusy state should involve the state of sub device" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6e4c896775
@@ -758,16 +758,23 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBusy() {
|
public boolean isBusy() {
|
||||||
synchronized (mProfileLock) {
|
for (CachedBluetoothDevice memberDevice : getMemberDevice()) {
|
||||||
for (LocalBluetoothProfile profile : mProfiles) {
|
if (isBusyState(memberDevice)) {
|
||||||
int status = getProfileConnectionState(profile);
|
return true;
|
||||||
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() {
|
private boolean updateProfiles() {
|
||||||
|
|||||||
@@ -1069,4 +1069,80 @@ public class CachedBluetoothDeviceTest {
|
|||||||
assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice);
|
assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice);
|
||||||
assertThat(mCachedDevice.getMemberDevice().contains(mSubCachedDevice)).isTrue();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user