Merge "Added API to verify that SubscriptionInfo is converted and to update carriers that support pSIM conversion." into main
diff --git a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
index 17ff542..f7395c6 100644
--- a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
+++ b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
@@ -128,13 +128,13 @@
     // A runnable which is used to automatically exit from Ecm after a period of time.
     private final Runnable mExitEcmRunnable = this::exitEmergencyCallbackMode;
     // Tracks emergency calls by callId that have reached {@link Call.State#ACTIVE}.
-    private final Set<String> mActiveEmergencyCalls = new ArraySet<>();
+    private final Set<android.telecom.Connection> mActiveEmergencyCalls = new ArraySet<>();
     private Phone mPhoneToExit;
     private int mPdnDisconnectionTimeoutMs = DEFAULT_EPDN_DISCONNECTION_TIMEOUT_MS;
     private final Object mLock = new Object();
     private Phone mPhone;
-    // Tracks ongoing emergency callId to handle a second emergency call
-    private String mOngoingCallId;
+    // Tracks ongoing emergency connection to handle a second emergency call
+    private android.telecom.Connection mOngoingConnection;
     // Domain of the active emergency call. Assuming here that there will only be one domain active.
     private int mEmergencyCallDomain = NetworkRegistrationInfo.DOMAIN_UNKNOWN;
     private CompletableFuture<Integer> mCallEmergencyModeFuture;
@@ -498,21 +498,22 @@
      * Handles turning on radio and switching DDS.
      *
      * @param phone                 the {@code Phone} on which to process the emergency call.
