Clear original connection before reselecting domain

The original connection is already disconnected.
Refering mOriginalConnection can cause abnormal behavior.
So mOriginalConnection should be cleared before reselecting domain.

Bug: 266522840
Test: atest TelephonyConnectionTest
Change-Id: I88cc25067ba043ffde0f783cf2382612d9e86353
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 1cf35a5..e278240 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -2494,6 +2494,7 @@
 
                         if (mTelephonyConnectionService.maybeReselectDomain(this,
                                   mOriginalConnection.getPreciseDisconnectCause(), reasonInfo)) {
+                            clearOriginalConnection();
                             break;
                         }
                     }
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
index 3c309ba..758ded7 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
@@ -294,13 +294,16 @@
     public void testDomainSelectionDisconnected_Redial() {
         TestTelephonyConnection c = new TestTelephonyConnection();
         c.setOriginalConnection(mImsPhoneConnection);
+
         doReturn(Call.State.DISCONNECTED).when(mImsPhoneConnection)
                 .getState();
         c.setTelephonyConnectionService(mTelephonyConnectionService);
         doReturn(true).when(mTelephonyConnectionService)
                 .maybeReselectDomain(any(), anyInt(), any());
+        c.resetOriginalConnectionCleared();
         c.updateState();
 
         assertNotEquals(STATE_DISCONNECTED, c.getState());
+        assertTrue(c.isOriginalConnectionCleared());
     }
 }
diff --git a/tests/src/com/android/services/telephony/TestTelephonyConnection.java b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
index e149d3b..d91435c 100644
--- a/tests/src/com/android/services/telephony/TestTelephonyConnection.java
+++ b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
@@ -50,8 +50,6 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -107,6 +105,7 @@
     private List<Bundle> mLastConnectionEventExtras = new ArrayList<>();
     private Object mLock = new Object();
     private PersistableBundle mCarrierConfig = new PersistableBundle();
+    private boolean mOriginalConnectionCleared;
 
     @Override
     public com.android.internal.telephony.Connection getOriginalConnection() {
@@ -211,7 +210,15 @@
 
     @Override
     void clearOriginalConnection() {
-        // Do nothing since the original connection is mock object
+        mOriginalConnectionCleared = true;
+    }
+
+    boolean isOriginalConnectionCleared() {
+        return mOriginalConnectionCleared;
+    }
+
+    void resetOriginalConnectionCleared() {
+        mOriginalConnectionCleared = false;
     }
 
     @Override