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
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index 0d4a2da..dc6be3a 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -1382,8 +1382,6 @@
}
private boolean allowMtSmsPolling() {
- if (!mFeatureFlags.carrierRoamingNbIotNtn()) return false;
-
SatelliteController satelliteController = SatelliteController.getInstance();
int subId = satelliteController.getSelectedSatelliteSubId();
boolean isP2PSmsDisallowed =
@@ -1394,20 +1392,33 @@
}
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 (!isModemStateConnectedOrTransferring && !allowCheckMessageInNotConnected()) {
- plogd("EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT:"
- + " allow_check_message_in_not_connected is disabled");
+ if (isMtSmsPollingThrottled) {
+ plogd("allowMtSmsPolling: polling is throttled");
return false;
}
+ if (!isAligned) {
+ plogd("allowMtSmsPolling: not aligned");
+ return false;
+ }
+
+ if (!isModemStateConnectedOrTransferring && !allowCheckMessageInNotConnected()) {
+ plogd("allowMtSmsPolling: not in service and "
+ + "allow_check_message_in_not_connected is disabled");
+ return false;
+ }
+
+ plogd("allowMtSmsPolling: return true");
return true;
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
index f383068..745a5b2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
@@ -1145,13 +1145,11 @@
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)));
+ mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
+ new AsyncResult(null, null, null)).sendToTarget();
processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
@@ -1162,14 +1160,13 @@
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)));
+ mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
+ new AsyncResult(null, null, null)).sendToTarget();
+ processAllMessages();
verifyNoMoreInteractions(mMockSmsDispatchersController);
}
@@ -1179,16 +1176,14 @@
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)));
+ mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
+ new AsyncResult(null, null, null)).sendToTarget();
+ processAllMessages();
- verifyNoMoreInteractions(mMockSmsDispatchersController);
+ verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1196,7 +1191,6 @@
@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 @@
@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 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 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 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 @@
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 @@
@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 @@
@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 @@
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) {