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

Commit 20c1ba94 authored by Sergey Nikolaienkov's avatar Sergey Nikolaienkov
Browse files

Catch Exceptions thrown by BleScanner in CDM

Catch any RuntimeExceptions thrown by BluetoothLeScanner.stopScan() in
BleCompanionDeviceScanner in CDM service.

Bug: 219684162
Test: atest CtsCompanionDeviceManagerCoreTestCases
Test: atest CtsCompanionDeviceManagerUiAutomationTestCases
Change-Id: Ifc75108cb197c4bc324b906a4e41aff94c843960
parent 45b9ed83
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@ import static android.bluetooth.BluetoothAdapter.ACTION_BLE_STATE_CHANGED;
import static android.bluetooth.BluetoothAdapter.ACTION_STATE_CHANGED;
import static android.bluetooth.BluetoothAdapter.EXTRA_PREVIOUS_STATE;
import static android.bluetooth.BluetoothAdapter.EXTRA_STATE;
import static android.bluetooth.BluetoothAdapter.STATE_BLE_ON;
import static android.bluetooth.BluetoothAdapter.STATE_ON;
import static android.bluetooth.BluetoothAdapter.nameForState;
import static android.bluetooth.le.ScanCallback.SCAN_FAILED_ALREADY_STARTED;
import static android.bluetooth.le.ScanCallback.SCAN_FAILED_APPLICATION_REGISTRATION_FAILED;
@@ -230,18 +228,24 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {

        if (DEBUG) Log.i(TAG, "stopScan()");
        if (!mScanning) {
            Log.d(TAG, "  > not scanning.");
            if (DEBUG) Log.d(TAG, "  > not scanning.");
            return;
        }
        // mScanCallback is non-null here - it cannot be null when mScanning is true.

        mScanning = false;

        if (mBtAdapter.getState() != STATE_ON && mBtAdapter.getState() != STATE_BLE_ON) {
            Log.d(TAG, "BT Adapter is not turned ON");
            return;
        // BluetoothLeScanner will throw an IllegalStateException if stopScan() is called while LE
        // is not enabled.
        if (mBtAdapter.isLeEnabled()) {
            try {
                mBleScanner.stopScan(mScanCallback);
            } catch (RuntimeException e) {
                // Just to be sure not to crash system server here if BluetoothLeScanner throws
                // another RuntimeException.
                Slog.w(TAG, "Exception while stopping BLE scanning", e);
            }
        }

        mBleScanner.stopScan(mScanCallback);
        mScanning = false;
    }

    @MainThread