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

Commit d610bfd5 authored by Grzegorz Kolodziejczyk (xWF)'s avatar Grzegorz Kolodziejczyk (xWF) Committed by Automerger Merge Worker
Browse files

Merge "ActiveDeviceManager: Update tracking connected devices" into main am: bf87fac6

parents 45c577ad bf87fac6
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -800,9 +800,16 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac
                            + device
                            + ", mLeAudioActiveDevice="
                            + mLeAudioActiveDevice);

            if (device != null && !mLeAudioConnectedDevices.contains(device)) {
                mLeAudioConnectedDevices.add(device);
                Log.w(
                        TAG,
                        "Failed to activate device "
                                + device
                                + ". Reason: Device is not connected.");
                return;
            }

            // Just assign locally the new value
            if (device != null && !Objects.equals(mLeAudioActiveDevice, device)) {
                if (!Utils.isDualModeAudioEnabled()) {
+25 −4
Original line number Diff line number Diff line
@@ -1070,8 +1070,9 @@ public class ActiveDeviceManagerTest {
        verify(mA2dpService, atLeastOnce()).setActiveDevice(mA2dpHeadsetDevice);
        verify(mHeadsetService, atLeastOnce()).setActiveDevice(mA2dpHeadsetDevice);

        leAudioActiveDeviceChanged(mLeAudioDevice);
        leAudioConnected(mLeAudioDevice);
        mTestLooper.dispatchAll();
        verify(mLeAudioService).setActiveDevice(mLeAudioDevice);
        verify(mA2dpService).removeActiveDevice(false);
        verify(mHeadsetService).setActiveDevice(isNull());
    }
@@ -1079,8 +1080,9 @@ public class ActiveDeviceManagerTest {
    /** An LE Audio is connected. Then a combo (A2DP + Headset) device is connected. */
    @Test
    public void leAudioActive_setA2dpAndHeadsetActive() {
        leAudioActiveDeviceChanged(mLeAudioDevice);
        leAudioConnected(mLeAudioDevice);
        mTestLooper.dispatchAll();
        verify(mLeAudioService).setActiveDevice(mLeAudioDevice);
        verify(mHeadsetService).setActiveDevice(null);

        a2dpConnected(mA2dpHeadsetDevice, true);
@@ -1093,8 +1095,9 @@ public class ActiveDeviceManagerTest {
    /** An LE Audio is connected. Then an A2DP active device is explicitly set. */
    @Test
    public void leAudioActive_setA2dpActiveExplicitly() {
        leAudioActiveDeviceChanged(mLeAudioDevice);
        leAudioConnected(mLeAudioDevice);
        mTestLooper.dispatchAll();
        verify(mLeAudioService).setActiveDevice(mLeAudioDevice);
        verify(mHeadsetService).setActiveDevice(null);

        a2dpConnected(mA2dpDevice, false);
@@ -1110,8 +1113,9 @@ public class ActiveDeviceManagerTest {
    /** An LE Audio is connected. Then a Headset active device is explicitly set. */
    @Test
    public void leAudioActive_setHeadsetActiveExplicitly() {
        leAudioActiveDeviceChanged(mLeAudioDevice);
        leAudioConnected(mLeAudioDevice);
        mTestLooper.dispatchAll();
        verify(mLeAudioService).setActiveDevice(mLeAudioDevice);
        verify(mHeadsetService).setActiveDevice(null);

        headsetConnected(mHeadsetDevice, false);
@@ -1704,6 +1708,23 @@ public class ActiveDeviceManagerTest {
        verify(mLeAudioService, never()).setActiveDevice(any());
    }

    /**
     * Verifies that a Le Audio Unicast device is not treated as connected when an active device
     * change is received after the device has been disconnected.
     */
    @Test
    public void leAudioActiveDeviceChangeBeforeConnectedEvent() {
        /* Active device change comes after disconnection (device considered as not connected) */
        leAudioActiveDeviceChanged(mLeAudioDevice);
        verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice);
        mTestLooper.dispatchAll();

        /* Device is connected back */
        leAudioConnected(mLeAudioDevice);
        mTestLooper.dispatchAll();
        verify(mLeAudioService).setActiveDevice(mLeAudioDevice);
    }

    /** Helper to indicate A2dp connected for a device. */
    private void a2dpConnected(BluetoothDevice device, boolean supportHfp) {
        mDatabaseManager.setProfileConnectionPolicy(