aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2020-09-25 17:33:35 -0700
committerBrad Ebinger <breadley@google.com>2020-10-21 13:27:48 -0700
commit3c69ca62333ed73b5321602886674df7fd4d002f (patch)
treef55ed532a1abfd0360092e393c1d4c53304832a7
parente482d4563d2b9c8aae6cb4226214b88df34c5595 (diff)
downloadims-3c69ca62333ed73b5321602886674df7fd4d002f.tar.gz
Pipe through SipTransport IBinder interface
Add SipTransport IBinder interface to the ImsFeatureContainer and expose it to the relevant FeatureConnections. Test: atest ImsCommonTests Merged-In: Id2380928382627ae55d3bdb7a40dcdf2852505fd Change-Id: Id2380928382627ae55d3bdb7a40dcdf2852505fd
-rw-r--r--src/java/com/android/ims/FeatureConnection.java10
-rw-r--r--src/java/com/android/ims/FeatureConnector.java2
-rw-r--r--src/java/com/android/ims/FeatureUpdates.java6
-rw-r--r--src/java/com/android/ims/ImsManager.java20
-rw-r--r--src/java/com/android/ims/MmTelFeatureConnection.java5
-rw-r--r--src/java/com/android/ims/RcsFeatureConnection.java5
-rw-r--r--src/java/com/android/ims/RcsFeatureManager.java9
-rw-r--r--tests/src/com/android/ims/FeatureConnectionTest.java4
-rw-r--r--tests/src/com/android/ims/FeatureConnectorTest.java16
-rw-r--r--tests/src/com/android/ims/ImsFeatureBinderRepositoryTest.java4
-rw-r--r--tests/src/com/android/ims/ImsFeatureContainerTest.java6
-rw-r--r--tests/src/com/android/ims/ImsManagerTest.java9
12 files changed, 62 insertions, 34 deletions
diff --git a/src/java/com/android/ims/FeatureConnection.java b/src/java/com/android/ims/FeatureConnection.java
index f13444e0..d52bbcfe 100644
--- a/src/java/com/android/ims/FeatureConnection.java
+++ b/src/java/com/android/ims/FeatureConnection.java
@@ -24,6 +24,7 @@ import android.os.RemoteException;
import android.telephony.TelephonyManager;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.util.Log;
@@ -49,13 +50,16 @@ public abstract class FeatureConnection {
protected long mFeatureCapabilities;
private final IImsRegistration mRegistrationBinder;
private final IImsConfig mConfigBinder;
+ private final ISipTransport mSipTransportBinder;
protected final Object mLock = new Object();
- public FeatureConnection(Context context, int slotId, IImsConfig c, IImsRegistration r) {
+ public FeatureConnection(Context context, int slotId, IImsConfig c, IImsRegistration r,
+ ISipTransport s) {
mSlotId = slotId;
mContext = context;
mRegistrationBinder = r;
mConfigBinder = c;
+ mSipTransportBinder = s;
}
protected TelephonyManager getTelephonyManager() {
@@ -124,6 +128,10 @@ public abstract class FeatureConnection {
return mConfigBinder;
}
+ public @Nullable ISipTransport getSipTransport() {
+ return mSipTransportBinder;
+ }
+
@VisibleForTesting
public void checkServiceIsReady() throws RemoteException {
if (!sImsSupportedOnDevice) {
diff --git a/src/java/com/android/ims/FeatureConnector.java b/src/java/com/android/ims/FeatureConnector.java
index 53b37ec4..46fad609 100644
--- a/src/java/com/android/ims/FeatureConnector.java
+++ b/src/java/com/android/ims/FeatureConnector.java
@@ -118,7 +118,7 @@ public class FeatureConnector<U extends FeatureUpdates> {
public void imsFeatureCreated(ImsFeatureContainer c) {
log("imsFeatureCreated: " + c);
synchronized (mLock) {
- mManager.associate(c.imsFeature, c.imsConfig, c.imsRegistration);
+ mManager.associate(c);
mManager.updateFeatureCapabilities(c.getCapabilities());
mDisconnectedReason = null;
}
diff --git a/src/java/com/android/ims/FeatureUpdates.java b/src/java/com/android/ims/FeatureUpdates.java
index 2d614d95..446a78b9 100644
--- a/src/java/com/android/ims/FeatureUpdates.java
+++ b/src/java/com/android/ims/FeatureUpdates.java
@@ -16,10 +16,7 @@
package com.android.ims;
-import android.os.IBinder;
import android.telephony.ims.ImsService;
-import android.telephony.ims.aidl.IImsConfig;
-import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.feature.ImsFeature;
import com.android.ims.internal.IImsServiceFeatureCallback;
@@ -50,8 +47,9 @@ public interface FeatureUpdates {
/**
* Associate this Manager instance with the IMS Binder interfaces specified. This is usually
* done by creating a FeatureConnection instance with these interfaces.
+ * @param container Contains all of the related interfaces attached to a specific ImsFeature.
*/
- void associate(IBinder feature, IImsConfig c, IImsRegistration r);
+ void associate(ImsFeatureContainer container);
/**
* Invalidate the previously associated Binder interfaces set in {@link #associate}.
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index b8035f01..aa5245a0 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -20,7 +20,6 @@ import android.app.PendingIntent;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.pm.PackageManager;
-import android.os.IBinder;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.RemoteException;
@@ -48,6 +47,7 @@ import android.telephony.ims.aidl.IImsMmTelFeature;
import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IImsSmsListener;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.CapabilityChangeRequest;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.MmTelFeature;
@@ -225,7 +225,7 @@ public class ImsManager implements FeatureUpdates {
@VisibleForTesting
public interface MmTelFeatureConnectionFactory {
MmTelFeatureConnection create(Context context, int phoneId, IImsMmTelFeature feature,
- IImsConfig c, IImsRegistration r);
+ IImsConfig c, IImsRegistration r, ISipTransport s);
}
@VisibleForTesting
@@ -1650,7 +1650,7 @@ public class ImsManager implements FeatureUpdates {
mBinderCache = new BinderCacheManager<>(ImsManager::getITelephonyInterface);
// Start off with an empty MmTelFeatureConnection, which will be replaced one an
// ImsService is available (ImsManager expects a non-null FeatureConnection)
- associate(null, null, null);
+ associate(null /*container*/);
}
/**
@@ -1669,7 +1669,7 @@ public class ImsManager implements FeatureUpdates {
mExecutor = Runnable::run;
mBinderCache = new BinderCacheManager<>(ImsManager::getITelephonyInterface);
// MmTelFeatureConnection should be replaced for tests with mMmTelFeatureConnectionFactory.
- associate(null, null, null);
+ associate(null /*container*/);
}
/*
@@ -2438,9 +2438,15 @@ public class ImsManager implements FeatureUpdates {
}
@Override
- public void associate(IBinder binder, IImsConfig c, IImsRegistration r) {
- mMmTelConnectionRef.set(mMmTelFeatureConnectionFactory.create(
- mContext, mPhoneId, IImsMmTelFeature.Stub.asInterface(binder), c, r));
+ public void associate(ImsFeatureContainer c) {
+ if (c == null) {
+ mMmTelConnectionRef.set(mMmTelFeatureConnectionFactory.create(
+ mContext, mPhoneId, null, null, null, null));
+ } else {
+ mMmTelConnectionRef.set(mMmTelFeatureConnectionFactory.create(
+ mContext, mPhoneId, IImsMmTelFeature.Stub.asInterface(c.imsFeature),
+ c.imsConfig, c.imsRegistration, c.sipTransport));
+ }
}
@Override
diff --git a/src/java/com/android/ims/MmTelFeatureConnection.java b/src/java/com/android/ims/MmTelFeatureConnection.java
index ddfd8a40..a45efe4b 100644
--- a/src/java/com/android/ims/MmTelFeatureConnection.java
+++ b/src/java/com/android/ims/MmTelFeatureConnection.java
@@ -31,6 +31,7 @@ import android.telephony.ims.aidl.IImsMmTelFeature;
import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IImsSmsListener;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.CapabilityChangeRequest;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.MmTelFeature;
@@ -204,8 +205,8 @@ public class MmTelFeatureConnection extends FeatureConnection {
private final ProvisioningCallbackManager mProvisioningCallbackManager;
public MmTelFeatureConnection(Context context, int slotId, IImsMmTelFeature f,
- IImsConfig c, IImsRegistration r) {
- super(context, slotId, c, r);
+ IImsConfig c, IImsRegistration r, ISipTransport s) {
+ super(context, slotId, c, r, s);
setBinder((f != null) ? f.asBinder() : null);
mRegistrationCallbackManager = new ImsRegistrationCallbackAdapter(context, mLock);
diff --git a/src/java/com/android/ims/RcsFeatureConnection.java b/src/java/com/android/ims/RcsFeatureConnection.java
index 546a4b13..a7be0d41 100644
--- a/src/java/com/android/ims/RcsFeatureConnection.java
+++ b/src/java/com/android/ims/RcsFeatureConnection.java
@@ -29,6 +29,7 @@ import android.telephony.ims.aidl.IImsRcsFeature;
import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IRcsFeatureListener;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.CapabilityChangeRequest;
import android.telephony.ims.feature.ImsFeature;
@@ -117,8 +118,8 @@ public class RcsFeatureConnection extends FeatureConnection {
public RegistrationCallbackManager mRegistrationCallbackManager;
public RcsFeatureConnection(Context context, int slotId, IImsRcsFeature feature, IImsConfig c,
- IImsRegistration r) {
- super(context, slotId, c, r);
+ IImsRegistration r, ISipTransport s) {
+ super(context, slotId, c, r, s);
setBinder(feature != null ? feature.asBinder() : null);
mAvailabilityCallbackManager = new AvailabilityCallbackManager(mContext);
mRegistrationCallbackManager = new RegistrationCallbackManager(mContext);
diff --git a/src/java/com/android/ims/RcsFeatureManager.java b/src/java/com/android/ims/RcsFeatureManager.java
index 5879f4ad..bfcdf9da 100644
--- a/src/java/com/android/ims/RcsFeatureManager.java
+++ b/src/java/com/android/ims/RcsFeatureManager.java
@@ -30,10 +30,8 @@ import android.telephony.ims.ImsException;
import android.telephony.ims.RcsContactUceCapability;
import android.telephony.ims.RegistrationManager;
import android.telephony.ims.aidl.IImsCapabilityCallback;
-import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRcsController;
import android.telephony.ims.aidl.IImsRcsFeature;
-import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IRcsFeatureListener;
import android.telephony.ims.feature.CapabilityChangeRequest;
@@ -563,9 +561,10 @@ public class RcsFeatureManager implements FeatureUpdates {
}
@Override
- public void associate(IBinder b, IImsConfig c, IImsRegistration r) {
- IImsRcsFeature f = IImsRcsFeature.Stub.asInterface(b);
- mRcsFeatureConnection = new RcsFeatureConnection(mContext, mSlotId, f, c, r);
+ public void associate(ImsFeatureContainer c) {
+ IImsRcsFeature f = IImsRcsFeature.Stub.asInterface(c.imsFeature);
+ mRcsFeatureConnection = new RcsFeatureConnection(mContext, mSlotId, f, c.imsConfig,
+ c.imsRegistration, c.sipTransport);
}
@Override
diff --git a/tests/src/com/android/ims/FeatureConnectionTest.java b/tests/src/com/android/ims/FeatureConnectionTest.java
index 16d659c4..d7a9134c 100644
--- a/tests/src/com/android/ims/FeatureConnectionTest.java
+++ b/tests/src/com/android/ims/FeatureConnectionTest.java
@@ -28,6 +28,7 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
@@ -53,7 +54,7 @@ public class FeatureConnectionTest extends ImsTestBase {
public long mCapabilities;
TestFeatureConnection(Context context, int slotId) {
- super(context, slotId, mConfigBinder, mRegistrationBinder);
+ super(context, slotId, mConfigBinder, mRegistrationBinder, mSipTransportBinder);
if (!ImsManager.isImsSupportedOnDevice(context)) {
sImsSupportedOnDevice = false;
}
@@ -83,6 +84,7 @@ public class FeatureConnectionTest extends ImsTestBase {
@Mock IBinder mBinder;
@Mock IImsRegistration mRegistrationBinder;
@Mock IImsConfig mConfigBinder;
+ @Mock ISipTransport mSipTransportBinder;
public static final int PHONE_ID = 1;
diff --git a/tests/src/com/android/ims/FeatureConnectorTest.java b/tests/src/com/android/ims/FeatureConnectorTest.java
index 76a0a5ae..a0f38bba 100644
--- a/tests/src/com/android/ims/FeatureConnectorTest.java
+++ b/tests/src/com/android/ims/FeatureConnectorTest.java
@@ -35,6 +35,7 @@ import android.os.IBinder;
import android.telephony.ims.ImsService;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -57,8 +58,8 @@ public class FeatureConnectorTest extends ImsTestBase {
private static class TestFeatureConnection extends FeatureConnection {
public TestFeatureConnection(Context context, int slotId, IImsConfig c,
- IImsRegistration r) {
- super(context, slotId, c, r);
+ IImsRegistration r, ISipTransport s) {
+ super(context, slotId, c, r, s);
}
@Override
@@ -95,9 +96,10 @@ public class FeatureConnectorTest extends ImsTestBase {
}
@Override
- public void associate(IBinder f, IImsConfig c, IImsRegistration r) {
- connection = new TestFeatureConnection(mContext, mPhoneId, c, r);
- connection.setBinder(f);
+ public void associate(ImsFeatureContainer c) {
+ connection = new TestFeatureConnection(mContext, mPhoneId, c.imsConfig,
+ c.imsRegistration, c.sipTransport);
+ connection.setBinder(c.imsFeature);
}
@Override
@@ -123,6 +125,7 @@ public class FeatureConnectorTest extends ImsTestBase {
@Mock private IBinder feature;
@Mock private IImsRegistration reg;
@Mock private IImsConfig config;
+ @Mock private ISipTransport transport;
private static final int PHONE_ID = 1;
private static final long TEST_CAPS = ImsService.CAPABILITY_EMERGENCY_OVER_MMTEL;
@@ -372,7 +375,8 @@ public class FeatureConnectorTest extends ImsTestBase {
}
private ImsFeatureContainer createContainer() {
- ImsFeatureContainer c = new ImsFeatureContainer(feature, config, reg, TEST_CAPS);
+ ImsFeatureContainer c = new ImsFeatureContainer(feature, config, reg, transport,
+ TEST_CAPS);
c.setState(ImsFeature.STATE_UNAVAILABLE);
return c;
}
diff --git a/tests/src/com/android/ims/ImsFeatureBinderRepositoryTest.java b/tests/src/com/android/ims/ImsFeatureBinderRepositoryTest.java
index 055fc111..273d1dc8 100644
--- a/tests/src/com/android/ims/ImsFeatureBinderRepositoryTest.java
+++ b/tests/src/com/android/ims/ImsFeatureBinderRepositoryTest.java
@@ -30,6 +30,7 @@ import android.os.IBinder;
import android.telephony.ims.ImsService;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import androidx.test.filters.SmallTest;
@@ -56,6 +57,7 @@ public class ImsFeatureBinderRepositoryTest extends ImsTestBase {
@Mock IBinder mMockRcsFeatureA;
@Mock IImsConfig mMockImsConfig;
@Mock IImsRegistration mMockImsRegistration;
+ @Mock ISipTransport mMockSipTransport;
@Mock IImsServiceFeatureCallback mConnectionCallback;
@Mock IBinder mConnectionCallbackBinder;
@@ -356,6 +358,6 @@ public class ImsFeatureBinderRepositoryTest extends ImsTestBase {
private ImsFeatureContainer getFeatureContainer(IBinder feature, long caps) {
return new ImsFeatureContainer(feature, mMockImsConfig,
- mMockImsRegistration, caps);
+ mMockImsRegistration, mMockSipTransport, caps);
}
}
diff --git a/tests/src/com/android/ims/ImsFeatureContainerTest.java b/tests/src/com/android/ims/ImsFeatureContainerTest.java
index 5272d84e..77bc12df 100644
--- a/tests/src/com/android/ims/ImsFeatureContainerTest.java
+++ b/tests/src/com/android/ims/ImsFeatureContainerTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import android.os.Parcel;
import android.telephony.ims.ImsService;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsConfigImplBase;
@@ -38,6 +39,9 @@ public class ImsFeatureContainerTest {
private MmTelFeature mMmTelFeature = new MmTelFeature();
private ImsConfigImplBase mImsConfig = new ImsConfigImplBase();
private ImsRegistrationImplBase mImsReg = new ImsRegistrationImplBase();
+ private ISipTransport mSipTransport = new ISipTransport.Stub() {
+ // Add implementation once available
+ };
@Test
@SmallTest
@@ -45,7 +49,7 @@ public class ImsFeatureContainerTest {
final int state = ImsFeature.STATE_READY;
final long caps = ImsService.CAPABILITY_EMERGENCY_OVER_MMTEL;
ImsFeatureContainer c = new ImsFeatureContainer(mMmTelFeature.getBinder().asBinder(),
- mImsConfig.getIImsConfig(), mImsReg.getBinder(), caps);
+ mImsConfig.getIImsConfig(), mImsReg.getBinder(), mSipTransport, caps);
c.setState(state);
ImsFeatureContainer result = parcelUnparcel(c);
diff --git a/tests/src/com/android/ims/ImsManagerTest.java b/tests/src/com/android/ims/ImsManagerTest.java
index db90c8a0..be64a51b 100644
--- a/tests/src/com/android/ims/ImsManagerTest.java
+++ b/tests/src/com/android/ims/ImsManagerTest.java
@@ -34,8 +34,8 @@ import android.telephony.SubscriptionManager;
import android.telephony.ims.ImsMmTelManager;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.aidl.IImsConfig;
-import android.telephony.ims.aidl.IImsMmTelFeature;
import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.stub.ImsConfigImplBase;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -75,6 +75,7 @@ public class ImsManagerTest extends ImsTestBase {
@Mock IBinder mMmTelFeature;
@Mock IImsConfig mImsConfig;
@Mock IImsRegistration mImsReg;
+ @Mock ISipTransport mSipTransport;
@Mock ImsManager.SubscriptionManagerProxy mSubscriptionManagerProxy;
private final int[] mSubId = {0};
@@ -826,9 +827,11 @@ public class ImsManagerTest extends ImsTestBase {
doReturn(mImsConfigStub).when(mMmTelFeatureConnection).getConfig();
ImsManager mgr = new ImsManager(mContext, mPhoneId,
- (context, phoneId, feature, c, r) -> mMmTelFeatureConnection,
+ (context, phoneId, feature, c, r, s) -> mMmTelFeatureConnection,
mSubscriptionManagerProxy);
- mgr.associate(mMmTelFeature, mImsConfig, mImsReg);
+ ImsFeatureContainer c = new ImsFeatureContainer(mMmTelFeature, mImsConfig, mImsReg,
+ mSipTransport, 0 /*caps*/);
+ mgr.associate(c);
return mgr;
}