diff options
author | 2024-08-01 18:49:16 +0000 | |
---|---|---|
committer | 2024-08-01 18:49:16 +0000 | |
commit | 8abf193ef91b54846d1d91a96e90caf1947c87c5 (patch) | |
tree | cc69a88fd7c17dfe0196ed09091a2d03d7ea4c75 | |
parent | e30b2fbe4d0420475d18c3347c1c33759c1aa6a3 (diff) | |
parent | 68abe5359e9fa86c638dd113bf1b5030e371b138 (diff) |
Merge "BluetoothApp: Enforce more error prone" into main
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]; } } } |