Merge "Add EabProvider and EabControllerImpl"
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 9f04116..867a273 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -16,6 +16,7 @@
package com.android.ims;
+import android.annotation.NonNull;
import android.app.PendingIntent;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -41,6 +42,7 @@
import android.telephony.ims.ImsService;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.RegistrationManager;
+import android.telephony.ims.RtpHeaderExtensionType;
import android.telephony.ims.aidl.IImsCapabilityCallback;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsConfigCallback;
@@ -66,6 +68,7 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
@@ -2030,6 +2033,27 @@
}
/**
+ * Informs the {@link ImsService} of the {@link RtpHeaderExtensionType}s which the framework
+ * intends to use for incoming and outgoing calls.
+ * <p>
+ * See {@link RtpHeaderExtensionType} for more information.
+ * @param types The RTP header extension types to use for incoming and outgoing calls, or
+ * empty list if none defined.
+ * @throws ImsException
+ */
+ public void setOfferedRtpHeaderExtensionTypes(@NonNull Set<RtpHeaderExtensionType> types)
+ throws ImsException {
+ MmTelFeatureConnection c = getOrThrowExceptionIfServiceUnavailable();
+
+ try {
+ c.changeOfferedRtpHeaderExtensionTypes(types);
+ } catch (RemoteException e) {
+ throw new ImsException("setOfferedRtpHeaderExtensionTypes()", e,
+ ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN);
+ }
+ }
+
+ /**
* Creates a {@link ImsCall} to make a call.
*
* @param profile a call profile to make the call
diff --git a/src/java/com/android/ims/MmTelFeatureConnection.java b/src/java/com/android/ims/MmTelFeatureConnection.java
index a45efe4..cc7eace 100644
--- a/src/java/com/android/ims/MmTelFeatureConnection.java
+++ b/src/java/com/android/ims/MmTelFeatureConnection.java
@@ -24,6 +24,7 @@
import android.telephony.TelephonyManager;
import android.telephony.ims.ImsCallProfile;
import android.telephony.ims.ImsService;
+import android.telephony.ims.RtpHeaderExtensionType;
import android.telephony.ims.aidl.IImsCapabilityCallback;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsConfigCallback;
@@ -44,6 +45,9 @@
import com.android.ims.internal.IImsUt;
import com.android.telephony.Rlog;
+import java.util.ArrayList;
+import java.util.Set;
+
/**
* A container of the IImsServiceController binder, which implements all of the ImsFeatures that
* the platform currently supports: MMTel
@@ -342,6 +346,15 @@
}
}
+ public void changeOfferedRtpHeaderExtensionTypes(Set<RtpHeaderExtensionType> types)
+ throws RemoteException {
+ synchronized (mLock) {
+ checkServiceIsReady();
+ getServiceInterface(mBinder).changeOfferedRtpHeaderExtensionTypes(
+ new ArrayList<>(types));
+ }
+ }
+
public IImsCallSession createCallSession(ImsCallProfile profile)
throws RemoteException {
synchronized (mLock) {
diff --git a/src/java/com/android/ims/rcs/uce/UceController.java b/src/java/com/android/ims/rcs/uce/UceController.java
index b7ac41b..1983198 100644
--- a/src/java/com/android/ims/rcs/uce/UceController.java
+++ b/src/java/com/android/ims/rcs/uce/UceController.java
@@ -366,14 +366,14 @@
if (uriList == null || c == null) {
logw("requestCapabilities: parameter is empty");
if (c != null) {
- c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
}
return;
}
if (isUnavailable()) {
logw("requestCapabilities: controller is unavailable");
- c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
return;
}
@@ -392,14 +392,14 @@
if (uri == null || c == null) {
logw("requestCapabilities: parameter is empty");
if (c != null) {
- c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
}
return;
}
if (isUnavailable()) {
logw("requestAvailability: controller is unavailable");
- c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ c.onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
return;
}
diff --git a/tests/src/com/android/ims/ImsFeatureContainerTest.java b/tests/src/com/android/ims/ImsFeatureContainerTest.java
index 77bc12d..e6a5997 100644
--- a/tests/src/com/android/ims/ImsFeatureContainerTest.java
+++ b/tests/src/com/android/ims/ImsFeatureContainerTest.java
@@ -19,7 +19,12 @@
import static org.junit.Assert.assertEquals;
import android.os.Parcel;
+import android.os.RemoteException;
+import android.telephony.ims.DelegateRequest;
import android.telephony.ims.ImsService;
+import android.telephony.ims.aidl.ISipDelegate;
+import android.telephony.ims.aidl.ISipDelegateMessageCallback;
+import android.telephony.ims.aidl.ISipDelegateStateCallback;
import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.MmTelFeature;
@@ -40,7 +45,14 @@
private ImsConfigImplBase mImsConfig = new ImsConfigImplBase();
private ImsRegistrationImplBase mImsReg = new ImsRegistrationImplBase();
private ISipTransport mSipTransport = new ISipTransport.Stub() {
- // Add implementation once available
+ @Override
+ public void createSipDelegate(int subId, DelegateRequest request,
+ ISipDelegateStateCallback dc, ISipDelegateMessageCallback mc) {
+ }
+
+ @Override
+ public void destroySipDelegate(ISipDelegate delegate, int reason) {
+ }
};
@Test
diff --git a/tests/src/com/android/ims/rcs/uce/UceControllerTest.java b/tests/src/com/android/ims/rcs/uce/UceControllerTest.java
index a53370b..63f399f 100644
--- a/tests/src/com/android/ims/rcs/uce/UceControllerTest.java
+++ b/tests/src/com/android/ims/rcs/uce/UceControllerTest.java
@@ -135,7 +135,7 @@
List<Uri> uriList = new ArrayList<>();
uceController.requestCapabilities(uriList, mCapabilitiesCallback);
- verify(mCapabilitiesCallback).onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ verify(mCapabilitiesCallback).onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
verify(mTaskManager, never()).triggerCapabilityRequestTask(any(), any(), any());
}
@@ -161,7 +161,7 @@
Uri contact = Uri.fromParts("sip", "test", null);
uceController.requestAvailability(contact, mCapabilitiesCallback);
- verify(mCapabilitiesCallback).onError(RcsUceAdapter.ERROR_GENERIC_FAILURE);
+ verify(mCapabilitiesCallback).onError(RcsUceAdapter.ERROR_GENERIC_FAILURE, 0L);
verify(mTaskManager, never()).triggerAvailabilityRequestTask(any(), any(), any());
}