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

Commit b6c34e85 authored by hughchen's avatar hughchen
Browse files

Fix music output unable switch from BTHS to Phone

Some device may not have HearingAidProfile,
consider all situation to set Phone as active device.

Bug: 128815229
Test: RunSettingsLibTests
Change-Id: I852791915985e1e2b5ca4695110d6a6243c93c24
parent 11ba3119
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -70,13 +70,18 @@ public class PhoneMediaDevice extends MediaDevice {
        final HearingAidProfile hapProfile = mProfileManager.getHearingAidProfile();
        final A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile();

        // Some device may not have HearingAidProfile, consider all situation to set active device.
        boolean isConnected = false;

        if (hapProfile != null && a2dpProfile != null) {
            isConnected = hapProfile.setActiveDevice(null) && a2dpProfile.setActiveDevice(null);
            updateSummary(true);
            setConnectedRecord();
        } else if (a2dpProfile != null) {
            isConnected = a2dpProfile.setActiveDevice(null);
        } else if (hapProfile != null) {
            isConnected = hapProfile.setActiveDevice(null);
        }
        updateSummary(isConnected);
        setConnectedRecord();

        Log.d(TAG, "connect() device : " + getName() + ", is selected : " + isConnected);
        return isConnected;
    }
+24 −0
Original line number Diff line number Diff line
@@ -99,6 +99,30 @@ public class PhoneMediaDeviceTest {
        assertThat(mPhoneMediaDevice.connect()).isFalse();
    }

    @Test
    public void connect_hearingAidProfileIsNullAndA2dpProfileNotNull_isConnectedReturnTrue() {
        when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null);

        when(mA2dpProfile.setActiveDevice(null)).thenReturn(true);
        assertThat(mPhoneMediaDevice.connect()).isTrue();
    }

    @Test
    public void connect_hearingAidProfileNotNullAndA2dpProfileIsNull_isConnectedReturnTrue() {
        when(mLocalProfileManager.getA2dpProfile()).thenReturn(null);

        when(mHapProfile.setActiveDevice(null)).thenReturn(true);
        assertThat(mPhoneMediaDevice.connect()).isTrue();
    }

    @Test
    public void connect_hearingAidProfileAndA2dpProfileIsNull_isConnectedReturnFalse() {
        when(mLocalProfileManager.getA2dpProfile()).thenReturn(null);
        when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null);

        assertThat(mPhoneMediaDevice.connect()).isFalse();
    }

    @Test
    public void updateSummary_isActiveIsTrue_returnActiveString() {
        mPhoneMediaDevice.updateSummary(true);