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

Commit 50fc93b3 authored by Kyunglyul Hyun's avatar Kyunglyul Hyun
Browse files

Handle NPE from BluetoothRouteProvider

NPE could be thrown if ACTION_ACTIVE_DEVICE_CHANGED
is sent before ACTION_CONNECTION_STATE_CHANGED (connected)
is sent.
This CL handles the case by creating a new bluetooth route.
If ACTION_CONNECTION_STATE_CHANGED follows, connectedProfiles
of the route will be managed.

Bug: 235311641
Test: confirm NPE is not thrown when receiving MT call with LE HS.

Merged-In: I931b3eb38704f23b96c80d70d121c27bef297c7b
Change-Id: I931b3eb38704f23b96c80d70d121c27bef297c7b
(cherry picked from commit c376e8c1)
parent 3ff8feac
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -348,18 +348,14 @@ class BluetoothRouteProvider {

    private void addActiveRoute(BluetoothRouteInfo btRoute) {
        if (btRoute == null) {
            if (DEBUG) {
                Log.d(TAG, " btRoute is null");
            }
            Slog.w(TAG, "addActiveRoute: btRoute is null");
            return;
        }
        if (DEBUG) {
            Log.d(TAG, "Adding active route: " + btRoute.route);
        }
        if (mActiveRoutes.contains(btRoute)) {
            if (DEBUG) {
                Log.d(TAG, " btRoute is already added.");
            }
            Slog.w(TAG, "addActiveRoute: btRoute is already added.");
            return;
        }
        setRouteConnectionState(btRoute, STATE_CONNECTED);
@@ -392,6 +388,12 @@ class BluetoothRouteProvider {
    private void addActiveDevices(BluetoothDevice device) {
        // Let the given device be the first active device
        BluetoothRouteInfo activeBtRoute = mBluetoothRoutes.get(device.getAddress());
        // This could happen if ACTION_ACTIVE_DEVICE_CHANGED is sent before
        // ACTION_CONNECTION_STATE_CHANGED is sent.
        if (activeBtRoute == null) {
            activeBtRoute = createBluetoothRoute(device);
            mBluetoothRoutes.put(device.getAddress(), activeBtRoute);
        }
        addActiveRoute(activeBtRoute);

        // A bluetooth route with the same route ID should be added.