Revert "Hearing Aid: Connect route when right HA is connected first"

This reverts commit 28ba74c4f5f5828105f7008f4665d601f136dc32.

Reason for revert: This is an unflagged change and we are trying to stabilize Telecom in order to ensure the code is as close to QPR1 as possible to ensure 24Q1 has a stable base.
Bug: b/306075809

Change-Id: If3270bf65a346a33ba07a11b3de88d5d28330dfd
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index 941d2ec..6cf6ae4 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -45,7 +45,6 @@
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.Map;
-import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
@@ -135,8 +134,7 @@
         @Override
         public void enter() {
             BluetoothDevice erroneouslyConnectedDevice = getBluetoothAudioConnectedDevice();
-            if (erroneouslyConnectedDevice != null &&
-                !erroneouslyConnectedDevice.equals(mHearingAidActiveDeviceCache)) {
+            if (erroneouslyConnectedDevice != null) {
                 Log.w(LOG_TAG, "Entering AudioOff state but device %s appears to be connected. " +
                         "Switching to audio-on state for that device.", erroneouslyConnectedDevice);
                 // change this to just transition to the new audio on state
@@ -254,27 +252,6 @@
             SomeArgs args = (SomeArgs) msg.obj;
             String address = (String) args.arg2;
             boolean switchingBtDevices = !Objects.equals(mDeviceAddress, address);
-
-            if (switchingBtDevices == true) { // check if it is an hearing aid pair
-                BluetoothAdapter bluetoothAdapter = mDeviceManager.getBluetoothAdapter();
-                if (bluetoothAdapter != null) {
-                    List<BluetoothDevice> activeHearingAids =
-                      bluetoothAdapter.getActiveDevices(BluetoothProfile.HEARING_AID);
-                    for (BluetoothDevice hearingAid : activeHearingAids) {
-                        if (hearingAid != null) {
-                            String hearingAidAddress = hearingAid.getAddress();
-                            if (hearingAidAddress != null) {
-                                if (hearingAidAddress.equals(address) ||
-                                    hearingAidAddress.equals(mDeviceAddress)) {
-                                    switchingBtDevices = false;
-                                    break;
-                                }
-                            }
-                        }
-                    }
-
-                }
-            }
             try {
                 switch (msg.what) {
                     case NEW_DEVICE_CONNECTED:
@@ -886,18 +863,12 @@
                 : mDeviceManager.isHearingAidSetAsCommunicationDevice();
         if (bluetoothHearingAid != null) {
             if (isHearingAidSetForCommunication) {
-                List<BluetoothDevice> hearingAidsActiveDevices = bluetoothAdapter.getActiveDevices(
-                        BluetoothProfile.HEARING_AID);
-                if (hearingAidsActiveDevices.contains(mHearingAidActiveDeviceCache)) {
-                    hearingAidActiveDevice = mHearingAidActiveDeviceCache;
-                    activeDevices++;
-                } else {
-                    for (BluetoothDevice device : hearingAidsActiveDevices) {
-                        if (device != null) {
-                            hearingAidActiveDevice = device;
-                            activeDevices++;
-                            break;
-                        }
+                for (BluetoothDevice device : bluetoothAdapter.getActiveDevices(
+                        BluetoothProfile.HEARING_AID)) {
+                    if (device != null) {
+                        hearingAidActiveDevice = device;
+                        activeDevices++;
+                        break;
                     }
                 }
             }
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
index 45a2581..3ed96a0 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
@@ -20,7 +20,6 @@
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -38,8 +37,6 @@
 import android.telecom.Log;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import android.media.AudioDeviceInfo;
-
 import com.android.internal.os.SomeArgs;
 import com.android.server.telecom.CallAudioCommunicationDeviceTracker;
 import com.android.server.telecom.TelecomSystem;
@@ -65,14 +62,7 @@
     static final BluetoothDevice DEVICE1 = makeBluetoothDevice("00:00:00:00:00:01");
     static final BluetoothDevice DEVICE2 = makeBluetoothDevice("00:00:00:00:00:02");
     static final BluetoothDevice DEVICE3 = makeBluetoothDevice("00:00:00:00:00:03");
-    static final BluetoothDevice HEARING_AID_DEVICE_LEFT = makeBluetoothDevice("CA:FE:DE:CA:00:01");
-    static final BluetoothDevice HEARING_AID_DEVICE_RIGHT =
-      makeBluetoothDevice("CA:FE:DE:CA:00:02");
-    // See HearingAidService#getActiveDevices
-    // Note: It is really important that the left HA is the first one. The left HA is always
-    // in the first index (0) and the right one in the second index (1).
-    static final BluetoothDevice[] HEARING_AIDS =
-      new BluetoothDevice[]{HEARING_AID_DEVICE_LEFT, HEARING_AID_DEVICE_RIGHT};
+    static final BluetoothDevice HEARING_AID_DEVICE = makeBluetoothDevice("00:00:00:00:00:04");
 
     @Mock private BluetoothAdapter mBluetoothAdapter;
     @Mock private BluetoothDeviceManager mDeviceManager;
@@ -97,59 +87,6 @@
 
     @SmallTest
     @Test
-    public void testConnectLeftHearingAidWhenLeftIsActive() {
-        BluetoothRouteManager sm = setupStateMachine(
-                BluetoothRouteManager.AUDIO_OFF_STATE_NAME, HEARING_AID_DEVICE_LEFT);
-        sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
-            BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
-        when(mDeviceManager.connectAudio(anyString(), anyBoolean())).thenReturn(true);
-        when(mDeviceManager.isHearingAidSetAsCommunicationDevice()).thenReturn(true);
-
-        setupConnectedDevices(null, HEARING_AIDS, null, null, HEARING_AIDS, null);
-        when(mBluetoothHeadset.getAudioState(nullable(BluetoothDevice.class)))
-          .thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
-
-        executeRoutingAction(sm,
-            BluetoothRouteManager.NEW_DEVICE_CONNECTED, HEARING_AID_DEVICE_LEFT.getAddress());
-
-        executeRoutingAction(sm,
-            BluetoothRouteManager.CONNECT_BT, HEARING_AID_DEVICE_LEFT.getAddress());
-
-        assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
-            + ":" + HEARING_AID_DEVICE_LEFT.getAddress(), sm.getCurrentState().getName());
-
-        sm.quitNow();
-    }
-
-    @SmallTest
-    @Test
-    public void testConnectRightHearingAidWhenLeftIsActive() {
-        BluetoothRouteManager sm = setupStateMachine(
-                BluetoothRouteManager.AUDIO_OFF_STATE_NAME, HEARING_AID_DEVICE_RIGHT);
-        sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
-            BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
-        when(mDeviceManager.connectAudio(anyString(), anyBoolean())).thenReturn(true);
-        when(mDeviceManager.isHearingAidSetAsCommunicationDevice()).thenReturn(true);
-
-
-        setupConnectedDevices(null, HEARING_AIDS, null, null, HEARING_AIDS, null);
-        when(mBluetoothHeadset.getAudioState(nullable(BluetoothDevice.class)))
-          .thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
-
-        executeRoutingAction(sm,
-            BluetoothRouteManager.NEW_DEVICE_CONNECTED, HEARING_AID_DEVICE_LEFT.getAddress());
-
-        executeRoutingAction(sm,
-            BluetoothRouteManager.CONNECT_BT, HEARING_AID_DEVICE_LEFT.getAddress());
-
-        assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
-            + ":" + HEARING_AID_DEVICE_LEFT.getAddress(), sm.getCurrentState().getName());
-
-        sm.quitNow();
-    }
-
-    @SmallTest
-    @Test
     public void testConnectBtRetryWhileNotConnected() {
         BluetoothRouteManager sm = setupStateMachine(
                 BluetoothRouteManager.AUDIO_OFF_STATE_NAME, null);
@@ -176,15 +113,15 @@
         BluetoothRouteManager sm = setupStateMachine(
                 BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, DEVICE1);
         setupConnectedDevices(new BluetoothDevice[]{DEVICE1},
-                HEARING_AIDS, new BluetoothDevice[]{DEVICE2},
-                DEVICE1,  HEARING_AIDS, DEVICE2);
+                new BluetoothDevice[]{HEARING_AID_DEVICE}, new BluetoothDevice[]{DEVICE2},
+                DEVICE1, HEARING_AID_DEVICE, DEVICE2);
         sm.onActiveDeviceChanged(DEVICE1, BluetoothDeviceManager.DEVICE_TYPE_HEADSET);
         sm.onActiveDeviceChanged(DEVICE2, BluetoothDeviceManager.DEVICE_TYPE_LE_AUDIO);
-        sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
+        sm.onActiveDeviceChanged(HEARING_AID_DEVICE,
                 BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
         executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST, DEVICE1.getAddress());
 
-        verifyConnectionAttempt(HEARING_AID_DEVICE_LEFT, 0);
+        verifyConnectionAttempt(HEARING_AID_DEVICE, 0);
         verifyConnectionAttempt(DEVICE1, 0);
         verifyConnectionAttempt(DEVICE2, 0);
         assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
@@ -239,11 +176,11 @@
     @Test
     public void testSkipInactiveBtDeviceWhenEvaluateActualState() {
         BluetoothRouteManager sm = setupStateMachine(
-                BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, HEARING_AID_DEVICE_LEFT);
-        setupConnectedDevices(null, HEARING_AIDS,
-                null, null, HEARING_AIDS, null);
+                BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, HEARING_AID_DEVICE);
+        setupConnectedDevices(null, new BluetoothDevice[]{HEARING_AID_DEVICE},
+                null, null, HEARING_AID_DEVICE, null);
         executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST,
-                HEARING_AID_DEVICE_LEFT.getAddress());
+                HEARING_AID_DEVICE.getAddress());
         assertEquals(BluetoothRouteManager.AUDIO_OFF_STATE_NAME, sm.getCurrentState().getName());
         sm.quitNow();
     }
@@ -263,11 +200,10 @@
 
     private void setupConnectedDevices(BluetoothDevice[] hfpDevices,
             BluetoothDevice[] hearingAidDevices, BluetoothDevice[] leAudioDevices,
-            BluetoothDevice hfpActiveDevice, BluetoothDevice[] hearingAidActiveDevices,
+            BluetoothDevice hfpActiveDevice, BluetoothDevice hearingAidActiveDevice,
             BluetoothDevice leAudioDevice) {
         if (hfpDevices == null) hfpDevices = new BluetoothDevice[]{};
         if (hearingAidDevices == null) hearingAidDevices = new BluetoothDevice[]{};
-        if (hearingAidActiveDevices == null) hearingAidActiveDevices = new BluetoothDevice[]{};
         if (leAudioDevice == null) leAudioDevices = new BluetoothDevice[]{};
 
         when(mDeviceManager.getNumConnectedDevices()).thenReturn(
@@ -286,7 +222,7 @@
         when(mBluetoothHearingAid.getConnectedDevices())
                 .thenReturn(Arrays.asList(hearingAidDevices));
         when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.HEARING_AID)))
-                .thenReturn(Arrays.asList(hearingAidActiveDevices));
+                .thenReturn(Arrays.asList(hearingAidActiveDevice, null));
         when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.LE_AUDIO)))
                 .thenReturn(Arrays.asList(leAudioDevice, null));
     }