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

Commit 50793736 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

Update send sms status only after sending all parts of the SMS

Bug: 378982497
Test: Manually tested SMS/MMS/CALLS/DATA
FLAG: EXEMPT bugfix
Change-Id: Ic5390da1e273d64d26f2cbdb4f3bdbe6cc1d010d
parent 2e434702
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),