-     * @param callId                the call id on which to process the emergency call.
+     * @param c                     the {@code Connection} on which to process the emergency call.
      * @param isTestEmergencyNumber whether this is a test emergency number.
      * @return a {@code CompletableFuture} that results in {@code DisconnectCause.NOT_DISCONNECTED}
      *         if emergency call successfully started.
      */
     public CompletableFuture<Integer> startEmergencyCall(@NonNull Phone phone,
-            @NonNull String callId, boolean isTestEmergencyNumber) {
-        Rlog.i(TAG, "startEmergencyCall: phoneId=" + phone.getPhoneId() + ", callId=" + callId);
+            @NonNull android.telecom.Connection c, boolean isTestEmergencyNumber) {
+        Rlog.i(TAG, "startEmergencyCall: phoneId=" + phone.getPhoneId()
+                + ", callId=" + c.getTelecomCallId());
 
         if (mPhone != null) {
             // Create new future to return as to not interfere with any uncompleted futures.
             // Case1) When 2nd emergency call is initiated during an active call on the same phone.
             // Case2) While the device is in ECBM, an emergency call is initiated on the same phone.
             if (isSamePhone(mPhone, phone) && (!mActiveEmergencyCalls.isEmpty() || isInEcm())) {
-                mOngoingCallId = callId;
+                mOngoingConnection = c;
                 mIsTestEmergencyNumber = isTestEmergencyNumber;
                 // Ensure that domain selector requests scan.
                 mLastEmergencyRegResult = new EmergencyRegResult(
@@ -547,13 +548,13 @@
             }
 
             mPhone = phone;
-            mOngoingCallId = callId;
+            mOngoingConnection = c;
             mIsTestEmergencyNumber = isTestEmergencyNumber;
             return mCallEmergencyModeFuture;
         }
 
         mPhone = phone;
-        mOngoingCallId = callId;
+        mOngoingConnection = c;
         mIsTestEmergencyNumber = isTestEmergencyNumber;
         turnOnRadioAndSwitchDds(mPhone, EMERGENCY_TYPE_CALL, mIsTestEmergencyNumber);
         return mCallEmergencyModeFuture;
@@ -566,13 +567,13 @@
      * Enter ECM only once all active emergency calls have ended. If a call never reached
      * {@link Call.State#ACTIVE}, then no need to enter ECM.
      *
-     * @param callId the call id on which to end the emergency call.
+     * @param c the emergency call disconnected.
      */
-    public void endCall(@NonNull String callId) {
-        boolean wasActive = mActiveEmergencyCalls.remove(callId);
+    public void endCall(@NonNull android.telecom.Connection c) {
+        boolean wasActive = mActiveEmergencyCalls.remove(c);
 
-        if (Objects.equals(mOngoingCallId, callId)) {
-            mOngoingCallId = null;
+        if (Objects.equals(mOngoingConnection, c)) {
+            mOngoingConnection = null;
             mOngoingCallProperties = 0;
         }
 
@@ -580,11 +581,11 @@
                 && isEmergencyCallbackModeSupported()) {
             enterEmergencyCallbackMode();
 
-            if (mOngoingCallId == null) {
+            if (mOngoingConnection == null) {
                 mIsEmergencyCallStartedDuringEmergencySms = false;
                 mCallEmergencyModeFuture = null;
             }
-        } else if (mOngoingCallId == null) {
+        } else if (mOngoingConnection == null) {
             if (isInEcm()) {
                 mIsEmergencyCallStartedDuringEmergencySms = false;
                 mCallEmergencyModeFuture = null;
@@ -605,7 +606,7 @@
         mIsTestEmergencyNumber = false;
         mIsEmergencyCallStartedDuringEmergencySms = false;
         mCallEmergencyModeFuture = null;
-        mOngoingCallId = null;
+        mOngoingConnection = null;
         mOngoingCallProperties = 0;
         mPhone = null;
     }
@@ -843,10 +844,10 @@
     /**
      * Notify the tracker that the emergency call domain has been updated.
      * @param phoneType The new PHONE_TYPE_* of the call.
-     * @param callId The ID of the call
+     * @param c The connection of the call
      */
-    public void onEmergencyCallDomainUpdated(int phoneType, String callId) {
-        Rlog.d(TAG, "domain update for callId: " + callId);
+    public void onEmergencyCallDomainUpdated(int phoneType, android.telecom.Connection c) {
+        Rlog.d(TAG, "domain update for callId: " + c.getTelecomCallId());
         int domain = -1;
         switch(phoneType) {
             case (PhoneConstants.PHONE_TYPE_CDMA_LTE):
@@ -874,13 +875,13 @@
      * Handles emergency call state change.
      *
      * @param state the new call state
-     * @param callId the callId whose state has changed
+     * @param c the call whose state has changed
      */
-    public void onEmergencyCallStateChanged(Call.State state, String callId) {
+    public void onEmergencyCallStateChanged(Call.State state, android.telecom.Connection c) {
         if (state == Call.State.ACTIVE) {
-            mActiveEmergencyCalls.add(callId);
-            if (Objects.equals(mOngoingCallId, callId)) {
-                Rlog.i(TAG, "call connected " + callId);
+            mActiveEmergencyCalls.add(c);
+            if (Objects.equals(mOngoingConnection, c)) {
+                Rlog.i(TAG, "call connected " + c.getTelecomCallId());
                 if (mPhone != null
                         && isVoWiFi(mOngoingCallProperties)
                         && mEmergencyMode == EmergencyConstants.MODE_EMERGENCY_WLAN) {
@@ -895,10 +896,10 @@
      * Handles the change of emergency call properties.
      *
      * @param properties the new call properties.
-     * @param callId the callId whose state has changed.
+     * @param c the call whose state has changed.
      */
-    public void onEmergencyCallPropertiesChanged(int properties, String callId) {
-        if (Objects.equals(mOngoingCallId, callId)) {
+    public void onEmergencyCallPropertiesChanged(int properties, android.telecom.Connection c) {
+        if (Objects.equals(mOngoingConnection, c)) {
             mOngoingCallProperties = properties;
         }
     }
@@ -1161,7 +1162,7 @@
             if (isInEcm()) {
                 // When the emergency mode is not in MODE_EMERGENCY_CALLBACK,
                 // it needs to notify the emergency callback mode to modem.
-                if (mActiveEmergencyCalls.isEmpty() && mOngoingCallId == null) {
+                if (mActiveEmergencyCalls.isEmpty() && mOngoingConnection == null) {
                     setEmergencyMode(mPhone, EMERGENCY_TYPE_CALL, MODE_EMERGENCY_CALLBACK,
                             MSG_SET_EMERGENCY_CALLBACK_MODE_DONE);
                 }
@@ -1229,7 +1230,7 @@
             }
 
             final Phone phoneForEmergency = phone;
-            final String expectedCallId = mOngoingCallId;
+            final android.telecom.Connection expectedConnection = mOngoingConnection;
             final int waitForInServiceTimeout =
                     needToTurnOnRadio ? DEFAULT_WAIT_FOR_IN_SERVICE_TIMEOUT_MS : 0;
             Rlog.i(TAG, "turnOnRadioAndSwitchDds: timeout=" + waitForInServiceTimeout);
@@ -1247,8 +1248,9 @@
                             completeEmergencyMode(emergencyType, DisconnectCause.POWER_OFF);
                         }
                     } else {
-                        if (!Objects.equals(mOngoingCallId, expectedCallId)) {
-                            Rlog.i(TAG, "onComplete " + expectedCallId + " canceled.");
+                        if (!Objects.equals(mOngoingConnection, expectedConnection)) {
+                            Rlog.i(TAG, "onComplete "
+                                    + expectedConnection.getTelecomCallId() + " canceled.");
                             return;
                         }
                         switchDdsAndSetEmergencyMode(phone, emergencyType);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
index b46f8bf..1457aaa 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
@@ -93,8 +93,6 @@
 @RunWith(AndroidTestingRunner.class)
 @TestableLooper.RunWithLooper
 public class EmergencyStateTrackerTest extends TelephonyTest {
-    private static final String TEST_CALL_ID = "TC@TEST1";
-    private static final String TEST_CALL_ID_2 = "TC@TEST2";
     private static final String TEST_SMS_ID = "1111";
     private static final String TEST_SMS_ID_2 = "2222";
     private static final long TEST_ECM_EXIT_TIMEOUT_MS = 500;
@@ -106,6 +104,8 @@
     @Mock EmergencyStateTracker.TelephonyManagerProxy mTelephonyManagerProxy;
     @Mock PhoneSwitcher mPhoneSwitcher;
     @Mock RadioOnHelper mRadioOnHelper;
+    @Mock android.telecom.Connection mTestConnection1;
+    @Mock android.telecom.Connection mTestConnection2;
 
     @Before
     public void setUp() throws Exception {
@@ -163,8 +163,8 @@
         doReturn(nri).when(ss).getNetworkRegistrationInfo(anyInt(), anyInt());
         // Spy is used to capture consumer in delayDialForDdsSwitch
         EmergencyStateTracker spyEst = spy(emergencyStateTracker);
-        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone, TEST_CALL_ID,
-                false);
+        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone,
+                mTestConnection1, false);
 
         // startEmergencyCall should trigger radio on
         ArgumentCaptor<RadioOnStateListener.Callback> callback = ArgumentCaptor
@@ -222,8 +222,8 @@
         doReturn(nri).when(ss).getNetworkRegistrationInfo(anyInt(), anyInt());
         // Spy is used to capture consumer in delayDialForDdsSwitch
         EmergencyStateTracker spyEst = spy(emergencyStateTracker);
-        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone, TEST_CALL_ID,
-                false);
+        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone,
+                mTestConnection1, false);
 
         // startEmergencyCall should trigger radio on
         ArgumentCaptor<RadioOnStateListener.Callback> callback = ArgumentCaptor
@@ -267,7 +267,7 @@
                 false /* isRadioOn */);
 
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // startEmergencyCall should trigger radio on
         ArgumentCaptor<RadioOnStateListener.Callback> callback = ArgumentCaptor
@@ -302,8 +302,8 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY, "150");
         // Spy is used to capture consumer in delayDialForDdsSwitch
         EmergencyStateTracker spyEst = spy(emergencyStateTracker);
-        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone, TEST_CALL_ID,
-                false);
+        CompletableFuture<Integer> unused = spyEst.startEmergencyCall(testPhone,
+                mTestConnection1, false);
 
         // startEmergencyCall should trigger radio on
         ArgumentCaptor<RadioOnStateListener.Callback> callback = ArgumentCaptor
@@ -344,7 +344,7 @@
         when(mSatelliteController.isSatelliteEnabled()).thenReturn(true);
 
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // startEmergencyCall should trigger satellite modem off
         ArgumentCaptor<RadioOnStateListener.Callback> callback = ArgumentCaptor
@@ -374,7 +374,7 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK, "0");
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Radio already on so shouldn't trigger this
         verify(mRadioOnHelper, never()).triggerRadioOnAndListen(any(), anyBoolean(), any(),
@@ -399,7 +399,7 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY, "0");
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // non-DDS supports SUPL, so no DDS switch
         verify(mPhoneSwitcher, never()).overrideDefaultDataForEmergency(anyInt(), anyInt(), any());
@@ -421,7 +421,7 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY, "0");
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Is roaming, so no DDS switch
         verify(mPhoneSwitcher, never()).overrideDefaultDataForEmergency(anyInt(), anyInt(), any());
@@ -448,7 +448,7 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK, "0");
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Verify DDS switch
         verify(mPhoneSwitcher).overrideDefaultDataForEmergency(eq(0) /* phoneId */,
@@ -476,7 +476,7 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK, "0");
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Verify DDS switch
         verify(mPhoneSwitcher).overrideDefaultDataForEmergency(eq(0) /* phoneId */,
@@ -499,7 +499,7 @@
         setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT);
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Verify future completes with DisconnectCause.NOT_DISCONNECTED
         CompletableFuture<Void> unused = future.thenAccept((result) -> {
             assertEquals((Integer) result, (Integer) DisconnectCause.NOT_DISCONNECTED);
@@ -529,13 +529,13 @@
         setUpAsyncResultForExitEmergencyMode(testPhone);
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(testPhone).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertFalse(emergencyStateTracker.isInEmergencyCall());
@@ -556,15 +556,15 @@
                 /* isRadioOn= */ true);
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // set domain
         emergencyStateTracker.onEmergencyCallDomainUpdated(PhoneConstants.PHONE_TYPE_IMS,
-                TEST_CALL_ID);
+                mTestConnection1);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         // Make sure CS ECBM is true
         assertTrue(emergencyStateTracker.isInEcm());
@@ -586,15 +586,15 @@
                 /* isRadioOn= */ true);
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // set domain
         emergencyStateTracker.onEmergencyCallDomainUpdated(PhoneConstants.PHONE_TYPE_CDMA,
-                TEST_CALL_ID);
+                mTestConnection1);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         // Make sure IMS ECBM is true
         assertTrue(emergencyStateTracker.isInEcm());
@@ -618,15 +618,15 @@
         doReturn(PhoneConstants.PHONE_TYPE_GSM).when(testPhone).getPhoneType();
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // set domain
         emergencyStateTracker.onEmergencyCallDomainUpdated(PhoneConstants.PHONE_TYPE_CDMA,
-                TEST_CALL_ID);
+                mTestConnection1);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
         assertFalse(emergencyStateTracker.isInCdmaEcm());
@@ -646,7 +646,7 @@
                 /* isRadioOn= */ true );
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         emergencyStateTracker.onEmergencyTransportChanged(
                 EmergencyStateTracker.EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WWAN);
@@ -669,15 +669,15 @@
                 /* isRadioOn= */ true);
         // Start emergency call then enter ECM
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, true);
 
         assertFalse(emergencyStateTracker.isInEcm());
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
         // Verify intents are sent that ECM is entered
@@ -704,13 +704,13 @@
                 /* isRadioOn= */ true);
         // Start emergency call then enter ECM
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Call does not reach ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.IDLE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.IDLE, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertFalse(emergencyStateTracker.isInEcm());
     }
@@ -731,15 +731,15 @@
         setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT);
         setUpAsyncResultForExitEmergencyMode(testPhone);
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
         processAllMessages();
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
 
@@ -766,17 +766,17 @@
         setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT);
         setUpAsyncResultForExitEmergencyMode(testPhone);
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
         processAllMessages();
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
 
@@ -822,22 +822,22 @@
         verify(testPhone, times(0)).exitEmergencyMode(any(Message.class));
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         verify(testPhone, times(1)).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
         verify(testPhone, times(0)).exitEmergencyMode(any(Message.class));
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
         processAllMessages();
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
 
@@ -866,7 +866,7 @@
         replaceInstance(EmergencyStateTracker.class, "mContext", emergencyStateTracker, mContext);
 
         // dial on the same slot
-        unused = emergencyStateTracker.startEmergencyCall(testPhone, TEST_CALL_ID, false);
+        unused = emergencyStateTracker.startEmergencyCall(testPhone, mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -898,22 +898,22 @@
         verify(testPhone, times(0)).exitEmergencyMode(any(Message.class));
 
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         verify(testPhone, times(1)).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
         verify(testPhone, times(0)).exitEmergencyMode(any(Message.class));
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
         processAllMessages();
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
 
@@ -946,7 +946,7 @@
         replaceInstance(EmergencyStateTracker.class, "mContext", emergencyStateTracker, mContext);
 
         // dial on the other slot
-        unused = emergencyStateTracker.startEmergencyCall(phone1, TEST_CALL_ID, false);
+        unused = emergencyStateTracker.startEmergencyCall(phone1, mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -976,15 +976,15 @@
         setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT);
         setUpAsyncResultForExitEmergencyMode(testPhone);
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
 
         processAllMessages();
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
 
@@ -1013,16 +1013,16 @@
         setUpAsyncResultForExitEmergencyMode(testPhone);
         // Start emergency call then enter ECM
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         // verify ecbm states are correct
@@ -1058,7 +1058,7 @@
         Phone phone0 = setupTestPhoneForEmergencyCall(/* isRoaming= */ true,
                 /* isRadioOn= */ true);
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         Handler handler = new Handler(Looper.getMainLooper());
         handler.post(() -> {
@@ -1078,7 +1078,7 @@
         Phone phone0 = setupTestPhoneForEmergencyCall(/* isRoaming= */ true,
                 /* isRadioOn= */ true);
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, true);
+                mTestConnection1, true);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1097,18 +1097,18 @@
         setUpAsyncResultForSetEmergencyMode(phone0, E_REG_RESULT);
         // First active call
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Second starting call
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID_2, false);
+                mTestConnection2, false);
 
         // Returns DisconnectCause#NOT_DISCONNECTED immediately.
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
@@ -1127,22 +1127,22 @@
 
         // First active call
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEcm());
 
         // Second emergency call started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID_2, false);
