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

Commit 5d2c180c authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Bug fix of calling a null AdapterService"

parents 831b856f 98e6952d
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -60,11 +60,13 @@ import java.util.Objects;
    ContextMap mContextMap;

    // GattService is needed to add scan event protos to be dumped later
    GattService mGattService;
    final GattService mGattService;

    // Battery stats is used to keep track of scans and result stats
    BatteryStatsManager mBatteryStatsManager;

    private final AdapterService mAdapterService;

    class LastScan {
        public long duration;
        public long suspendDuration;
@@ -164,6 +166,7 @@ import java.util.Objects;
        }
        mWorkSource = source;
        mWorkSourceUtil = new WorkSourceUtil(source);
        mAdapterService = Objects.requireNonNull(AdapterService.getAdapterService());
    }

    synchronized void addResult(int scannerId) {
@@ -272,7 +275,7 @@ import java.util.Objects;
            mTotalSuspendTime += suspendDuration;
        }
        mOngoingScans.remove(scannerId);
        if (mLastScans.size() >= getNumScanDurationsKept()) {
        if (mLastScans.size() >= mAdapterService.getScanQuotaCount()) {
            mLastScans.remove(0);
        }
        mLastScans.add(scan);
@@ -355,19 +358,20 @@ import java.util.Objects;
    }

    synchronized boolean isScanningTooFrequently() {
        if (mLastScans.size() < getNumScanDurationsKept()) {
        if (mLastScans.size() < mAdapterService.getScanQuotaCount()) {
            return false;
        }

        return (SystemClock.elapsedRealtime() - mLastScans.get(0).timestamp)
                < getExcessiveScanningPeriodMillis();
                < mAdapterService.getScanQuotaWindowMillis();
    }

    synchronized boolean isScanningTooLong() {
        if (!isScanning()) {
            return false;
        }
        return (SystemClock.elapsedRealtime() - mScanStartTime) > getScanTimeoutMillis();
        return (SystemClock.elapsedRealtime() - mScanStartTime)
                > mAdapterService.getScanTimeoutMillis();
    }

    synchronized boolean hasRecentScan() {
+1 −1
Original line number Diff line number Diff line
@@ -317,7 +317,7 @@ public class GattService extends ProfileService {
        mAdvertiseManager = new AdvertiseManager(this, mAdapterService);
        mAdvertiseManager.start();

        mScanManager = new ScanManager(this);
        mScanManager = new ScanManager(this, mAdapterService);
        mScanManager.start();

        mPeriodicScanManager = new PeriodicScanManager(mAdapterService);
+7 −5
Original line number Diff line number Diff line
@@ -95,7 +95,8 @@ public class ScanManager {
    private BatchScanParams mBatchScanParms;

    private Integer mCurUsedTrackableAdvertisements;
    private GattService mService;
    private final GattService mService;
    private final AdapterService mAdapterService;
    private BroadcastReceiver mBatchAlarmReceiver;
    private boolean mBatchAlarmReceiverRegistered;
    private ScanNative mScanNative;
@@ -129,7 +130,7 @@ public class ScanManager {
        }
    }

    ScanManager(GattService service) {
    ScanManager(GattService service, AdapterService adapterService) {
        mRegularScanClients =
                Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
        mBatchClients = Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
@@ -141,6 +142,7 @@ public class ScanManager {
        mDm = mService.getSystemService(DisplayManager.class);
        mActivityManager = mService.getSystemService(ActivityManager.class);
        mLocationManager = mService.getSystemService(LocationManager.class);
        mAdapterService = adapterService;

        mPriorityMap.put(ScanSettings.SCAN_MODE_OPPORTUNISTIC, 0);
        mPriorityMap.put(ScanSettings.SCAN_MODE_SCREEN_OFF, 1);
@@ -383,7 +385,7 @@ public class ScanManager {
                        Message msg = obtainMessage(MSG_SCAN_TIMEOUT);
                        msg.obj = client;
                        // Only one timeout message should exist at any time
                        sendMessageDelayed(msg, AppScanStats.getScanTimeoutMillis());
                        sendMessageDelayed(msg, mAdapterService.getScanTimeoutMillis());
                    }
                }
            }
@@ -547,7 +549,7 @@ public class ScanManager {
        }

        private boolean upgradeScanModeBeforeStart(ScanClient client) {
            if (client.started || AppScanStats.getScanUpgradeDurationMillis() == 0) {
            if (client.started || mAdapterService.getScanUpgradeDurationMillis() == 0) {
                return false;
            }
            if (client.stats == null || client.stats.hasRecentScan()) {
@@ -563,7 +565,7 @@ public class ScanManager {
                if (DBG) {
                    Log.d(TAG, "scanMode is upgraded for " + client);
                }
                sendMessageDelayed(msg, AppScanStats.getScanUpgradeDurationMillis());
                sendMessageDelayed(msg, mAdapterService.getScanUpgradeDurationMillis());
                return true;
            }
            return false;