ImsService Subscription Notifications
The subId need to be propogated all the way to FeatureConnector.Listener#connectionReady so that classes can listen to changes in subId directly.
Bug: 197991451
Test: atest TeleServiceTests:ImsStateCallbackControllerTest, atest TeleServiceTests:RcsProvisioningMonitorTest, atest TeleServiceTests:RcsFeatureControllerTest
Change-Id: I4d9ae7c71f8b06e2d49fbdcb94d2575cc5b786f9
Merged-In: I4d9ae7c71f8b06e2d49fbdcb94d2575cc5b786f9
diff --git a/src/com/android/phone/ImsStateCallbackController.java b/src/com/android/phone/ImsStateCallbackController.java
index 28fca59..4e2407c 100644
--- a/src/com/android/phone/ImsStateCallbackController.java
+++ b/src/com/android/phone/ImsStateCallbackController.java
@@ -292,7 +292,7 @@
}
@Override
- public void connectionReady(ImsManager manager) {
+ public void connectionReady(ImsManager manager, int subId) {
logd(mLogPrefix + "connectionReady");
mState = STATE_READY;
@@ -434,7 +434,7 @@
}
@Override
- public void connectionReady(RcsFeatureManager manager) {
+ public void connectionReady(RcsFeatureManager manager, int subId) {
logd(mLogPrefix + "connectionReady");
mState = STATE_READY;
diff --git a/src/com/android/phone/RcsProvisioningMonitor.java b/src/com/android/phone/RcsProvisioningMonitor.java
index 6d2bd6f..baf0ac5 100644
--- a/src/com/android/phone/RcsProvisioningMonitor.java
+++ b/src/com/android/phone/RcsProvisioningMonitor.java
@@ -440,7 +440,7 @@
}
@Override
- public void connectionReady(RcsFeatureManager manager) {
+ public void connectionReady(RcsFeatureManager manager, int subId) {
mRcsFeatureManager = manager;
mRcsProvisioningInfos.forEach(v -> v.onRcsStatusChanged(manager.getConfig()));
}
diff --git a/src/com/android/services/telephony/rcs/RcsFeatureController.java b/src/com/android/services/telephony/rcs/RcsFeatureController.java
index cc1a2cc..0e1cb4b 100644
--- a/src/com/android/services/telephony/rcs/RcsFeatureController.java
+++ b/src/com/android/services/telephony/rcs/RcsFeatureController.java
@@ -128,7 +128,7 @@
private FeatureConnector.Listener<RcsFeatureManager> mFeatureConnectorListener =
new FeatureConnector.Listener<RcsFeatureManager>() {
@Override
- public void connectionReady(RcsFeatureManager manager)
+ public void connectionReady(RcsFeatureManager manager, int subId)
throws com.android.ims.ImsException {
if (manager == null) {
logw("connectionReady returned null RcsFeatureManager");
diff --git a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
index c493f6b..e4cdc6e 100644
--- a/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
+++ b/tests/src/com/android/phone/ImsStateCallbackControllerTest.java
@@ -243,7 +243,7 @@
verify(mCallback0, times(1)).onUnavailable(REASON_IMS_SERVICE_DISCONNECTED);
verify(mCallback0, times(0)).onAvailable();
- mMmTelConnectorListenerSlot0.getValue().connectionReady(null);
+ mMmTelConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, atLeastOnce()).onAvailable();
@@ -344,7 +344,7 @@
processAllMessages();
verify(mCallback0, times(1)).onUnavailable(REASON_IMS_SERVICE_NOT_READY);
- mRcsConnectorListenerSlot0.getValue().connectionReady(null);
+ mRcsConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(0)).onAvailable();
@@ -368,7 +368,7 @@
processAllMessages();
verify(mCallback0, times(1)).onAvailable();
- mRcsConnectorListenerSlot0.getValue().connectionReady(null);
+ mRcsConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(2)).onAvailable();
@@ -398,7 +398,7 @@
processAllMessages();
verify(mCallback0, times(0)).onUnavailable(REASON_IMS_SERVICE_NOT_READY);
- mRcsConnectorListenerSlot0.getValue().connectionReady(null);
+ mRcsConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(0)).onAvailable();
@@ -693,7 +693,7 @@
verify(mCallback3, times(2)).onUnavailable(anyInt());
// connectionReady
- mMmTelConnectorListenerSlot0.getValue().connectionReady(null);
+ mMmTelConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(1)).onAvailable();
verify(mCallback1, times(0)).onAvailable();
@@ -704,7 +704,7 @@
verify(mCallback2, times(2)).onUnavailable(anyInt());
verify(mCallback3, times(2)).onUnavailable(anyInt());
- mRcsConnectorListenerSlot0.getValue().connectionReady(null);
+ mRcsConnectorListenerSlot0.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(1)).onAvailable();
verify(mCallback1, times(0)).onAvailable();
@@ -726,7 +726,7 @@
verify(mCallback2, times(2)).onUnavailable(anyInt());
verify(mCallback3, times(2)).onUnavailable(anyInt());
- mMmTelConnectorListenerSlot1.getValue().connectionReady(null);
+ mMmTelConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_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);
+ mRcsConnectorListenerSlot1.getValue().connectionReady(null, SLOT_0_SUB_ID);
processAllMessages();
verify(mCallback0, times(1)).onAvailable();
verify(mCallback1, times(1)).onAvailable();
diff --git a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
index 8e5e073..aad0885 100644
--- a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
+++ b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
@@ -147,6 +147,7 @@
private MockContentResolver mContentResolver = new MockContentResolver();
private SimInfoContentProvider mProvider;
private BroadcastReceiver mReceiver;
+ private static final int TEST_SUB_ID = 1;
@Mock
private Cursor mCursor;
@Mock
@@ -784,7 +785,7 @@
} catch (Exception e) {
logd("Unable to create looper from handler.");
}
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
verify(mFeatureConnector, atLeastOnce()).connect();
}
diff --git a/tests/src/com/android/services/telephony/rcs/RcsFeatureControllerTest.java b/tests/src/com/android/services/telephony/rcs/RcsFeatureControllerTest.java
index da614fc..2a30e1a 100644
--- a/tests/src/com/android/services/telephony/rcs/RcsFeatureControllerTest.java
+++ b/tests/src/com/android/services/telephony/rcs/RcsFeatureControllerTest.java
@@ -96,7 +96,7 @@
controller.addFeature(mMockFeature, RcsFeatureController.Feature.class);
verify(mMockFeature).onRcsDisconnected();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
verify(mFeatureManager).updateCapabilities(TEST_SUB_ID);
verify(mFeatureManager).registerImsRegistrationCallback(any());
@@ -114,7 +114,7 @@
public void testFeatureManagerConnectedAddRemoveFeature() throws Exception {
RcsFeatureController controller = createFeatureController();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
controller.addFeature(mMockFeature, RcsFeatureController.Feature.class);
verify(mMockFeature).onRcsConnected(mFeatureManager);
@@ -131,7 +131,7 @@
IImsRegistrationCallback regCb = mock(IImsRegistrationCallback.class);
IImsCapabilityCallback capCb = mock(IImsCapabilityCallback.class);
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
try {
controller.registerImsRegistrationCallback(TEST_SUB_ID, regCb);
@@ -165,7 +165,7 @@
public void testFeatureManagerConnectedHelper() throws Exception {
RcsFeatureController controller = createFeatureController();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
ArgumentCaptor<IImsRegistrationCallback> captor =
ArgumentCaptor.forClass(IImsRegistrationCallback.class);
verify(mFeatureManager).registerImsRegistrationCallback(captor.capture());
@@ -257,7 +257,7 @@
public void testCarrierConfigChanged() throws Exception {
RcsFeatureController controller = createFeatureController();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
verify(mFeatureManager).updateCapabilities(TEST_SUB_ID);
controller.addFeature(mMockFeature, RcsFeatureController.Feature.class);
@@ -272,7 +272,7 @@
public void testChangeSubId() throws Exception {
RcsFeatureController controller = createFeatureController();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
verify(mFeatureManager).updateCapabilities(TEST_SUB_ID);
controller.addFeature(mMockFeature, RcsFeatureController.Feature.class);
@@ -286,7 +286,7 @@
public void testDestroy() throws Exception {
RcsFeatureController controller = createFeatureController();
// Connect the RcsFeatureManager
- mConnectorListener.getValue().connectionReady(mFeatureManager);
+ mConnectorListener.getValue().connectionReady(mFeatureManager, TEST_SUB_ID);
controller.addFeature(mMockFeature, RcsFeatureController.Feature.class);
controller.destroy();