+                mTestConnection2, false);
 
         // Returns DisconnectCause#NOT_DISCONNECTED immediately.
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
@@ -1160,7 +1160,7 @@
 
         // First emergency call
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1170,7 +1170,7 @@
         // Second emergency call
         Phone phone1 = getPhone(1);
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone1,
-                TEST_CALL_ID_2, false);
+                mTestConnection2, false);
 
         // Returns DisconnectCause#ERROR_UNSPECIFIED immediately.
         assertEquals(future.getNow(DisconnectCause.NOT_DISCONNECTED),
@@ -1189,7 +1189,7 @@
 
         // First active call
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1198,15 +1198,15 @@
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                 Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEcm());
         assertFalse(emergencyStateTracker.isInEmergencyCall());
 
         // Second emergency call started.
-        future = emergencyStateTracker.startEmergencyCall(phone0, TEST_CALL_ID_2, false);
+        future = emergencyStateTracker.startEmergencyCall(phone0, mTestConnection2, false);
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         // Returns DisconnectCause#NOT_DISCONNECTED immediately.
@@ -1215,7 +1215,7 @@
 
         emergencyStateTracker.onEmergencyTransportChanged(
                 EmergencyStateTracker.EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WLAN);
-        emergencyStateTracker.endCall(TEST_CALL_ID_2);
+        emergencyStateTracker.endCall(mTestConnection2);
         processAllMessages();
 
         // At this time, ECM is still running so still in ECM.
