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

Commit 3557c8b1 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Android Build Coastguard Worker
Browse files

Do check for throttled before allowing sms is throttled

Bug: 406623065
Test: Manual verification of polling tests that device does not
      send out more than 1 sms in 3 minutes for polling
Test: atest DatagramDispatcherTest
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:dcf5c1b546ce3cc04823cd3a88d608efc5f2e870)
Merged-In: I78b4f5c78efd736a673e2b3ad8ef2f9ad6b357b7
Change-Id: I78b4f5c78efd736a673e2b3ad8ef2f9ad6b357b7
parent 577e9a0d
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -1382,8 +1382,6 @@ public class DatagramDispatcher extends Handler {
    }

    private boolean allowMtSmsPolling() {
        if (!mFeatureFlags.carrierRoamingNbIotNtn()) return false;

        SatelliteController satelliteController = SatelliteController.getInstance();
        int subId = satelliteController.getSelectedSatelliteSubId();
        boolean isP2PSmsDisallowed =
@@ -1394,20 +1392,33 @@ public class DatagramDispatcher extends Handler {
        }

        boolean isModemStateConnectedOrTransferring;
        boolean isAligned;
        boolean isMtSmsPollingThrottled;
        synchronized (mLock) {
            if (!mIsAligned) return false;

            isMtSmsPollingThrottled = mIsMtSmsPollingThrottled;
            isAligned = mIsAligned;
            isModemStateConnectedOrTransferring =
                    mModemState == SATELLITE_MODEM_STATE_CONNECTED
                            || mModemState == SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING;
        }

        if (isMtSmsPollingThrottled) {
            plogd("allowMtSmsPolling: polling is throttled");
            return false;
        }

        if (!isAligned) {
            plogd("allowMtSmsPolling: not aligned");
            return false;
        }

        if (!isModemStateConnectedOrTransferring && !allowCheckMessageInNotConnected()) {
            plogd("EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT:"
            plogd("allowMtSmsPolling: not in service and "
                    + "allow_check_message_in_not_connected is disabled");
            return false;
        }

        plogd("allowMtSmsPolling: return true");
        return true;
    }

+14 −24
Original line number Diff line number Diff line
@@ -1145,13 +1145,11 @@ public class DatagramDispatcherTest extends TelephonyTest {
   public void testHandleMessage_eventMtSmsPollingThrottleTimedOut_sendsMtSmsPollInNotConnected() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);

        mDatagramDispatcherUT.handleMessage(
        mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
                        new AsyncResult(null, null, null)));
                new AsyncResult(null, null, null)).sendToTarget();
        processAllMessages();

        verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
@@ -1162,14 +1160,13 @@ public class DatagramDispatcherTest extends TelephonyTest {
            testHandleMessage_eventMtSmsPollingThrottleTimedOut_configDisabled_doesNotSendMtSmsPoll() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        // Set config_satellite_allow_check_message_in_not_connected to false
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, false);

        mDatagramDispatcherUT.handleMessage(
        mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
                        new AsyncResult(null, null, null)));
                new AsyncResult(null, null, null)).sendToTarget();
        processAllMessages();

        verifyNoMoreInteractions(mMockSmsDispatchersController);
   }
@@ -1179,16 +1176,14 @@ public class DatagramDispatcherTest extends TelephonyTest {
            testHandleMessage_eventMtSmsPollingThrottleTimedOut_flagDisabled_doesNotSendMtSmsPoll() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        // Set flag to false
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(false);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);

        mDatagramDispatcherUT.handleMessage(
        mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
                        new AsyncResult(null, null, null)));
                new AsyncResult(null, null, null)).sendToTarget();
        processAllMessages();

        verifyNoMoreInteractions(mMockSmsDispatchersController);
        verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
   }


@@ -1196,7 +1191,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    @Test
    public void testSetDeviceAlignedWithSatellite_isAligned_notConnected_sendsMtSmsPoll() {
        setShouldPollMtSmsTrue();
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);

@@ -1209,11 +1203,11 @@ public class DatagramDispatcherTest extends TelephonyTest {
    @Test
    public void testSetDeviceAlignedWithSatellite_notAligned_doesNotSendsMtSmsPoll() {
        setShouldPollMtSmsTrue();
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);

        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(false);
        processAllMessages();

        verifyNoMoreInteractions(mMockSmsDispatchersController);
    }
@@ -1222,7 +1216,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    public void testOnSatelliteModemStateChanged_notConnected_sendsMtSmsPoll() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);

@@ -1237,7 +1230,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    public void testOnSatelliteModemStateChanged_connected_sendsMtSmsPoll() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);

        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
@@ -1250,7 +1242,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    public void testOnSatelliteModemStateChanged_transferring_sendsMtSmsPoll() {
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);

        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
@@ -1264,9 +1255,11 @@ public class DatagramDispatcherTest extends TelephonyTest {
        startMtSmsPollingThrottle();
        setShouldPollMtSmsTrue();
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);
        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);
        processAllMessages();

        verify(mMockSmsDispatchersController, times(0)).sendMtSmsPollingMessage();
    }
@@ -1274,7 +1267,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    @Test
    public void testOnSatelliteModemStateChanged_onFirstConnected_sendsMtSmsPoll() {
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        // Set the following so shouldPollMtSms returns true
        mContextFixture.putBooleanResource(R.bool.config_enabled_mt_sms_polling, true);
        when(mMockSatelliteController.shouldSendSmsToDatagramDispatcher(any(Phone.class)))
@@ -1290,7 +1282,6 @@ public class DatagramDispatcherTest extends TelephonyTest {
    @Test
    public void testSendsMtSmsPoll_P2PSmsAllowed() {
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(R.bool.config_enabled_mt_sms_polling, true);
        when(mMockSatelliteController.shouldSendSmsToDatagramDispatcher(any(Phone.class)))
                .thenReturn(true);
@@ -1344,8 +1335,7 @@ public class DatagramDispatcherTest extends TelephonyTest {
        args.arg2 = pendingRequest.uniqueMessageId;
        args.arg3 = true;
        // EVENT_SEND_SMS_DONE to trigger handleEventSendSmsDone which will start the throttle
        mDatagramDispatcherUT.handleMessage(
                mDatagramDispatcherUT.obtainMessage(9 /*EVENT_SEND_SMS_DONE*/, args));
        mDatagramDispatcherUT.obtainMessage(9 /*EVENT_SEND_SMS_DONE*/, args).sendToTarget();
    }

    private boolean waitForIntegerConsumerResult(int expectedNumberOfEvents) {