Loading src/java/com/android/internal/telephony/satellite/DatagramController.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java +73 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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(); Loading Loading
src/java/com/android/internal/telephony/satellite/DatagramController.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java +73 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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(); Loading