@@ -1235,7 +1235,7 @@
                 /* isRadioOn= */ true);
         // Call startEmergencyCall() to set testPhone
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         // Set emergency transport
         emergencyStateTracker.onEmergencyTransportChanged(
@@ -1243,12 +1243,12 @@
 
         // Set call properties
         emergencyStateTracker.onEmergencyCallPropertiesChanged(
-                android.telecom.Connection.PROPERTY_WIFI, TEST_CALL_ID);
+                android.telecom.Connection.PROPERTY_WIFI, mTestConnection1);
 
         verify(testPhone, times(0)).cancelEmergencyNetworkScan(anyBoolean(), any());
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         verify(testPhone, times(1)).cancelEmergencyNetworkScan(eq(true), any());
     }
@@ -1399,14 +1399,14 @@
         setEcmSupportedConfig(phone0, true);
         // Emergency call is ended and the emergency callback is entered.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEcm());
         assertFalse(emergencyStateTracker.isInEmergencyCall());
@@ -1457,14 +1457,14 @@
         setUpAsyncResultForSetEmergencyMode(phone0, E_REG_RESULT);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1484,7 +1484,7 @@
                 /* isRadioOn= */ true);
         // Emergency call is in progress.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1529,7 +1529,7 @@
                 Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
 
         // Emergency call is being started.
