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

Commit c3ea0d3f authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Prevent NPE when profile is null

When CachedBluetoothDevice is checking whether it's a connected
A2DP/HFP/HearingAid device, check profile != null

Bug: 116317072
Bug: 116044083
Bug: 110153306
Test: robolectric
Change-Id: I094d065d29ccbfc76bad00b4a307be8f1b88ec9b
Merged-In: I094d065d29ccbfc76bad00b4a307be8f1b88ec9b
(cherry picked from commit 28963cdd)
parent 1f24f521
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1189,7 +1189,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
     * @return {@code true} if {@code cachedBluetoothDevice} is a2dp device
     */
    public boolean isA2dpDevice() {
        return mProfileManager.getA2dpProfile().getConnectionStatus(mDevice) ==
        A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile();
        return a2dpProfile != null && a2dpProfile.getConnectionStatus(mDevice) ==
                BluetoothProfile.STATE_CONNECTED;
    }

@@ -1197,7 +1198,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
     * @return {@code true} if {@code cachedBluetoothDevice} is HFP device
     */
    public boolean isHfpDevice() {
        return mProfileManager.getHeadsetProfile().getConnectionStatus(mDevice) ==
        HeadsetProfile headsetProfile = mProfileManager.getHeadsetProfile();
        return headsetProfile != null && headsetProfile.getConnectionStatus(mDevice) ==
                BluetoothProfile.STATE_CONNECTED;
    }

@@ -1205,7 +1207,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
     * @return {@code true} if {@code cachedBluetoothDevice} is Hearing Aid device
     */
    public boolean isConnectedHearingAidDevice() {
        return mProfileManager.getHearingAidProfile().getConnectionStatus(mDevice) ==
        HearingAidProfile hearingAidProfile = mProfileManager.getHearingAidProfile();
        return hearingAidProfile != null && hearingAidProfile.getConnectionStatus(mDevice) ==
                BluetoothProfile.STATE_CONNECTED;
    }
}
+21 −0
Original line number Diff line number Diff line
@@ -590,4 +590,25 @@ public class CachedBluetoothDeviceTest {

        assertThat(mCachedDevice.isConnectedHearingAidDevice()).isFalse();
    }

    @Test
    public void isConnectedHfpDevice_profileIsNull_returnFalse() {
        when(mProfileManager.getHeadsetProfile()).thenReturn(null);

        assertThat(mCachedDevice.isHfpDevice()).isFalse();
    }

    @Test
    public void isConnectedA2dpDevice_profileIsNull_returnFalse() {
        when(mProfileManager.getA2dpProfile()).thenReturn(null);

        assertThat(mCachedDevice.isA2dpDevice()).isFalse();
    }

    @Test
    public void isConnectedHearingAidDevice_profileIsNull_returnFalse() {
        when(mProfileManager.getHearingAidProfile()).thenReturn(null);

        assertThat(mCachedDevice.isConnectedHearingAidDevice()).isFalse();
    }
}