Loading android/app/src/com/android/bluetooth/BluetoothMethodProxy.java +7 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,13 @@ public class BluetoothMethodProxy { return adapter.isEnabled(); } /** * Proxies {@link BluetoothAdapter#getRemoteLeDevice(String, int)} on default Bluetooth Adapter. */ public BluetoothDevice getDefaultAdapterRemoteLeDevice(String address, int addressType) { return BluetoothAdapter.getDefaultAdapter().getRemoteLeDevice(address, addressType); } /** * Proxies {@link ContentResolver#openFileDescriptor(Uri, String)}. */ Loading android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +5 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.bluetooth.bass_client; import static android.Manifest.permission.BLUETOOTH_CONNECT; import android.annotation.Nullable; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCallback; Loading Loading @@ -867,7 +868,10 @@ public class BassClientStateMachine extends StateMachine { byte sourceAddressType = receiverState[BassConstants .BCAST_RCVR_STATE_SRC_ADDR_TYPE_IDX]; BassUtils.reverse(sourceAddress); BluetoothDevice device = mAdapterService.getDeviceFromByte(sourceAddress); String address = Utils.getAddressStringFromByte(sourceAddress); BluetoothDevice device = BluetoothAdapter.getDefaultAdapter() .getRemoteLeDevice(address, sourceAddressType); byte sourceAdvSid = receiverState[BassConstants.BCAST_RCVR_STATE_SRC_ADV_SID_IDX]; recvState = new BluetoothLeBroadcastReceiveState( sourceId, Loading android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientStateMachineTest.java +23 −15 Original line number Diff line number Diff line Loading @@ -165,15 +165,6 @@ public class BassClientStateMachineTest { doReturn(mEmptyTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(EMPTY_BLUETOOTH_DEVICE_ADDRESS)); doReturn(mTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mTestDevice.getAddress())); doReturn(mSourceTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mSourceTestDevice.getAddress())); doReturn(mEmptyTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mEmptyTestDevice.getAddress())); // Set up thread and looper mHandlerThread = new HandlerThread("BassClientStateMachineTestHandlerThread"); Loading Loading @@ -728,7 +719,12 @@ public class BassClientStateMachineTest { cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); ArgumentCaptor<BluetoothLeBroadcastReceiveState> receiveStateCaptor = ArgumentCaptor.forClass(BluetoothLeBroadcastReceiveState.class); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); mBassClientStateMachine.mPendingOperation = 0; mBassClientStateMachine.mPendingSourceId = 0; Loading @@ -738,7 +734,9 @@ public class BassClientStateMachineTest { Mockito.clearInvocations(callbacks); cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); mBassClientStateMachine.mPendingMetadata = createBroadcastMetadata(); sourceId = 1; Loading Loading @@ -793,7 +791,9 @@ public class BassClientStateMachineTest { TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifySourceAdded(any(), any(), anyInt()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mSourceTestDevice); // set some values for covering more lines of processPASyncState() mBassClientStateMachine.mPendingMetadata = null; Loading @@ -814,7 +814,9 @@ public class BassClientStateMachineTest { cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mSourceTestDevice); assertThat(mBassClientStateMachine.mMsgWhats).contains(REMOVE_BCAST_SOURCE); mBassClientStateMachine.mIsPendingRemove = null; Loading @@ -836,7 +838,9 @@ public class BassClientStateMachineTest { verify(callbacks) .notifySourceRemoved( any(), anyInt(), eq(BluetoothStatusCodes.REASON_LOCAL_STACK_REQUEST)); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); assertThat(mBassClientStateMachine.mPendingSourceToSwitch).isEqualTo(null); } Loading Loading @@ -865,7 +869,11 @@ public class BassClientStateMachineTest { cb.onCharacteristicChanged(null, characteristic); verify(characteristic, atLeast(1)).getUuid(); verify(characteristic, atLeast(1)).getValue(); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); ArgumentCaptor<BluetoothLeBroadcastReceiveState> receiveStateCaptor = ArgumentCaptor.forClass(BluetoothLeBroadcastReceiveState.class); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); } @Test Loading Loading
android/app/src/com/android/bluetooth/BluetoothMethodProxy.java +7 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,13 @@ public class BluetoothMethodProxy { return adapter.isEnabled(); } /** * Proxies {@link BluetoothAdapter#getRemoteLeDevice(String, int)} on default Bluetooth Adapter. */ public BluetoothDevice getDefaultAdapterRemoteLeDevice(String address, int addressType) { return BluetoothAdapter.getDefaultAdapter().getRemoteLeDevice(address, addressType); } /** * Proxies {@link ContentResolver#openFileDescriptor(Uri, String)}. */ Loading
android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +5 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.bluetooth.bass_client; import static android.Manifest.permission.BLUETOOTH_CONNECT; import android.annotation.Nullable; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCallback; Loading Loading @@ -867,7 +868,10 @@ public class BassClientStateMachine extends StateMachine { byte sourceAddressType = receiverState[BassConstants .BCAST_RCVR_STATE_SRC_ADDR_TYPE_IDX]; BassUtils.reverse(sourceAddress); BluetoothDevice device = mAdapterService.getDeviceFromByte(sourceAddress); String address = Utils.getAddressStringFromByte(sourceAddress); BluetoothDevice device = BluetoothAdapter.getDefaultAdapter() .getRemoteLeDevice(address, sourceAddressType); byte sourceAdvSid = receiverState[BassConstants.BCAST_RCVR_STATE_SRC_ADV_SID_IDX]; recvState = new BluetoothLeBroadcastReceiveState( sourceId, Loading
android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientStateMachineTest.java +23 −15 Original line number Diff line number Diff line Loading @@ -165,15 +165,6 @@ public class BassClientStateMachineTest { doReturn(mEmptyTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(EMPTY_BLUETOOTH_DEVICE_ADDRESS)); doReturn(mTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mTestDevice.getAddress())); doReturn(mSourceTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mSourceTestDevice.getAddress())); doReturn(mEmptyTestDevice) .when(mAdapterService) .getDeviceFromByte(Utils.getBytesFromAddress(mEmptyTestDevice.getAddress())); // Set up thread and looper mHandlerThread = new HandlerThread("BassClientStateMachineTestHandlerThread"); Loading Loading @@ -728,7 +719,12 @@ public class BassClientStateMachineTest { cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); ArgumentCaptor<BluetoothLeBroadcastReceiveState> receiveStateCaptor = ArgumentCaptor.forClass(BluetoothLeBroadcastReceiveState.class); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); mBassClientStateMachine.mPendingOperation = 0; mBassClientStateMachine.mPendingSourceId = 0; Loading @@ -738,7 +734,9 @@ public class BassClientStateMachineTest { Mockito.clearInvocations(callbacks); cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); mBassClientStateMachine.mPendingMetadata = createBroadcastMetadata(); sourceId = 1; Loading Loading @@ -793,7 +791,9 @@ public class BassClientStateMachineTest { TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifySourceAdded(any(), any(), anyInt()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mSourceTestDevice); // set some values for covering more lines of processPASyncState() mBassClientStateMachine.mPendingMetadata = null; Loading @@ -814,7 +814,9 @@ public class BassClientStateMachineTest { cb.onCharacteristicRead(null, characteristic, GATT_SUCCESS); TestUtils.waitForLooperToFinishScheduledTask(mHandlerThread.getLooper()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mSourceTestDevice); assertThat(mBassClientStateMachine.mMsgWhats).contains(REMOVE_BCAST_SOURCE); mBassClientStateMachine.mIsPendingRemove = null; Loading @@ -836,7 +838,9 @@ public class BassClientStateMachineTest { verify(callbacks) .notifySourceRemoved( any(), anyInt(), eq(BluetoothStatusCodes.REASON_LOCAL_STACK_REQUEST)); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); verify(callbacks) .notifyReceiveStateChanged(any(), eq(sourceId), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); assertThat(mBassClientStateMachine.mPendingSourceToSwitch).isEqualTo(null); } Loading Loading @@ -865,7 +869,11 @@ public class BassClientStateMachineTest { cb.onCharacteristicChanged(null, characteristic); verify(characteristic, atLeast(1)).getUuid(); verify(characteristic, atLeast(1)).getValue(); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); ArgumentCaptor<BluetoothLeBroadcastReceiveState> receiveStateCaptor = ArgumentCaptor.forClass(BluetoothLeBroadcastReceiveState.class); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), receiveStateCaptor.capture()); Assert.assertEquals(receiveStateCaptor.getValue().getSourceDevice(), mEmptyTestDevice); } @Test Loading