Update connectionAvailable in ImsStateCallabackController

The subId need to be propogated all the way
to FeatureConnector.Listener#connectionReady
so that classes can listen to changes in subId directly.

Bug: 213863350
Test: atest
Change-Id: I37dfdf5537d76046f0301a18e365a5f96531efe1
Merged-In: I37dfdf5537d76046f0301a18e365a5f96531efe1
diff --git a/src/com/android/phone/ImsStateCallbackController.java b/src/com/android/phone/ImsStateCallbackController.java
index 4e2407c..a7caab0 100644
--- a/src/com/android/phone/ImsStateCallbackController.java
+++ b/src/com/android/phone/ImsStateCallbackController.java
@@ -293,8 +293,9 @@
 
         @Override
         public void connectionReady(ImsManager manager, int subId) {
-            logd(mLogPrefix + "connectionReady");
+            logd(mLogPrefix + "connectionReady " + subId);
 
+            mSubId = subId;
             mState = STATE_READY;
             mReason = AVAILABLE;
             mHasConfig = true;
@@ -435,8 +436,9 @@
 
         @Override
         public void connectionReady(RcsFeatureManager manager, int subId) {
-            logd(mLogPrefix + "connectionReady");
+            logd(mLogPrefix + "connectionReady " + subId);
 
+            mSubId = subId;
             mState = STATE_READY;
             mReason = AVAILABLE;
             mHasConfig = true;
@@ -834,19 +836,21 @@
 
         if (wrapper.mRequiredFeature == FEATURE_MMTEL) {
             for (int i = 0; i < mMmTelFeatureListeners.size(); i++) {
-                MmTelFeatureListener l = mMmTelFeatureListeners.valueAt(i);
-                if (l.mSubId == wrapper.mSubId
-                        && !l.notifyState(wrapper)) {
-                    mWrappers.remove(wrapper.mBinder);
+                if (wrapper.mSubId == getSubId(i)) {
+                    MmTelFeatureListener l = mMmTelFeatureListeners.valueAt(i);
+                    if (!l.notifyState(wrapper)) {
+                        mWrappers.remove(wrapper.mBinder);
+                    }
                     break;
                 }
             }
         } else if (wrapper.mRequiredFeature == FEATURE_RCS) {
             for (int i = 0; i < mRcsFeatureListeners.size(); i++) {
-                RcsFeatureListener l = mRcsFeatureListeners.valueAt(i);
-                if (l.mSubId == wrapper.mSubId
-                        && !l.notifyState(wrapper)) {
-                    mWrappers.remove(wrapper.mBinder);
+                if (wrapper.mSubId == getSubId(i)) {
+                    RcsFeatureListener l = mRcsFeatureListeners.valueAt(i);
+                    if (!l.notifyState(wrapper)) {
+                        mWrappers.remove(wrapper.mBinder);
+                    }
                     break;
                 }
             }
diff --git a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
index e4cdc6e..cbd6ceb 100644
--- a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
+++ b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
@@ -726,7 +726,7 @@
         verify(mCallback2, times(2)).onUnavailable(anyInt());
         verify(mCallback3, times(2)).onUnavailable(anyInt());
 
-        mMmTelConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_SUB_ID);
+        mMmTelConnectorListenerSlot1.getValue().connectionReady(null, SLOT_1_SUB_ID);
         processAllMessages();
         verify(mCallback0, times(1)).onAvailable();
         verify(mCallback1, times(1)).onAvailable();
@@ -737,7 +737,7 @@
         verify(mCallback2, times(2)).onUnavailable(anyInt());
         verify(mCallback3, times(2)).onUnavailable(anyInt());
 
-        mRcsConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_SUB_ID);
+        mRcsConnectorListenerSlot1.getValue().connectionReady(null, SLOT_1_SUB_ID);
         processAllMessages();
         verify(mCallback0, times(1)).onAvailable();
         verify(mCallback1, times(1)).onAvailable();