Loading android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +27 −21 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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--) { Loading @@ -680,6 +683,7 @@ public class DatabaseManager { } } } } /** * Get the {@link Looper} for the handler thread. This is used in testing and helper Loading Loading @@ -712,7 +716,9 @@ public class DatabaseManager { return; } synchronized (mDatabaseLock) { mDatabase = database; } mHandlerThread = new HandlerThread("BluetoothDatabaseManager"); mHandlerThread.start(); Loading Loading @@ -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; Loading Loading
android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +27 −21 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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--) { Loading @@ -680,6 +683,7 @@ public class DatabaseManager { } } } } /** * Get the {@link Looper} for the handler thread. This is used in testing and helper Loading Loading @@ -712,7 +716,9 @@ public class DatabaseManager { return; } synchronized (mDatabaseLock) { mDatabase = database; } mHandlerThread = new HandlerThread("BluetoothDatabaseManager"); mHandlerThread.start(); Loading Loading @@ -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; Loading