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

Commit b4f64701 authored by Evan Chen's avatar Evan Chen
Browse files

Catch the exception when ble startScan

Fix: 248162096, 245003000
Test: atest CtsCompanionDeviceManagerUiAutomationTestCases
      atest CtsOsTestCases:CompanionDeviceManagerTest
Change-Id: I93c564811910017af4b1a5323b0065ba4104cdb2
parent 3fd2b83e
Loading
Loading
Loading
Loading
+27 −9
Original line number Diff line number Diff line
@@ -184,13 +184,21 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
    @MainThread
    private void startScan() {
        enforceInitialized();
        // This method should not be called if scan is already in progress.
        if (mScanning) throw new IllegalStateException("Scan is already in progress.");
        // Neither should this method be called if the adapter is not available.
        if (mBleScanner == null) throw new IllegalStateException("BLE is not available.");

        if (DEBUG) Log.i(TAG, "startScan()");

        // This method should not be called if scan is already in progress.
        if (mScanning) {
            Slog.w(TAG, "Scan is already in progress.");
            return;
        }

        // Neither should this method be called if the adapter is not available.
        if (mBleScanner == null) {
            Slog.w(TAG, "BLE is not available.");
            return;
        }

        // Collect MAC addresses from all associations.
        final Set<String> macAddresses = new HashSet<>();
        for (AssociationInfo association : mAssociationStore.getAssociations()) {
@@ -221,8 +229,18 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
            filters.add(filter);
        }

        // BluetoothLeScanner will throw an IllegalStateException if startScan() is called while LE
        // is not enabled.
        if (mBtAdapter.isLeEnabled()) {
            try {
                mBleScanner.startScan(filters, SCAN_SETTINGS, mScanCallback);
                mScanning = true;
            } catch (IllegalStateException e) {
                Slog.w(TAG, "Exception while starting BLE scanning", e);
            }
        } else {
            Slog.w(TAG, "BLE scanning is not turned on");
        }
    }

    private void stopScanIfNeeded() {
@@ -240,11 +258,11 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
        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.
            } catch (IllegalStateException e) {
                Slog.w(TAG, "Exception while stopping BLE scanning", e);
            }
        } else {
            Slog.w(TAG, "BLE scanning is not turned on");
        }

        mScanning = false;