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

Commit 041e53cd authored by William Escande's avatar William Escande
Browse files

ErrorProne: DatabaseManager

```
84: warning: The field 'LEGACY_BTSNOOP_DEFAULT_MODE' is never read.
            LEGACY_BTSNOOP_DEFAULT_MODE = "bluetooth_btsnoop_default_mode";
            ^
127|144|151|157: warning: Synchronizing on non-final fields is not safe:
if the field is ever updated, different threads may end up locking on different objects.
                    synchronized (mDatabase) {
                                 ^
555: warning: Write to static variable should not be guarded by instance lock 'mMetadataCache'
            metadata.last_active_time = MetadataDatabase.sCurrentConnectionNumber++;
                                                        ^
1076: warning: The type `Map.Entry` was referred to by the non-canonical
name `HashMap.Entry`. This may be misleading.
        for (HashMap.Entry<String, Metadata> entry : mMetadataCache.entrySet()) {
                    ^
```

Bug: 236759221
Test: m RUN_ERROR_PRONE=true Bluetooth
Ignore-AOSP-First: Merge conflict resolution
Change-Id: I848452e9b1c03b08ee55c35ff286a3080b32ee73
parent ff94db10
Loading
Loading
Loading
Loading
+27 −21
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.util.Log;
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;

import com.google.common.collect.EvictingQueue;
@@ -64,7 +65,8 @@ public class DatabaseManager {
    private AdapterService mAdapterService = null;
    private HandlerThread mHandlerThread = null;
    private Handler mHandler = null;
    private MetadataDatabase mDatabase = null;
    private final Object mDatabaseLock = new Object();
    private @GuardedBy("mDatabaseLock") MetadataDatabase mDatabase = null;
    private boolean mMigratedFromSettingsGlobal = false;

    @VisibleForTesting
@@ -80,8 +82,6 @@ public class DatabaseManager {
    private static final int MSG_CLEAR_DATABASE = 100;
    private static final String LOCAL_STORAGE = "LocalStorage";

    private static final String
            LEGACY_BTSNOOP_DEFAULT_MODE = "bluetooth_btsnoop_default_mode";
    private static final String
            LEGACY_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_";
    private static final String
@@ -124,7 +124,7 @@ public class DatabaseManager {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case MSG_LOAD_DATABASE: {
                    synchronized (mDatabase) {
                    synchronized (mDatabaseLock) {
                        List<Metadata> list;
                        try {
                            list = mDatabase.load();
@@ -141,20 +141,20 @@ public class DatabaseManager {
                }
                case MSG_UPDATE_DATABASE: {
                    Metadata data = (Metadata) msg.obj;
                    synchronized (mDatabase) {
                    synchronized (mDatabaseLock) {
                        mDatabase.insert(data);
                    }
                    break;
                }
                case MSG_DELETE_DATABASE: {
                    String address = (String) msg.obj;
                    synchronized (mDatabase) {
                    synchronized (mDatabaseLock) {
                        mDatabase.delete(address);
                    }
                    break;
                }
                case MSG_CLEAR_DATABASE: {
                    synchronized (mDatabase) {
                    synchronized (mDatabaseLock) {
                        mDatabase.deleteAll();
                    }
                    break;
@@ -554,7 +554,9 @@ public class DatabaseManager {
            }
            // Updates last_active_time to the current counter value and increments the counter
            Metadata metadata = mMetadataCache.get(address);
            synchronized (MetadataDatabase.class) {
                metadata.last_active_time = MetadataDatabase.sCurrentConnectionNumber++;
            }

            // Only update is_active_a2dp_device if an a2dp device is connected
            if (isA2dpDevice) {
@@ -666,6 +668,7 @@ public class DatabaseManager {
     */
    private void compactLastConnectionTime(List<Metadata> metadataList) {
        Log.d(TAG, "compactLastConnectionTime: Compacting metadata after load");
        synchronized (MetadataDatabase.class) {
            MetadataDatabase.sCurrentConnectionNumber = 0;
            // Have to go in reverse order as list is ordered by descending last_active_time
            for (int index = metadataList.size() - 1; index >= 0; index--) {
@@ -680,6 +683,7 @@ public class DatabaseManager {
                }
            }
        }
    }

    /**
     * Get the {@link Looper} for the handler thread. This is used in testing and helper
@@ -712,7 +716,9 @@ public class DatabaseManager {
            return;
        }

        synchronized (mDatabaseLock) {
            mDatabase = database;
        }

        mHandlerThread = new HandlerThread("BluetoothDatabaseManager");
        mHandlerThread.start();
@@ -1075,7 +1081,7 @@ public class DatabaseManager {
            writer.println("    " + log);
        }
        writer.println("\nMetadata:");
        for (HashMap.Entry<String, Metadata> entry : mMetadataCache.entrySet()) {
        for (Map.Entry<String, Metadata> entry : mMetadataCache.entrySet()) {
            if (entry.getKey().equals(LOCAL_STORAGE)) {
                // No need to dump local storage
                continue;