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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20269876

Change-Id: Icb5f1321691bbfd3bbd330ba894506888c32a8d1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
SongFerng Wang
2022-10-26 13:17:21 +00:00
committed by Automerger Merge Worker
2 changed files with 8 additions and 91 deletions

View File

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

View File

@@ -1069,80 +1069,4 @@ 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();
}
} }