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

Commit 9ffde753 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Android (Google) Code Review
Browse files

Merge "Update send sms status only after sending all parts of the SMS" into main

parents 94eb3fe7 50793736
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1234,7 +1234,7 @@ public class SmsDispatchersController extends Handler {
            boolean isOverIms, boolean isLastSmsPart, boolean success) {
        notifySmsSentToEmergencyStateTracker(tracker.mDestAddress,
            tracker.mMessageId, isOverIms, isLastSmsPart, success);
        notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, success);
        notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, isLastSmsPart, success);
    }

    /**
@@ -1254,9 +1254,11 @@ public class SmsDispatchersController extends Handler {
        }
    }

    private void notifySmsSentToDatagramDispatcher(long messageId, boolean success) {
    private void notifySmsSentToDatagramDispatcher(
            long messageId, boolean isLastSmsPart, boolean success) {
        if (SatelliteController.getInstance().shouldSendSmsToDatagramDispatcher(mPhone)) {
            DatagramDispatcher.getInstance().onSendSmsDone(mPhone.getSubId(), messageId, success);
            DatagramDispatcher.getInstance().onSendSmsDone(
                    mPhone.getSubId(), messageId, isLastSmsPart, success);
        }
    }

+18 −10
Original line number Diff line number Diff line
@@ -406,9 +406,10 @@ public class DatagramDispatcher extends Handler {
                SomeArgs args = (SomeArgs) msg.obj;
                int subId = (int) args.arg1;
                long messageId = (long) args.arg2;
                boolean success = (boolean) args.arg3;
                boolean isLastPartSms = (boolean) args.arg3;
                boolean success = (boolean) args.arg4;
                try {
                    handleEventSendSmsDone(subId, messageId, success);
                    handleEventSendSmsDone(subId, messageId, isLastPartSms, success);
                } finally {
                    args.recycle();
                }
@@ -1181,13 +1182,15 @@ public class DatagramDispatcher extends Handler {
     * Sending MO SMS is completed.
     * @param subId subscription ID
     * @param messageId message ID of MO SMS
     * @param isLastSmsPart whether this is the last sms part of MO SMS
     * @param success boolean specifying whether MO SMS is successfully sent or not.
     */
    public void onSendSmsDone(int subId, long messageId, boolean success) {
    public void onSendSmsDone(int subId, long messageId, boolean isLastSmsPart, boolean success) {
        SomeArgs args = SomeArgs.obtain();
        args.arg1 = subId;
        args.arg2 = messageId;
        args.arg3 = success;
        args.arg3 = isLastSmsPart;
        args.arg4 = success;
        sendMessage(obtainMessage(EVENT_SEND_SMS_DONE, args));
    }

@@ -1228,7 +1231,8 @@ public class DatagramDispatcher extends Handler {
        pendingSmsMap.clear();
    }

    private void handleEventSendSmsDone(int subId, long messageId, boolean success) {
    private void handleEventSendSmsDone(
            int subId, long messageId, boolean isLastPartSms, boolean success) {
        synchronized (mLock) {
            mSendingInProgress = false;
            PendingRequest pendingSms = mPendingSmsMap.remove(messageId);
@@ -1236,12 +1240,16 @@ public class DatagramDispatcher extends Handler {
                    ? DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS  : DATAGRAM_TYPE_SMS;

            plogd("handleEventSendSmsDone subId=" + subId + " messageId=" + messageId
                    + " success=" + success);
                    + " isLastPartSms=" + isLastPartSms + " success=" + success
                    + " datagramType=" + datagramType);

            if (success) {
                // Update send status for current datagram
                if (isLastPartSms) {
                    // Update send status only after all parts of the SMS are sent
                    mDatagramController.updateSendStatus(subId, datagramType,
                            SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS,
                            getPendingMessagesCount(), SATELLITE_RESULT_SUCCESS);
                }
                if (datagramType == DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS) {
                    startMtSmsPollingThrottle();
                }
+8 −4
Original line number Diff line number Diff line
@@ -824,7 +824,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
                        eq(SATELLITE_RESULT_SUCCESS));
        verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms));

        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true);
        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId,
                true, true);
        processAllMessages();

        mInOrder.verify(mMockDatagramController)
@@ -858,7 +859,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
                        eq(SATELLITE_RESULT_SUCCESS));
        verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms));

        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, false);
        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId,
                true, false);
        processAllMessages();

        mInOrder.verify(mMockDatagramController)
@@ -1056,7 +1058,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
                        eq(SATELLITE_RESULT_SUCCESS));
        verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms));

        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true);
        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId,
                true, true);
        processAllMessages();

        mInOrder.verify(mMockDatagramController)
@@ -1107,7 +1110,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
        processAllMessages();
        verifyZeroInteractions(mMockSatelliteModemInterface);

        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true);
        mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId,
                true, true);
        processAllMessages();
        mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(datagramTypeSms),