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

Commit 4e8b6aa0 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Automerger Merge Worker
Browse files

Check permission before sending batch scan result am: 77a75559 am: 477e6230

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Bluetooth/+/13063897

Change-Id: I81b6205629141a7363b30f0cd67f6866d1bd38cd
parents e8d43b49 477e6230
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -1232,6 +1232,15 @@ public class GattService extends ProfileService {
        mScanManager.callbackDone(clientIf, status);
    }

    ScanClient findBatchScanClientById(int scannerId) {
        for (ScanClient client : mScanManager.getBatchScanQueue()) {
            if (client.scannerId == scannerId) {
                return client;
            }
        }
        return null;
    }

    void onBatchScanReports(int status, int scannerId, int reportType, int numRecords,
            byte[] recordData) throws RemoteException {
        if (DBG) {
@@ -1244,6 +1253,18 @@ public class GattService extends ProfileService {
            // We only support single client for truncated mode.
            ScannerMap.App app = mScannerMap.getById(scannerId);
            if (app == null) return;

            ScanClient client = findBatchScanClientById(scannerId);
            if (client == null) {
                return;
            }

            // Do no report if location mode is OFF or the client has no location permission
            // PEERS_MAC_ADDRESS permission holders always get results
            if (!hasScanResultPermission(client)) {
                return;
            }

            if (app.callback != null) {
                app.callback.onBatchScanResults(new ArrayList<ScanResult>(results));
            } else {
@@ -1283,6 +1304,13 @@ public class GattService extends ProfileService {
            RemoteException {
        ScannerMap.App app = mScannerMap.getById(client.scannerId);
        if (app == null) return;

        // Do no report if location mode is OFF or the client has no location permission
        // PEERS_MAC_ADDRESS permission holders always get results
        if (!hasScanResultPermission(client)) {
            return;
        }

        if (client.filters == null || client.filters.isEmpty()) {
            sendBatchScanResults(app, client, new ArrayList<ScanResult>(allResults));
            // TODO: Question to reviewer: Shouldn't there be a return here?