Extract scan timeout configuration in ScanManager
Extracts the logic for configuring scan timeouts into a dedicated
private method `configureTimeout`.
Bug: 394958283
Test: atest ScanManagerTest
Flag: EXEMPT refactor no-op
Change-Id: Iddb56e809e2ebd27eba7141376f9d4ae7b498116
diff --git a/android/app/src/com/android/bluetooth/le_scan/ScanManager.java b/android/app/src/com/android/bluetooth/le_scan/ScanManager.java
index ffed4fa..dd11b66 100644
--- a/android/app/src/com/android/bluetooth/le_scan/ScanManager.java
+++ b/android/app/src/com/android/bluetooth/le_scan/ScanManager.java
@@ -641,42 +641,42 @@
startRegularScan(client);
if (!isOpportunisticScanClient(client)) {
configureRegularScanParams();
-
- if (!isExemptFromScanTimeout(client)) {
- if (Flags.scanControllerThread()) {
- // Ensure only one timeout runnable exists per client.
- Runnable oldRunnable = mScanTimeoutRunnables.remove(client);
- if (oldRunnable != null) {
- mHandler.removeCallbacks(oldRunnable);
- }
-
- final Runnable timeoutRunnable =
- () -> {
- if (!mIsAvailable) return;
- mScanTimeoutRunnables.remove(client);
- regularScanTimeout(client);
- };
- mScanTimeoutRunnables.put(client, timeoutRunnable);
- mHandler.postDelayed(
- timeoutRunnable, mAdapterService.getScanTimeoutMillis());
- } else {
- Message msg = mClientHandler.obtainMessage(MSG_SCAN_TIMEOUT);
- msg.obj = client;
- // Only one timeout message should exist at any time
- mClientHandler.removeMessages(MSG_SCAN_TIMEOUT, client);
- mClientHandler.sendMessageDelayed(
- msg, mAdapterService.getScanTimeoutMillis());
- }
- Log.d(
- TAG,
- ("Apply scan timeout (" + mAdapterService.getScanTimeoutMillis() + ")")
- + (" to " + client));
- }
+ configureTimeout(client);
}
}
client.setStarted(true);
}
+ private void configureTimeout(ScanClient client) {
+ if (isExemptFromScanTimeout(client)) {
+ return;
+ }
+ if (Flags.scanControllerThread()) {
+ // Ensure only one timeout runnable exists per client
+ Runnable oldRunnable = mScanTimeoutRunnables.remove(client);
+ if (oldRunnable != null) {
+ mHandler.removeCallbacks(oldRunnable);
+ }
+ final Runnable timeoutRunnable =
+ () -> {
+ if (!mIsAvailable) return;
+ mScanTimeoutRunnables.remove(client);
+ regularScanTimeout(client);
+ };
+ mScanTimeoutRunnables.put(client, timeoutRunnable);
+ mHandler.postDelayed(timeoutRunnable, mAdapterService.getScanTimeoutMillis());
+ } else {
+ Message msg = mClientHandler.obtainMessage(MSG_SCAN_TIMEOUT);
+ msg.obj = client;
+ // Only one timeout message should exist at any time
+ mClientHandler.removeMessages(MSG_SCAN_TIMEOUT, client);
+ mClientHandler.sendMessageDelayed(msg, mAdapterService.getScanTimeoutMillis());
+ }
+ Log.d(
+ TAG,
+ "Apply scan timeout (" + mAdapterService.getScanTimeoutMillis() + ") to " + client);
+ }
+
private void handleStopScan(ScanClient tmpClient) {
int scannerIdToStop = tmpClient.getScannerId();
ScanClient client = getBatchScanClient(scannerIdToStop);