Merge "Add SipDelegateConnection#closeDialog"
This commit is contained in:
@@ -11314,6 +11314,7 @@ package android.telephony.ims {
|
||||
}
|
||||
|
||||
public interface SipDelegateConnection {
|
||||
method public void closeDialog(@NonNull String);
|
||||
method public void notifyMessageReceiveError(@NonNull String, int);
|
||||
method public void notifyMessageReceived(@NonNull String);
|
||||
method public void sendMessage(@NonNull android.telephony.ims.SipMessage, long);
|
||||
|
||||
@@ -62,7 +62,8 @@ public final class DelegateRegistrationState implements Parcelable {
|
||||
/**
|
||||
* This feature tag is being deregistered because the PDN that the IMS registration is on is
|
||||
*changing.
|
||||
* All open SIP dialogs need to be closed before the PDN change can proceed.
|
||||
* All open SIP dialogs need to be closed before the PDN change can proceed using
|
||||
* {@link SipDelegateConnection#closeDialog(String)}.
|
||||
*/
|
||||
public static final int DEREGISTERING_REASON_PDN_CHANGE = 3;
|
||||
|
||||
@@ -73,7 +74,8 @@ public final class DelegateRegistrationState implements Parcelable {
|
||||
* a user triggered hange, such as data being enabled/disabled.
|
||||
* <p>
|
||||
* All open SIP dialogs associated with the new deprovisioned feature tag need to be closed
|
||||
* before the IMS registration modification can proceed.
|
||||
* using {@link SipDelegateConnection#closeDialog(String)} before the IMS registration
|
||||
* modification can proceed.
|
||||
*/
|
||||
public static final int DEREGISTERING_REASON_PROVISIONING_CHANGE = 4;
|
||||
|
||||
@@ -81,8 +83,8 @@ public final class DelegateRegistrationState implements Parcelable {
|
||||
* This feature tag is deregistering because the SipDelegate associated with this feature tag
|
||||
* needs to change its supported feature set.
|
||||
* <p>
|
||||
* All open SIP Dialogs associated with this feature tag must be closed before this operation
|
||||
* can proceed.
|
||||
* All open SIP Dialogs associated with this feature tag must be closed
|
||||
* using {@link SipDelegateConnection#closeDialog(String)} before this operation can proceed.
|
||||
*/
|
||||
public static final int DEREGISTERING_REASON_FEATURE_TAGS_CHANGING = 5;
|
||||
|
||||
@@ -90,8 +92,8 @@ public final class DelegateRegistrationState implements Parcelable {
|
||||
* This feature tag is deregistering because the SipDelegate is in the process of being
|
||||
* destroyed.
|
||||
* <p>
|
||||
* All open SIP Dialogs associated with this feature tag must be closed before this operation
|
||||
* can proceed.
|
||||
* All open SIP Dialogs associated with this feature tag must be closed
|
||||
* using {@link SipDelegateConnection#closeDialog(String)} before this operation can proceed.
|
||||
*/
|
||||
public static final int DEREGISTERING_REASON_DESTROY_PENDING = 6;
|
||||
|
||||
|
||||
@@ -61,6 +61,22 @@ public interface SipDelegateConnection {
|
||||
*/
|
||||
void notifyMessageReceived(@NonNull String viaTransactionId);
|
||||
|
||||
/**
|
||||
* The SIP Dialog associated with the provided Call-ID is being closed and routing resources
|
||||
* associated with the SIP dialog are free to be released.
|
||||
* <p>
|
||||
* Calling this method is also mandatory for situations where the framework IMS stack is waiting
|
||||
* for pending SIP dialogs to be closed before it can perform a handover or apply a provisioning
|
||||
* change. See {@link DelegateRegistrationState} for more information about
|
||||
* the scenarios where this can occur.
|
||||
* <p>
|
||||
* This method will need to be called for each SIP dialog managed by this application when it is
|
||||
* closed.
|
||||
* @param callId The call-ID header value associated with the ongoing SIP Dialog that is
|
||||
* closing.
|
||||
*/
|
||||
void closeDialog(@NonNull String callId);
|
||||
|
||||
/**
|
||||
* Notify the SIP delegate that the SIP message has been received from
|
||||
* {@link DelegateMessageCallback#onMessageReceived(SipMessage)}, however there was an error
|
||||
|
||||
@@ -26,7 +26,5 @@ oneway interface ISipDelegate {
|
||||
void sendMessage(in SipMessage sipMessage, long configVersion);
|
||||
void notifyMessageReceived(in String viaTransactionId);
|
||||
void notifyMessageReceiveError(in String viaTransactionId, int reason);
|
||||
|
||||
// only used by SipDelegate.
|
||||
void closeDialog(in String callId);
|
||||
}
|
||||
|
||||
@@ -199,6 +199,19 @@ public class SipDelegateConnectionAidlWrapper implements SipDelegateConnection,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeDialog(String callId) {
|
||||
try {
|
||||
ISipDelegate conn = getSipDelegateBinder();
|
||||
if (conn == null) {
|
||||
return;
|
||||
}
|
||||
conn.closeDialog(callId);
|
||||
} catch (RemoteException e) {
|
||||
// Nothing to do here, app will eventually get remote death callback.
|
||||
}
|
||||
}
|
||||
|
||||
// Also called upon IImsRcsController death (telephony process dies).
|
||||
@Override
|
||||
public void binderDied() {
|
||||
|
||||
@@ -19,7 +19,9 @@ package android.telephony.ims.stub;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SystemApi;
|
||||
import android.telephony.ims.DelegateMessageCallback;
|
||||
import android.telephony.ims.DelegateRegistrationState;
|
||||
import android.telephony.ims.ImsService;
|
||||
import android.telephony.ims.SipDelegateConnection;
|
||||
import android.telephony.ims.SipDelegateImsConfiguration;
|
||||
import android.telephony.ims.SipDelegateManager;
|
||||
import android.telephony.ims.SipMessage;
|
||||
@@ -65,10 +67,13 @@ public interface SipDelegate {
|
||||
* The framework is requesting that routing resources associated with the SIP dialog using the
|
||||
* provided Call-ID to be cleaned up.
|
||||
* <p>
|
||||
* Typically a SIP Dialog close event will be signalled by that dialog receiving a BYE or 200 OK
|
||||
* message, however, in some cases, the framework will request that the ImsService close the
|
||||
* Typically, a SIP Dialog close event will be signalled by that dialog receiving a BYE or
|
||||
* 200 OK message, however, the IMS application will still call
|
||||
* {@link SipDelegateConnection#closeDialog(String)} to signal to the framework that resources
|
||||
* can be released. In some cases, the framework will request that the ImsService close the
|
||||
* dialog due to the open dialog holding up an event such as applying a provisioning change or
|
||||
* handing over to another transport type.
|
||||
* handing over to another transport type. See {@link DelegateRegistrationState}.
|
||||
*
|
||||
* @param callId The call-ID header value associated with the ongoing SIP Dialog that the
|
||||
* framework is requesting be closed.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user