Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4816e9bb authored by Grzegorz Kolodziejczyk's avatar Grzegorz Kolodziejczyk Committed by Gerrit Code Review
Browse files

Merge "bass_client: Keep real sink address type of receiver states" into main

parents a5ab8b96 76c33d9f
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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)}.
     */
+5 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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,
+23 −15
Original line number Diff line number Diff line
@@ -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");
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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);
    }

@@ -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