Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba2cdfb2 authored by Brad Ebinger's avatar Brad Ebinger Committed by Gerrit Code Review
Browse files

Merge "Allow ImsService to return network error codes"

parents f26f9b3f 8d1f9f55
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -9420,7 +9420,9 @@ package android.telephony.ims.stub {
    method public void acknowledgeSmsReport(int, int, int);
    method public String getSmsFormat();
    method public void onReady();
    method public final void onSendSmsResult(int, int, int, int) throws java.lang.RuntimeException;
    method @Deprecated public final void onSendSmsResult(int, int, int, int) throws java.lang.RuntimeException;
    method public final void onSendSmsResultError(int, int, int, int, int) throws java.lang.RuntimeException;
    method public final void onSendSmsResultSuccess(int, int) throws java.lang.RuntimeException;
    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
    method @Deprecated public final void onSmsStatusReportReceived(int, int, String, byte[]) throws java.lang.RuntimeException;
    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
@@ -9429,6 +9431,7 @@ package android.telephony.ims.stub {
    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
    field public static final int DELIVER_STATUS_OK = 1; // 0x1
    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
    field public static final int SEND_STATUS_ERROR = 2; // 0x2
    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ package android.telephony.ims.aidl;
 * {@hide}
 */
oneway interface IImsSmsListener {
    void onSendSmsResult(int token, int messageRef, int status, int reason);
    void onSendSmsResult(int token, int messageRef, int status, int reason, int networkErrorCode);
    void onSmsStatusReportReceived(int token, in String format, in byte[] pdu);
    void onSmsReceived(int token, in String format, in byte[] pdu);
}
+95 −6
Original line number Diff line number Diff line
@@ -118,6 +118,12 @@ public class ImsSmsImplBase {
     */
    public static final int STATUS_REPORT_STATUS_ERROR = 2;

    /**
     * No network error was generated while processing the SMS message.
     */
    // Should match SmsResponse.NO_ERROR_CODE
    public static final int RESULT_NO_NETWORK_ERROR = -1;

    // Lock for feature synchronization
    private final Object mLock = new Object();
    private IImsSmsListener mListener;
@@ -230,17 +236,38 @@ public class ImsSmsImplBase {
        }
    }

    /**
     * This method should be triggered by the IMS providers when an outgoing SMS message has been
     * sent successfully.
     *
     * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])}
     * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040
     *
     * @throws RuntimeException if called before {@link #onReady()} is triggered or if the
     * connection to the framework is not available. If this happens attempting to send the SMS
     * should be aborted.
     */
    public final void onSendSmsResultSuccess(int token, int messageRef) throws RuntimeException {
        synchronized (mLock) {
            if (mListener == null) {
                throw new RuntimeException("Feature not ready.");
            }
            try {
                mListener.onSendSmsResult(token, messageRef, SEND_STATUS_OK,
                        SmsManager.RESULT_ERROR_NONE, RESULT_NO_NETWORK_ERROR);
            } catch (RemoteException e) {
                e.rethrowFromSystemServer();
            }
        }
    }

    /**
     * This method should be triggered by the IMS providers to pass the result of the sent message
     * to the platform.
     *
     * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])}
     * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040
     * @param status result of sending the SMS. Valid values are:
     *  {@link #SEND_STATUS_OK},
     *  {@link #SEND_STATUS_ERROR},
     *  {@link #SEND_STATUS_ERROR_RETRY},
     *  {@link #SEND_STATUS_ERROR_FALLBACK},
     * @param status result of sending the SMS.
     * @param reason reason in case status is failure. Valid values are:
     *  {@link SmsManager#RESULT_ERROR_NONE},
     *  {@link SmsManager#RESULT_ERROR_GENERIC_FAILURE},
@@ -271,7 +298,11 @@ public class ImsSmsImplBase {
     * @throws RuntimeException if called before {@link #onReady()} is triggered or if the
     * connection to the framework is not available. If this happens attempting to send the SMS
     * should be aborted.
     * @deprecated Use {@link #onSendSmsResultSuccess(int, int)} or
     * {@link #onSendSmsResultError(int, int, int, int, int)} to notify the framework of the SMS
     * send result.
     */
    @Deprecated
    public final void onSendSmsResult(int token, int messageRef,  @SendStatusResult int status,
            int reason) throws RuntimeException {
        synchronized (mLock) {
@@ -279,7 +310,65 @@ public class ImsSmsImplBase {
                throw new RuntimeException("Feature not ready.");
            }
            try {
                mListener.onSendSmsResult(token, messageRef, status, reason);
                mListener.onSendSmsResult(token, messageRef, status, reason,
                        RESULT_NO_NETWORK_ERROR);
            } catch (RemoteException e) {
                e.rethrowFromSystemServer();
            }
        }
    }

    /**
     * This method should be triggered by the IMS providers when an outgoing message fails to be
     * sent due to an error generated while processing the message or after being sent to the
     * network.
     *
     * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])}
     * @param messageRef the message reference. Should be between 0 and 255 per TS.123.040
     * @param status result of sending the SMS.
     * @param reason Valid values are:
     *  {@link SmsManager#RESULT_ERROR_NONE},
     *  {@link SmsManager#RESULT_ERROR_GENERIC_FAILURE},
     *  {@link SmsManager#RESULT_ERROR_RADIO_OFF},
     *  {@link SmsManager#RESULT_ERROR_NULL_PDU},
     *  {@link SmsManager#RESULT_ERROR_NO_SERVICE},
     *  {@link SmsManager#RESULT_ERROR_LIMIT_EXCEEDED},
     *  {@link SmsManager#RESULT_ERROR_FDN_CHECK_FAILURE},
     *  {@link SmsManager#RESULT_ERROR_SHORT_CODE_NOT_ALLOWED},
     *  {@link SmsManager#RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED},
     *  {@link SmsManager#RESULT_RADIO_NOT_AVAILABLE},
     *  {@link SmsManager#RESULT_NETWORK_REJECT},
     *  {@link SmsManager#RESULT_INVALID_ARGUMENTS},
     *  {@link SmsManager#RESULT_INVALID_STATE},
     *  {@link SmsManager#RESULT_NO_MEMORY},
     *  {@link SmsManager#RESULT_INVALID_SMS_FORMAT},
     *  {@link SmsManager#RESULT_SYSTEM_ERROR},
     *  {@link SmsManager#RESULT_MODEM_ERROR},
     *  {@link SmsManager#RESULT_NETWORK_ERROR},
     *  {@link SmsManager#RESULT_ENCODING_ERROR},
     *  {@link SmsManager#RESULT_INVALID_SMSC_ADDRESS},
     *  {@link SmsManager#RESULT_OPERATION_NOT_ALLOWED},
     *  {@link SmsManager#RESULT_INTERNAL_ERROR},
     *  {@link SmsManager#RESULT_NO_RESOURCES},
     *  {@link SmsManager#RESULT_CANCELLED},
     *  {@link SmsManager#RESULT_REQUEST_NOT_SUPPORTED}
     * @param networkErrorCode the error code reported by the carrier network if sending this SMS
     *  has resulted in an error or {@link #RESULT_NO_NETWORK_ERROR} if no network error was
     *  generated. See 3GPP TS 24.011 Section 7.3.4 for valid error codes and more information.
     *
     * @throws RuntimeException if called before {@link #onReady()} is triggered or if the
     * connection to the framework is not available. If this happens attempting to send the SMS
     * should be aborted.
     */
    public final void onSendSmsResultError(int token, int messageRef,  @SendStatusResult int status,
            int reason, int networkErrorCode)
            throws RuntimeException {
        synchronized (mLock) {
            if (mListener == null) {
                throw new RuntimeException("Feature not ready.");
            }
            try {
                mListener.onSendSmsResult(token, messageRef, status, reason, networkErrorCode);
            } catch (RemoteException e) {
                e.rethrowFromSystemServer();
            }