summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telephony/java/android/telephony/ims/DelegateRequest.java5
-rw-r--r--telephony/java/android/telephony/ims/SipDelegateManager.java21
-rw-r--r--telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl2
-rw-r--r--telephony/java/android/telephony/ims/aidl/ISipTransport.aidl2
-rw-r--r--telephony/java/android/telephony/ims/stub/SipTransportImplBase.java17
5 files changed, 28 insertions, 19 deletions
diff --git a/telephony/java/android/telephony/ims/DelegateRequest.java b/telephony/java/android/telephony/ims/DelegateRequest.java
index f384901d58bd..73d0840177dd 100644
--- a/telephony/java/android/telephony/ims/DelegateRequest.java
+++ b/telephony/java/android/telephony/ims/DelegateRequest.java
@@ -98,4 +98,9 @@ public final class DelegateRequest implements Parcelable {
public int hashCode() {
return Objects.hash(mFeatureTags);
}
+
+ @Override
+ public String toString() {
+ return "DelegateRequest{mFeatureTags=" + mFeatureTags + '}';
+ }
}
diff --git a/telephony/java/android/telephony/ims/SipDelegateManager.java b/telephony/java/android/telephony/ims/SipDelegateManager.java
index 337b7d49323d..190a792b5a9a 100644
--- a/telephony/java/android/telephony/ims/SipDelegateManager.java
+++ b/telephony/java/android/telephony/ims/SipDelegateManager.java
@@ -236,17 +236,17 @@ public class SipDelegateManager {
public static final int SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP = 2;
/**
- * The SipDelegate has closed because the IMS service does not support the creation of
- * SipDelegates.
+ * The SipDelegate has been closed due to the user disabling RCS.
* @hide
*/
- public static final int SIP_DELEGATE_DESTROY_REASON_SERVICE_NOT_SUPPORTED = 3;
+ public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 3;
/**
- * The SipDelegate has been closed due to the user disabling RCS.
+ * The SipDelegate has been closed due to the subscription associated with this delegate being
+ * torn down.
* @hide
*/
- public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 4;
+ public static final int SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN = 4;
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -254,8 +254,8 @@ public class SipDelegateManager {
SIP_DELEGATE_DESTROY_REASON_UNKNOWN,
SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD,
SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP,
- SIP_DELEGATE_DESTROY_REASON_SERVICE_NOT_SUPPORTED,
- SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS
+ SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS,
+ SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN
})
public @interface SipDelegateDestroyReason {}
@@ -316,6 +316,9 @@ public class SipDelegateManager {
* always be available to handle incoming messages. One mechanism that can be used for this is
* the {@link android.service.carrier.CarrierMessagingClientService}, which the framework keeps
* a persistent binding to when the app is the default SMS application.
+ * <p>
+ * Note: the ability to create SipDelegates is only available applications running as the
+ * primary user.
* @param request The parameters that are associated with the SipDelegate creation request that
* will be used to create the SipDelegate connection.
* @param executor The executor that will be used to call the callbacks associated with this
@@ -346,8 +349,8 @@ public class SipDelegateManager {
throw new ImsException("Telephony server is down",
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
}
- controller.createSipDelegate(mSubId, request, wrapper.getStateCallbackBinder(),
- wrapper.getMessageCallbackBinder());
+ controller.createSipDelegate(mSubId, request, mContext.getOpPackageName(),
+ wrapper.getStateCallbackBinder(), wrapper.getMessageCallbackBinder());
} catch (ServiceSpecificException e) {
throw new ImsException(e.getMessage(), e.errorCode);
} catch (RemoteException e) {
diff --git a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
index f218e35a5a9b..c6d9a8629556 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
@@ -63,7 +63,7 @@ interface IImsRcsController {
// SipDelegateManager
boolean isSipDelegateSupported(int subId);
- void createSipDelegate(int subId, in DelegateRequest request,
+ void createSipDelegate(int subId, in DelegateRequest request, String packageName,
ISipDelegateConnectionStateCallback delegateState,
ISipDelegateMessageCallback delegateMessage);
void destroySipDelegate(int subId, ISipDelegate connection, int reason);
diff --git a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
index cd888391c584..3438587b7348 100644
--- a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
+++ b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
@@ -26,7 +26,7 @@ import android.telephony.ims.aidl.ISipDelegateStateCallback;
* {@hide}
*/
oneway interface ISipTransport {
- void createSipDelegate(in DelegateRequest request, ISipDelegateStateCallback dc,
+ void createSipDelegate(int subId, in DelegateRequest request, ISipDelegateStateCallback dc,
ISipDelegateMessageCallback mc);
void destroySipDelegate(ISipDelegate delegate, int reason);
}
diff --git a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
index b48f6317e413..93d438cf7f4d 100644
--- a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
@@ -58,11 +58,11 @@ public class SipTransportImplBase {
private final ISipTransport.Stub mSipTransportImpl = new ISipTransport.Stub() {
@Override
- public void createSipDelegate(DelegateRequest request, ISipDelegateStateCallback dc,
- ISipDelegateMessageCallback mc) {
+ public void createSipDelegate(int subId, DelegateRequest request,
+ ISipDelegateStateCallback dc, ISipDelegateMessageCallback mc) {
final long token = Binder.clearCallingIdentity();
try {
- mBinderExecutor.execute(() -> createSipDelegateInternal(request, dc, mc));
+ mBinderExecutor.execute(() -> createSipDelegateInternal(subId, request, dc, mc));
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -105,6 +105,7 @@ public class SipTransportImplBase {
* This method will be called on the Executor specified in
* {@link SipTransportImplBase#SipTransportImplBase(Executor)}.
*
+ * @param subscriptionId The subscription ID associated with the requested {@link SipDelegate}.
* @param request A SIP delegate request containing the parameters that the remote RCS
* application wishes to use.
* @param dc A callback back to the remote application to be used to communicate state callbacks
@@ -113,9 +114,9 @@ public class SipTransportImplBase {
* remote application and acknowledge the sending of outgoing SIP messages.
* @hide
*/
- public void createSipDelegate(@NonNull DelegateRequest request,
+ public void createSipDelegate(int subscriptionId, @NonNull DelegateRequest request,
@NonNull DelegateStateCallback dc, @NonNull DelegateMessageCallback mc) {
- throw new UnsupportedOperationException("destroySipDelegate not implemented!");
+ throw new UnsupportedOperationException("createSipDelegate not implemented!");
}
/**
@@ -136,11 +137,11 @@ public class SipTransportImplBase {
throw new UnsupportedOperationException("destroySipDelegate not implemented!");
}
- private void createSipDelegateInternal(DelegateRequest r, ISipDelegateStateCallback cb,
- ISipDelegateMessageCallback mc) {
+ private void createSipDelegateInternal(int subId, DelegateRequest r,
+ ISipDelegateStateCallback cb, ISipDelegateMessageCallback mc) {
SipDelegateAidlWrapper wrapper = new SipDelegateAidlWrapper(mBinderExecutor, cb, mc);
mDelegates.add(wrapper);
- createSipDelegate(r, wrapper, wrapper);
+ createSipDelegate(subId, r, wrapper, wrapper);
}
private void destroySipDelegateInternal(ISipDelegate d, int reason) {