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

Commit e3b19d1c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[NTN][VZW P2P] Allow Check messages to be sent even if the device is in...

Merge "[NTN][VZW P2P] Allow Check messages to be sent even if the device is in NOT_CONNECTED state." into main
parents 56c409e0 6bae408a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.internal.telephony.satellite;

import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
@@ -419,6 +420,15 @@ public class DatagramController {
                    && mSatelltieModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED) {
                return false;
            }
            boolean allowCheckMessageInNotConnected =
                    mContext.getResources().getBoolean(
                            R.bool.config_satellite_allow_check_message_in_not_connected);
            if (datagramType == DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS
                    && mSatelltieModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED
                    && allowCheckMessageInNotConnected
                    && mFeatureFlags.carrierRoamingNbIotNtn()) {
                return false;
            }
            if (mSatelltieModemState != SATELLITE_MODEM_STATE_CONNECTED
                    && mSatelltieModemState != SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING) {
                return true;
+73 −0
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@

package com.android.internal.telephony.satellite;

import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_SMS;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
@@ -44,6 +46,7 @@ import android.telephony.satellite.SatelliteManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

import com.android.internal.R;
import com.android.internal.telephony.TelephonyTest;

import org.junit.After;
@@ -187,6 +190,76 @@ public class DatagramControllerTest extends TelephonyTest {
        }
    }

    @Test
    public void testNeedsWaitingForSatelliteConnected_checkMessageInNotConnected_returnsFalse()
            throws Exception {
        when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);
        mDatagramControllerUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);

        boolean result =
                mDatagramControllerUT.needsWaitingForSatelliteConnected(
                        DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS);

        assertFalse(result);
    }

    @Test
    public void testNeedsWaitingForSatelliteConnected_regularSmsInNotConnected_returnsTrue()
            throws Exception {
        when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);
        mDatagramControllerUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);

        boolean result =
                mDatagramControllerUT.needsWaitingForSatelliteConnected(
                        DATAGRAM_TYPE_SMS);

        assertTrue(result);
    }

    @Test
    public void
            testNeedsWaitingForSatelliteConnected_checkMessageInNotConnected_allowCheckMessageFalse_returnsTrue()
                    throws Exception {
        when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, false);
        mDatagramControllerUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);

        boolean result =
                mDatagramControllerUT.needsWaitingForSatelliteConnected(
                        DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS);

        assertTrue(result);
    }

    @Test
    public void
            testNeedsWaitingForSatelliteConnected_checkMessageInNotConnected_carrierRoamingNbIotNtnFalse_returnsTrue()
                    throws Exception {
        when(mMockSatelliteController.isSatelliteAttachRequired()).thenReturn(true);
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(false);
        mContextFixture.putBooleanResource(
                R.bool.config_satellite_allow_check_message_in_not_connected, true);
        mDatagramControllerUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);

        boolean result =
                mDatagramControllerUT.needsWaitingForSatelliteConnected(
                        DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS);

        assertTrue(result);
    }

    private void testUpdateSendStatus(boolean isDemoMode, int datagramType, int sendState) {
        mDatagramControllerUT.setDemoMode(isDemoMode);
        clearAllInvocations();