-        future = emergencyStateTracker.startEmergencyCall(phone0, TEST_CALL_ID, false);
+        future = emergencyStateTracker.startEmergencyCall(phone0, mTestConnection1, false);
         processAllMessages();
 
         verify(phone0).exitEmergencyMode(any(Message.class));
@@ -1560,7 +1560,7 @@
 
         // Emergency call is being started.
         CompletableFuture<Integer> callFuture = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         assertFalse(smsFuture.isDone());
         assertFalse(callFuture.isDone());
@@ -1602,14 +1602,14 @@
         setUpAsyncResultForSetEmergencyMode(phone0, E_REG_RESULT);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started using the different phone.
         Phone phone1 = getPhone(1);
@@ -1643,7 +1643,7 @@
         // Emergency call is being started using the different phone.
         Phone phone1 = getPhone(1);
         setUpAsyncResultForSetEmergencyMode(phone1, E_REG_RESULT);
-        future = emergencyStateTracker.startEmergencyCall(phone1, TEST_CALL_ID, false);
+        future = emergencyStateTracker.startEmergencyCall(phone1, mTestConnection1, false);
         processAllMessages();
 
         verify(phone0).exitEmergencyMode(any(Message.class));
@@ -1676,7 +1676,7 @@
         // Emergency call is being started using the different phone.
         Phone phone1 = getPhone(1);
         CompletableFuture<Integer> callFuture = emergencyStateTracker.startEmergencyCall(phone1,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
 
         assertFalse(smsFuture.isDone());
         assertFalse(callFuture.isDone());
@@ -1720,14 +1720,14 @@
         setEcmSupportedConfig(phone0, false);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1737,7 +1737,7 @@
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                 Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
 
@@ -1761,14 +1761,14 @@
         setEcmSupportedConfig(phone0, false);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1782,7 +1782,7 @@
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertFalse(emergencyStateTracker.isInEmergencyMode());
@@ -1802,14 +1802,14 @@
         setEcmSupportedConfig(phone0, true);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1819,7 +1819,7 @@
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                 Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEcm());
@@ -1854,14 +1854,14 @@
         setEcmSupportedConfig(phone0, true);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1871,7 +1871,7 @@
         assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                 Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1910,14 +1910,14 @@
         setEcmSupportedConfig(phone0, true);
         // Emergency call is in active.
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(phone0,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
         assertTrue(emergencyStateTracker.isInEmergencyCall());
         verify(phone0).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
 
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
 
         // Emergency SMS is being started.
         CompletableFuture<Integer> future = emergencyStateTracker.startEmergencySms(phone0,
@@ -1931,7 +1931,7 @@
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
 
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         assertTrue(emergencyStateTracker.isInEmergencyMode());
@@ -1960,7 +1960,7 @@
         EmergencyStateTracker testEst = setupEmergencyStateTracker(
                 false /* isSuplDdsSwitchRequiredForEmergencyCall */);
 
-        assertNotNull(testEst.startEmergencyCall(phone, TEST_CALL_ID, false));
+        assertNotNull(testEst.startEmergencyCall(phone, mTestConnection1, false));
 
         ArgumentCaptor<CarrierConfigManager.CarrierConfigChangeListener> listenerArgumentCaptor =
                 ArgumentCaptor.forClass(CarrierConfigManager.CarrierConfigChangeListener.class);
@@ -2045,17 +2045,17 @@
         setUpAsyncResultForExitEmergencyMode(testPhone);
         // Start emergency call then enter ECM
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         // verify ecbm states are correct
@@ -2065,7 +2065,7 @@
 
         // 2nd call while in emergency callback mode
         unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         emergencyStateTracker.onEmergencyTransportChanged(
                 EmergencyStateTracker.EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WWAN);
         processAllMessages();
@@ -2083,11 +2083,11 @@
         verify(testPhone).notifyEcbmTimerReset(eq(Boolean.TRUE));
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         // verify ecbm states are correct
@@ -2128,17 +2128,17 @@
         setUpAsyncResultForExitEmergencyMode(testPhone);
         // Start emergency call then enter ECM
         CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         processAllMessages();
 
         // Set call to ACTIVE
-        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, TEST_CALL_ID);
+        emergencyStateTracker.onEmergencyCallStateChanged(Call.State.ACTIVE, mTestConnection1);
         emergencyStateTracker.onEmergencyCallDomainUpdated(
-                PhoneConstants.PHONE_TYPE_IMS, TEST_CALL_ID);
+                PhoneConstants.PHONE_TYPE_IMS, mTestConnection1);
         // Set ecm as supported
         setEcmSupportedConfig(testPhone, /* ecmSupported= */ true);
         // End call to enter ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         // verify ecbm states are correct
@@ -2148,7 +2148,7 @@
 
         // 2nd call while in emergency callback mode
         unused = emergencyStateTracker.startEmergencyCall(testPhone,
-                TEST_CALL_ID, false);
+                mTestConnection1, false);
         emergencyStateTracker.onEmergencyTransportChanged(
                 EmergencyStateTracker.EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WWAN);
         processAllMessages();
@@ -2166,7 +2166,7 @@
         verify(testPhone).notifyEcbmTimerReset(eq(Boolean.TRUE));
 
         // End call to return to ECM
-        emergencyStateTracker.endCall(TEST_CALL_ID);
+        emergencyStateTracker.endCall(mTestConnection1);
         processAllMessages();
 
         // verify ecbm states are correct