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

Commit 3a0964fd authored by William Escande's avatar William Escande Committed by Gerrit Code Review
Browse files

Merge "Trunk stable flag for AutoConnect multi HFP feature" into main

parents 6b1dcac3 8cec3a87
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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 =
@@ -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");
+1 −8
Original line number Diff line number Diff line
@@ -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

@@ -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) {
+8 −12
Original line number Diff line number Diff line
@@ -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;

@@ -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();
@@ -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);
    }

@@ -648,7 +648,7 @@ public class DatabaseManager {
            if (isA2dpDevice) {
                resetActiveA2dpDevice();
            }
            if (isHfpDevice && !PhonePolicy.sIsHfpMultiAutoConnectEnabled) {
            if (isHfpDevice && !mFeatureFlags.autoConnectOnMultipleHfpWhenNoA2dpDevice()) {
                resetActiveHfpDevice();
            }

@@ -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.");
+6 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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))
@@ -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<>();
        }

+6 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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))
@@ -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