diff options
author | Brad Ebinger <breadley@google.com> | 2020-09-25 17:33:35 -0700 |
---|---|---|
committer | Brad Ebinger <breadley@google.com> | 2020-10-21 13:27:48 -0700 |
commit | 3c69ca62333ed73b5321602886674df7fd4d002f (patch) | |
tree | f55ed532a1abfd0360092e393c1d4c53304832a7 | |
parent | e482d4563d2b9c8aae6cb4226214b88df34c5595 (diff) | |
download | ims-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
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; } |