Loading android/app/src/com/android/bluetooth/btservice/AdapterService.java +4 −2 Original line number Diff line number Diff line Loading @@ -671,7 +671,9 @@ public class AdapterService extends Service { mSdpManager = SdpManager.init(this); mDatabaseManager = new DatabaseManager(this); FeatureFlagsImpl featureFlags = new FeatureFlagsImpl(); mDatabaseManager = new DatabaseManager(this, featureFlags); mDatabaseManager.start(MetadataDatabase.createDatabase(this)); boolean isAutomotiveDevice = Loading @@ -687,7 +689,7 @@ public class AdapterService extends Service { */ if (!isAutomotiveDevice && getResources().getBoolean(R.bool.enable_phone_policy)) { Log.i(TAG, "Phone policy enabled"); mPhonePolicy = new PhonePolicy(this, new ServiceFactory(), new FeatureFlagsImpl()); mPhonePolicy = new PhonePolicy(this, new ServiceFactory(), featureFlags); mPhonePolicy.start(); } else { Log.i(TAG, "Phone policy disabled"); Loading android/app/src/com/android/bluetooth/btservice/PhonePolicy.java +1 −8 Original line number Diff line number Diff line Loading @@ -81,13 +81,6 @@ public class PhonePolicy implements AdapterService.BluetoothStateCallback { static final String BYPASS_LE_AUDIO_ALLOWLIST_PROPERTY = "persist.bluetooth.leaudio.bypass_allow_list"; /** flag for multi auto connect */ public static boolean sIsHfpMultiAutoConnectEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_BLUETOOTH, "com.android.bluetooth.hfp_multi_auto_connect", false); // Timeouts @VisibleForTesting static int sConnectOtherProfilesTimeoutMillis = 6000; // 6s Loading Loading @@ -645,7 +638,7 @@ public class PhonePolicy implements AdapterService.BluetoothStateCallback { return; } if (sIsHfpMultiAutoConnectEnabled) { if (mFeatureFlags.autoConnectOnMultipleHfpWhenNoA2dpDevice()) { final List<BluetoothDevice> mostRecentlyConnectedHfpDevices = mDatabaseManager.getMostRecentlyActiveHfpDevices(); for (BluetoothDevice hfpDevice : mostRecentlyConnectedHfpDevices) { Loading android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +8 −12 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import android.util.Log; import com.android.bluetooth.BluetoothStatsLog; import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.PhonePolicy; import com.android.bluetooth.flags.FeatureFlags; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; Loading @@ -67,7 +67,8 @@ import java.util.stream.Collectors; public class DatabaseManager { private static final String TAG = "BluetoothDatabase"; private AdapterService mAdapterService = null; private final AdapterService mAdapterService; private final FeatureFlags mFeatureFlags; private HandlerThread mHandlerThread = null; private Handler mHandler = null; private final Object mDatabaseLock = new Object(); Loading Loading @@ -112,11 +113,10 @@ public class DatabaseManager { private static final String LEGACY_HEARING_AID_PRIORITY_PREFIX = "bluetooth_hearing_aid_priority_"; /** * Constructor of the DatabaseManager */ public DatabaseManager(AdapterService service) { mAdapterService = service; /** Constructor of the DatabaseManager */ public DatabaseManager(AdapterService service, FeatureFlags featureFlags) { mAdapterService = Objects.requireNonNull(service, "Adapter service cannot be null"); mFeatureFlags = Objects.requireNonNull(featureFlags, "Feature Flags cannot be null"); mMetadataChangedLog = EvictingQueue.create(METADATA_CHANGED_LOG_MAX_SIZE); } Loading Loading @@ -648,7 +648,7 @@ public class DatabaseManager { if (isA2dpDevice) { resetActiveA2dpDevice(); } if (isHfpDevice && !PhonePolicy.sIsHfpMultiAutoConnectEnabled) { if (isHfpDevice && !mFeatureFlags.autoConnectOnMultipleHfpWhenNoA2dpDevice()) { resetActiveHfpDevice(); } Loading Loading @@ -1034,10 +1034,6 @@ public class DatabaseManager { */ public void start(MetadataDatabase database) { Log.d(TAG, "start()"); if (mAdapterService == null) { Log.e(TAG, "stat failed, mAdapterService is null."); return; } if (database == null) { Log.e(TAG, "stat failed, database is null."); Loading android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.bluetooth.TestUtils; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.FakeFeatureFlagsImpl; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; import com.android.bluetooth.le_audio.LeAudioService; Loading Loading @@ -101,7 +103,8 @@ public class ActiveDeviceManagerTest { // Set up mocks and test assets MockitoAnnotations.initMocks(this); TestUtils.setAdapterService(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService, new FakeFeatureFlagsImpl()); when(mAdapterService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager); when(mAdapterService.getSystemServiceName(AudioManager.class)) Loading Loading @@ -1330,8 +1333,8 @@ public class ActiveDeviceManagerTest { private class TestDatabaseManager extends DatabaseManager { ArrayMap<BluetoothDevice, SparseIntArray> mProfileConnectionPolicy; TestDatabaseManager(AdapterService service) { super(service); TestDatabaseManager(AdapterService service, FeatureFlags featureFlags) { super(service, featureFlags); mProfileConnectionPolicy = new ArrayMap<>(); } Loading android/app/tests/unit/src/com/android/bluetooth/btservice/AudioRoutingManagerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.bluetooth.TestUtils; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.FakeFeatureFlagsImpl; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; import com.android.bluetooth.le_audio.LeAudioService; Loading Loading @@ -99,7 +101,8 @@ public class AudioRoutingManagerTest { // Set up mocks and test assets MockitoAnnotations.initMocks(this); TestUtils.setAdapterService(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService, new FakeFeatureFlagsImpl()); when(mAdapterService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager); when(mAdapterService.getSystemServiceName(AudioManager.class)) Loading Loading @@ -1252,8 +1255,8 @@ public class AudioRoutingManagerTest { private class TestDatabaseManager extends DatabaseManager { ArrayMap<BluetoothDevice, SparseIntArray> mProfileConnectionPolicy; TestDatabaseManager(AdapterService service) { super(service); TestDatabaseManager(AdapterService service, FeatureFlags featureFlags) { super(service, featureFlags); mProfileConnectionPolicy = new ArrayMap<>(); } Loading Loading
android/app/src/com/android/bluetooth/btservice/AdapterService.java +4 −2 Original line number Diff line number Diff line Loading @@ -671,7 +671,9 @@ public class AdapterService extends Service { mSdpManager = SdpManager.init(this); mDatabaseManager = new DatabaseManager(this); FeatureFlagsImpl featureFlags = new FeatureFlagsImpl(); mDatabaseManager = new DatabaseManager(this, featureFlags); mDatabaseManager.start(MetadataDatabase.createDatabase(this)); boolean isAutomotiveDevice = Loading @@ -687,7 +689,7 @@ public class AdapterService extends Service { */ if (!isAutomotiveDevice && getResources().getBoolean(R.bool.enable_phone_policy)) { Log.i(TAG, "Phone policy enabled"); mPhonePolicy = new PhonePolicy(this, new ServiceFactory(), new FeatureFlagsImpl()); mPhonePolicy = new PhonePolicy(this, new ServiceFactory(), featureFlags); mPhonePolicy.start(); } else { Log.i(TAG, "Phone policy disabled"); Loading
android/app/src/com/android/bluetooth/btservice/PhonePolicy.java +1 −8 Original line number Diff line number Diff line Loading @@ -81,13 +81,6 @@ public class PhonePolicy implements AdapterService.BluetoothStateCallback { static final String BYPASS_LE_AUDIO_ALLOWLIST_PROPERTY = "persist.bluetooth.leaudio.bypass_allow_list"; /** flag for multi auto connect */ public static boolean sIsHfpMultiAutoConnectEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_BLUETOOTH, "com.android.bluetooth.hfp_multi_auto_connect", false); // Timeouts @VisibleForTesting static int sConnectOtherProfilesTimeoutMillis = 6000; // 6s Loading Loading @@ -645,7 +638,7 @@ public class PhonePolicy implements AdapterService.BluetoothStateCallback { return; } if (sIsHfpMultiAutoConnectEnabled) { if (mFeatureFlags.autoConnectOnMultipleHfpWhenNoA2dpDevice()) { final List<BluetoothDevice> mostRecentlyConnectedHfpDevices = mDatabaseManager.getMostRecentlyActiveHfpDevices(); for (BluetoothDevice hfpDevice : mostRecentlyConnectedHfpDevices) { Loading
android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +8 −12 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import android.util.Log; import com.android.bluetooth.BluetoothStatsLog; import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.PhonePolicy; import com.android.bluetooth.flags.FeatureFlags; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; Loading @@ -67,7 +67,8 @@ import java.util.stream.Collectors; public class DatabaseManager { private static final String TAG = "BluetoothDatabase"; private AdapterService mAdapterService = null; private final AdapterService mAdapterService; private final FeatureFlags mFeatureFlags; private HandlerThread mHandlerThread = null; private Handler mHandler = null; private final Object mDatabaseLock = new Object(); Loading Loading @@ -112,11 +113,10 @@ public class DatabaseManager { private static final String LEGACY_HEARING_AID_PRIORITY_PREFIX = "bluetooth_hearing_aid_priority_"; /** * Constructor of the DatabaseManager */ public DatabaseManager(AdapterService service) { mAdapterService = service; /** Constructor of the DatabaseManager */ public DatabaseManager(AdapterService service, FeatureFlags featureFlags) { mAdapterService = Objects.requireNonNull(service, "Adapter service cannot be null"); mFeatureFlags = Objects.requireNonNull(featureFlags, "Feature Flags cannot be null"); mMetadataChangedLog = EvictingQueue.create(METADATA_CHANGED_LOG_MAX_SIZE); } Loading Loading @@ -648,7 +648,7 @@ public class DatabaseManager { if (isA2dpDevice) { resetActiveA2dpDevice(); } if (isHfpDevice && !PhonePolicy.sIsHfpMultiAutoConnectEnabled) { if (isHfpDevice && !mFeatureFlags.autoConnectOnMultipleHfpWhenNoA2dpDevice()) { resetActiveHfpDevice(); } Loading Loading @@ -1034,10 +1034,6 @@ public class DatabaseManager { */ public void start(MetadataDatabase database) { Log.d(TAG, "start()"); if (mAdapterService == null) { Log.e(TAG, "stat failed, mAdapterService is null."); return; } if (database == null) { Log.e(TAG, "stat failed, database is null."); Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.bluetooth.TestUtils; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.FakeFeatureFlagsImpl; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; import com.android.bluetooth.le_audio.LeAudioService; Loading Loading @@ -101,7 +103,8 @@ public class ActiveDeviceManagerTest { // Set up mocks and test assets MockitoAnnotations.initMocks(this); TestUtils.setAdapterService(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService, new FakeFeatureFlagsImpl()); when(mAdapterService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager); when(mAdapterService.getSystemServiceName(AudioManager.class)) Loading Loading @@ -1330,8 +1333,8 @@ public class ActiveDeviceManagerTest { private class TestDatabaseManager extends DatabaseManager { ArrayMap<BluetoothDevice, SparseIntArray> mProfileConnectionPolicy; TestDatabaseManager(AdapterService service) { super(service); TestDatabaseManager(AdapterService service, FeatureFlags featureFlags) { super(service, featureFlags); mProfileConnectionPolicy = new ArrayMap<>(); } Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/AudioRoutingManagerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.bluetooth.TestUtils; import com.android.bluetooth.Utils; import com.android.bluetooth.a2dp.A2dpService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.FakeFeatureFlagsImpl; import com.android.bluetooth.flags.FeatureFlags; import com.android.bluetooth.hearingaid.HearingAidService; import com.android.bluetooth.hfp.HeadsetService; import com.android.bluetooth.le_audio.LeAudioService; Loading Loading @@ -99,7 +101,8 @@ public class AudioRoutingManagerTest { // Set up mocks and test assets MockitoAnnotations.initMocks(this); TestUtils.setAdapterService(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService); mDatabaseManager = new TestDatabaseManager(mAdapterService, new FakeFeatureFlagsImpl()); when(mAdapterService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager); when(mAdapterService.getSystemServiceName(AudioManager.class)) Loading Loading @@ -1252,8 +1255,8 @@ public class AudioRoutingManagerTest { private class TestDatabaseManager extends DatabaseManager { ArrayMap<BluetoothDevice, SparseIntArray> mProfileConnectionPolicy; TestDatabaseManager(AdapterService service) { super(service); TestDatabaseManager(AdapterService service, FeatureFlags featureFlags) { super(service, featureFlags); mProfileConnectionPolicy = new ArrayMap<>(); } Loading