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

Commit f14bc92d authored by Grzegorz Kołodziejczyk's avatar Grzegorz Kołodziejczyk
Browse files

Spy adding audio device to AudioManager

This modifies tests to spy interaction with AudioManager. Current
LE Audio Service implementation requires audio device to be added by
Audio Manager before broadcasting Active Device change intent.

Tag: #feature
Bug: 258573934
Test: atest LeAudioServiceTest
Change-Id: I44d6d245c88fb03009d17387da2f5f60be07dffb
parent e3125b3d
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -46,6 +47,8 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioDeviceCallback;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.BluetoothProfileConnectionInfo;
import android.os.ParcelUuid;
@@ -106,10 +109,10 @@ public class LeAudioServiceTest {
    @Mock private AdapterService mAdapterService;
    @Mock private DatabaseManager mDatabaseManager;
    @Mock private LeAudioNativeInterface mNativeInterface;
    @Mock private AudioManager mAudioManager;
    @Mock private VolumeControlService mVolumeControlService;
    @Mock private LeAudioTmapGattServer mTmapGattServer;
    @Spy private LeAudioObjectsFactory mObjectsFactory = LeAudioObjectsFactory.getInstance();
    @Spy private AudioManager mAudioManager;


    @Rule public final ServiceTestRule mServiceRule = new ServiceTestRule();
@@ -173,6 +176,7 @@ public class LeAudioServiceTest {

        LeAudioNativeInterface.setInstance(mNativeInterface);
        startService();
        mAudioManager = spy(mService.mAudioManager);
        mService.mAudioManager = mAudioManager;
        mService.mVolumeControlService = mVolumeControlService;

@@ -1117,6 +1121,14 @@ public class LeAudioServiceTest {

        String action = BluetoothLeAudio.ACTION_LE_AUDIO_ACTIVE_DEVICE_CHANGED;

        ArgumentCaptor<AudioDeviceCallback> audioDeviceCallback =
                ArgumentCaptor.forClass(AudioDeviceCallback.class);
        verify(mAudioManager, times(1)).registerAudioDeviceCallback(audioDeviceCallback.capture(),
                any());
        AudioDeviceInfo audioDeviceInfo[] =
                mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
        audioDeviceCallback.getValue().onAudioDevicesAdded(audioDeviceInfo);

        Intent intent = TestUtils.waitForIntent(TIMEOUT_MS, mDeviceQueueMap.get(mSingleDevice));
        assertThat(intent).isNotNull();
        assertThat(action).isEqualTo(intent.getAction());
@@ -1330,6 +1342,14 @@ public class LeAudioServiceTest {
                        any(BluetoothProfileConnectionInfo.class));

        doReturn(BluetoothDevice.BOND_BONDED).when(mAdapterService).getBondState(leadDevice);

        ArgumentCaptor<AudioDeviceCallback> audioDeviceCallback =
                ArgumentCaptor.forClass(AudioDeviceCallback.class);
        verify(mAudioManager, times(1)).registerAudioDeviceCallback(audioDeviceCallback.capture(),
                any());
        AudioDeviceInfo audioDeviceInfo[] =
                mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
        audioDeviceCallback.getValue().onAudioDevicesAdded(audioDeviceInfo);
        verifyActiveDeviceStateIntent(AUDIO_MANAGER_DEVICE_ADD_TIMEOUT_MS, leadDevice);
        injectNoVerifyDeviceDisconnected(leadDevice);

@@ -1394,6 +1414,13 @@ public class LeAudioServiceTest {
        verify(mAudioManager, times(1)).handleBluetoothActiveDeviceChanged(eq(leadDevice), any(),
                        any(BluetoothProfileConnectionInfo.class));

        ArgumentCaptor<AudioDeviceCallback> audioDeviceCallback =
                ArgumentCaptor.forClass(AudioDeviceCallback.class);
        verify(mAudioManager, times(1)).registerAudioDeviceCallback(audioDeviceCallback.capture(),
                any());
        AudioDeviceInfo audioDeviceInfo[] =
                mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
        audioDeviceCallback.getValue().onAudioDevicesAdded(audioDeviceInfo);
        verifyActiveDeviceStateIntent(AUDIO_MANAGER_DEVICE_ADD_TIMEOUT_MS, leadDevice);
        /* We don't want to distribute DISCONNECTION event, instead will try to reconnect
         * (in native)