summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author William Escande <wescande@google.com> 2024-08-01 18:49:16 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-08-01 18:49:16 +0000
commit8abf193ef91b54846d1d91a96e90caf1947c87c5 (patch)
treecc69a88fd7c17dfe0196ed09091a2d03d7ea4c75
parente30b2fbe4d0420475d18c3347c1c33759c1aa6a3 (diff)
parent68abe5359e9fa86c638dd113bf1b5030e371b138 (diff)
Merge "BluetoothApp: Enforce more error prone" into main
-rw-r--r--android/app/Android.bp8
-rw-r--r--android/app/src/com/android/bluetooth/BluetoothEventLogger.java2
-rw-r--r--android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java35
-rw-r--r--android/app/src/com/android/bluetooth/btservice/AudioRoutingManager.java9
-rw-r--r--android/app/src/com/android/bluetooth/le_scan/AppScanStats.java7
-rw-r--r--android/app/src/com/android/bluetooth/le_scan/PeriodicScanManager.java7
-rw-r--r--android/app/src/com/android/bluetooth/map/BluetoothMapAccountItem.java2
-rw-r--r--android/app/src/com/android/bluetooth/map/BluetoothMapSmsPdu.java9
-rw-r--r--android/app/src/com/android/bluetooth/mcp/MediaControlProfile.java3
-rw-r--r--android/app/src/com/android/bluetooth/opp/BluetoothOppTransfer.java1
-rw-r--r--android/app/src/com/android/bluetooth/pbap/BluetoothPbapVcardManager.java7
11 files changed, 48 insertions, 42 deletions
diff --git a/android/app/Android.bp b/android/app/Android.bp
index b38f847323..b66f1a74a8 100644
--- a/android/app/Android.bp
+++ b/android/app/Android.bp
@@ -323,23 +323,31 @@ android_app {
enabled: true,
javacflags: [
"-Xep:AlmostJavadoc:ERROR",
+ "-Xep:AndroidFrameworkBinderIdentity:ERROR",
"-Xep:AndroidFrameworkEfficientStrings:ERROR",
"-Xep:AndroidFrameworkRequiresPermission:ERROR",
"-Xep:BadImport:ERROR",
"-Xep:ClassCanBeStatic:ERROR",
+ "-Xep:DateFormatConstant:ERROR",
"-Xep:EmptyBlockTag:ERROR",
+ "-Xep:HidingField:ERROR",
"-Xep:InlineMeInliner:ERROR",
"-Xep:InvalidBlockTag:ERROR",
"-Xep:InvalidParam:ERROR",
+ "-Xep:MissingCasesInEnumSwitch:ERROR",
"-Xep:MockNotUsedInProduction:ERROR",
+ "-Xep:ModifyCollectionInEnhancedForLoop:ERROR",
"-Xep:NonApiType:ERROR",
"-Xep:NonCanonicalType:ERROR",
"-Xep:NotJavadoc:ERROR",
"-Xep:ReturnAtTheEndOfVoidFunction:ERROR",
"-Xep:StringCaseLocaleUsage:ERROR",
"-Xep:StringCharset:ERROR",
+ "-Xep:UnnecessaryStringBuilder:ERROR",
"-Xep:UnusedMethod:ERROR",
+ "-Xep:UnusedNestedClass:ERROR",
"-Xep:UnusedVariable:ERROR",
+ "-Xep:WaitNotInLoop:ERROR",
"-XepExcludedPaths:.*/srcjars/.*", // Exclude generated files
],
},
diff --git a/android/app/src/com/android/bluetooth/BluetoothEventLogger.java b/android/app/src/com/android/bluetooth/BluetoothEventLogger.java
index c4591ef000..9a5f811bcf 100644
--- a/android/app/src/com/android/bluetooth/BluetoothEventLogger.java
+++ b/android/app/src/com/android/bluetooth/BluetoothEventLogger.java
@@ -36,7 +36,7 @@ public class BluetoothEventLogger {
}
public String toString() {
- return (new StringBuilder(mTimeStamp).append(" ").append(mMsg).toString());
+ return mTimeStamp + " " + mMsg;
}
}
diff --git a/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java b/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java
index 4739530850..7fd6bb349f 100644
--- a/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java
+++ b/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java
@@ -171,7 +171,7 @@ public class BassClientStateMachine extends StateMachine {
AdapterService adapterService,
Looper looper,
int connectTimeoutMs) {
- super(TAG + "(" + device.toString() + ")", looper);
+ super(TAG + "(" + device + ")", looper);
mDevice = device;
mService = svc;
mAdapterService = adapterService;
@@ -182,21 +182,24 @@ public class BassClientStateMachine extends StateMachine {
addState(mConnectedProcessing);
setInitialState(mDisconnected);
mFirstTimeBisDiscoveryMap = new HashMap<Integer, Boolean>();
- long token = Binder.clearCallingIdentity();
- mIsAllowedList =
- DeviceConfig.getBoolean(
- DeviceConfig.NAMESPACE_BLUETOOTH, "persist.vendor.service.bt.wl", true);
- mDefNoPAS =
- DeviceConfig.getBoolean(
- DeviceConfig.NAMESPACE_BLUETOOTH,
- "persist.vendor.service.bt.defNoPAS",
- false);
- mForceSB =
- DeviceConfig.getBoolean(
- DeviceConfig.NAMESPACE_BLUETOOTH,
- "persist.vendor.service.bt.forceSB",
- false);
- Binder.restoreCallingIdentity(token);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ mIsAllowedList =
+ DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_BLUETOOTH, "persist.vendor.service.bt.wl", true);
+ mDefNoPAS =
+ DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_BLUETOOTH,
+ "persist.vendor.service.bt.defNoPAS",
+ false);
+ mForceSB =
+ DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_BLUETOOTH,
+ "persist.vendor.service.bt.forceSB",
+ false);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
static BassClientStateMachine make(
diff --git a/android/app/src/com/android/bluetooth/btservice/AudioRoutingManager.java b/android/app/src/com/android/bluetooth/btservice/AudioRoutingManager.java
index bad17b6a47..59c3e794e7 100644
--- a/android/app/src/com/android/bluetooth/btservice/AudioRoutingManager.java
+++ b/android/app/src/com/android/bluetooth/btservice/AudioRoutingManager.java
@@ -68,7 +68,7 @@ public class AudioRoutingManager extends ActiveDeviceManager {
private AudioRoutingHandler mHandler = null;
private final AudioManager mAudioManager;
private final MediaSessionManager mSessionManager;
- private final AudioManagerAudioDeviceCallback mAudioManagerAudioDeviceCallback;
+ private final AudioManagerAudioDeviceCallback mAudioRoutingManagerAudioDeviceCallback;
@Override
public void onBluetoothStateChange(int prevState, int newState) {
@@ -144,7 +144,7 @@ public class AudioRoutingManager extends ActiveDeviceManager {
mFactory = factory;
mAudioManager = service.getSystemService(AudioManager.class);
mSessionManager = service.getSystemService(MediaSessionManager.class);
- mAudioManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
+ mAudioRoutingManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
}
@Override
@@ -157,7 +157,8 @@ public class AudioRoutingManager extends ActiveDeviceManager {
mHandler = new AudioRoutingHandler(mp.handlerThreadGetLooper(mHandlerThread));
mAudioManager.addOnModeChangedListener(cmd -> mHandler.post(cmd), mHandler);
- mAudioManager.registerAudioDeviceCallback(mAudioManagerAudioDeviceCallback, mHandler);
+ mAudioManager.registerAudioDeviceCallback(
+ mAudioRoutingManagerAudioDeviceCallback, mHandler);
mAdapterService.registerBluetoothStateCallback((command) -> mHandler.post(command), this);
}
@@ -166,7 +167,7 @@ public class AudioRoutingManager extends ActiveDeviceManager {
Log.d(TAG, "cleanup()");
mAudioManager.removeOnModeChangedListener(mHandler);
- mAudioManager.unregisterAudioDeviceCallback(mAudioManagerAudioDeviceCallback);
+ mAudioManager.unregisterAudioDeviceCallback(mAudioRoutingManagerAudioDeviceCallback);
mAdapterService.unregisterBluetoothStateCallback(this);
if (mHandlerThread != null) {
mHandlerThread.quit();
diff --git a/android/app/src/com/android/bluetooth/le_scan/AppScanStats.java b/android/app/src/com/android/bluetooth/le_scan/AppScanStats.java
index 7bf79ca143..5e15fdaba2 100644
--- a/android/app/src/com/android/bluetooth/le_scan/AppScanStats.java
+++ b/android/app/src/com/android/bluetooth/le_scan/AppScanStats.java
@@ -47,7 +47,8 @@ import java.util.Objects;
public class AppScanStats {
private static final String TAG = AppScanStats.class.getSimpleName();
- static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss");
+ private static final ThreadLocal<DateFormat> DATE_FORMAT =
+ ThreadLocal.withInitial(() -> new SimpleDateFormat("MM-dd HH:mm:ss"));
// Weight is the duty cycle of the scan mode
static final int OPPORTUNISTIC_WEIGHT = 0;
@@ -1031,7 +1032,7 @@ public class AppScanStats {
for (int i = 0; i < mLastScans.size(); i++) {
LastScan scan = mLastScans.get(i);
Date timestamp = new Date(currentTime - currTime + scan.timestamp);
- sb.append("\n ").append(DATE_FORMAT.format(timestamp)).append(" - ");
+ sb.append("\n ").append(DATE_FORMAT.get().format(timestamp)).append(" - ");
sb.append(scan.duration).append("ms ");
if (scan.isOpportunisticScan) {
sb.append("Opp ");
@@ -1084,7 +1085,7 @@ public class AppScanStats {
for (Integer key : mOngoingScans.keySet()) {
LastScan scan = mOngoingScans.get(key);
Date timestamp = new Date(currentTime - currTime + scan.timestamp);
- sb.append("\n ").append(DATE_FORMAT.format(timestamp)).append(" - ");
+ sb.append("\n ").append(DATE_FORMAT.get().format(timestamp)).append(" - ");
sb.append((currTime - scan.timestamp)).append("ms ");
if (scan.isOpportunisticScan) {
sb.append("Opp ");
diff --git a/android/app/src/com/android/bluetooth/le_scan/PeriodicScanManager.java b/android/app/src/com/android/bluetooth/le_scan/PeriodicScanManager.java
index f2af13135a..e3f07a3c3c 100644
--- a/android/app/src/com/android/bluetooth/le_scan/PeriodicScanManager.java
+++ b/android/app/src/com/android/bluetooth/le_scan/PeriodicScanManager.java
@@ -33,6 +33,7 @@ import com.android.internal.annotations.VisibleForTesting;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -191,7 +192,9 @@ public class PeriodicScanManager {
}
synchronized (mSyncs) {
- for (Map.Entry<IBinder, SyncInfo> e : mSyncs.entrySet()) {
+ Iterator<Map.Entry<IBinder, SyncInfo>> it = mSyncs.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<IBinder, SyncInfo> e = it.next();
if (e.getValue().id != regId) {
continue;
}
@@ -224,7 +227,7 @@ public class PeriodicScanManager {
status);
IBinder binder = e.getKey();
binder.unlinkToDeath(e.getValue().deathRecipient, 0);
- mSyncs.remove(binder);
+ it.remove();
}
}
}
diff --git a/android/app/src/com/android/bluetooth/map/BluetoothMapAccountItem.java b/android/app/src/com/android/bluetooth/map/BluetoothMapAccountItem.java
index c03347ec32..771d7d4cc9 100644
--- a/android/app/src/com/android/bluetooth/map/BluetoothMapAccountItem.java
+++ b/android/app/src/com/android/bluetooth/map/BluetoothMapAccountItem.java
@@ -104,7 +104,7 @@ public class BluetoothMapAccountItem implements Comparable<BluetoothMapAccountIt
if (mUciPrefix == null) {
return null;
}
- return new StringBuilder(mUciPrefix).append(":").append(mUci).toString();
+ return mUciPrefix + ":" + mUci;
}
@Override
diff --git a/android/app/src/com/android/bluetooth/map/BluetoothMapSmsPdu.java b/android/app/src/com/android/bluetooth/map/BluetoothMapSmsPdu.java
index 5c3130ece7..93d315ec41 100644
--- a/android/app/src/com/android/bluetooth/map/BluetoothMapSmsPdu.java
+++ b/android/app/src/com/android/bluetooth/map/BluetoothMapSmsPdu.java
@@ -855,14 +855,5 @@ public class BluetoothMapSmsPdu {
/** This value is not defined in global standard. Only in Korea, this is used. */
public static final int ENCODING_KSC5601 = 4;
-
- /** SMS Class enumeration. See TS 23.038. */
- public enum MessageClass {
- UNKNOWN,
- CLASS_0,
- CLASS_1,
- CLASS_2,
- CLASS_3;
- }
}
}
diff --git a/android/app/src/com/android/bluetooth/mcp/MediaControlProfile.java b/android/app/src/com/android/bluetooth/mcp/MediaControlProfile.java
index d025bc7000..32d07d4145 100644
--- a/android/app/src/com/android/bluetooth/mcp/MediaControlProfile.java
+++ b/android/app/src/com/android/bluetooth/mcp/MediaControlProfile.java
@@ -686,6 +686,9 @@ public class MediaControlProfile implements MediaControlServiceCallbacks {
+ opcodes);
}
break;
+ case TRACK_TITLE:
+ // Not implemented
+ break;
}
}
}
diff --git a/android/app/src/com/android/bluetooth/opp/BluetoothOppTransfer.java b/android/app/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
index af1abea1be..b6b742e19c 100644
--- a/android/app/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
+++ b/android/app/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
@@ -446,6 +446,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
mContext.getContentResolver(), contentUri, updateValues, null, null);
}
+ @SuppressLint("WaitNotInLoop")
private void markBatchFailed(int failReason) {
synchronized (this) {
try {
diff --git a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapVcardManager.java b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapVcardManager.java
index 09965dccde..620074d1c0 100644
--- a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapVcardManager.java
+++ b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapVcardManager.java
@@ -1215,12 +1215,7 @@ public class BluetoothPbapVcardManager {
.replace(" ", "");
if (vTagAndTel[1].length() < telLenBefore) {
Log.v(TAG, "Fixing vCard TEL to " + vTagAndTel[1]);
- attr[i] =
- new StringBuilder()
- .append(vTagAndTel[0])
- .append(":")
- .append(vTagAndTel[1])
- .toString();
+ attr[i] = vTagAndTel[0] + ":" + vTagAndTel[1];
}
}
}