[coastguard skipped] Merge sparse cherrypicks from sparse-13272751-L40800030010704228 into 25Q1-release.
COASTGUARD_SKIP: Ib02fd0b3dfd354e53ff7e6d6d352d3e91933b3ea
COASTGUARD_SKIP: I609defbb1df83dc9510ee59dd857fd5e69ce43fb
Change-Id: I9c2a8610114ae98eeed702053ac1cdf7591ecf17
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index a40275f..d1d8726 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -82,8 +82,6 @@
private static final int CMD_SEND_SMS = 8;
private static final int EVENT_SEND_SMS_DONE = 9;
private static final int EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT = 10;
- private static final int CMD_SEND_MT_SMS_POLLING_MESSAGE = 11;
-
private static final Long TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE = TimeUnit.SECONDS.toMillis(10);
@NonNull private static DatagramDispatcher sInstance;
@NonNull private final Context mContext;
@@ -428,16 +426,10 @@
case EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT: {
synchronized (mLock) {
mIsMtSmsPollingThrottled = false;
+ if (allowMtSmsPolling()) {
+ sendMtSmsPollingMessage();
+ }
}
- if (allowMtSmsPolling()) {
- sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE));
- }
- break;
- }
-
- case CMD_SEND_MT_SMS_POLLING_MESSAGE: {
- plogd("CMD_SEND_MT_SMS_POLLING_MESSAGE");
- handleCmdSendMtSmsPollingMessage();
break;
}
@@ -529,9 +521,9 @@
mIsAligned = isAligned;
plogd("setDeviceAlignedWithSatellite: " + mIsAligned);
if (isAligned && mIsDemoMode) handleEventSatelliteAligned();
- }
- if (allowMtSmsPolling()) {
- sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE));
+ if (allowMtSmsPolling()) {
+ sendMtSmsPollingMessage();
+ }
}
}
@@ -853,9 +845,10 @@
mShouldPollMtSms = shouldPollMtSms();
}
}
- }
- if (allowMtSmsPolling()) {
- sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE));
+
+ if (allowMtSmsPolling()) {
+ sendMtSmsPollingMessage();
+ }
}
}
@@ -1332,26 +1325,23 @@
&& satelliteController.shouldSendSmsToDatagramDispatcher(satellitePhone);
}
- private void handleCmdSendMtSmsPollingMessage() {
- synchronized (mLock) {
- if (!mShouldPollMtSms) {
- plogd("sendMtSmsPollingMessage: mShouldPollMtSms=" + mShouldPollMtSms);
+ @GuardedBy("mLock")
+ private void sendMtSmsPollingMessage() {
+ if (!mShouldPollMtSms) {
+ return;
+ }
+
+ plogd("sendMtSmsPollingMessage");
+ if (!allowCheckMessageInNotConnected()) {
+ mShouldPollMtSms = false;
+ }
+
+ for (Entry<Long, PendingRequest> entry : mPendingSmsMap.entrySet()) {
+ PendingRequest pendingRequest = entry.getValue();
+ if (pendingRequest.isMtSmsPolling) {
+ plogd("sendMtSmsPollingMessage: mPendingSmsMap already has the polling message.");
return;
}
-
- plogd("sendMtSmsPollingMessage");
- if (!allowCheckMessageInNotConnected()) {
- mShouldPollMtSms = false;
- }
-
- for (Entry<Long, PendingRequest> entry : mPendingSmsMap.entrySet()) {
- PendingRequest pendingRequest = entry.getValue();
- if (pendingRequest.isMtSmsPolling) {
- plogd("sendMtSmsPollingMessage: mPendingSmsMap already "
- + "has the polling message.");
- return;
- }
- }
}
Phone satellitePhone = SatelliteController.getInstance().getSatellitePhone();
@@ -1384,20 +1374,17 @@
removeMessages(EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT);
}
+ @GuardedBy("mLock")
private boolean allowMtSmsPolling() {
if (!mFeatureFlags.carrierRoamingNbIotNtn()) return false;
if (mIsMtSmsPollingThrottled) return false;
- boolean isModemStateConnectedOrTransferring;
- synchronized (mLock) {
- if (!mIsAligned) return false;
+ if (!mIsAligned) return false;
- isModemStateConnectedOrTransferring =
- mModemState == SATELLITE_MODEM_STATE_CONNECTED
- || mModemState == SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING;
- }
-
+ boolean 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");
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 0f922c2..d455863 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -614,6 +614,7 @@
private List<SatelliteSubscriberProvisionStatus> mLastEvaluatedSubscriberProvisionStatus =
new ArrayList<>();
// The ID of the satellite subscription that has highest priority and is provisioned.
+ @GuardedBy("mSatelliteTokenProvisionedLock")
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
// The last ICC ID that framework configured to modem.
@@ -7331,7 +7332,6 @@
*/
public void requestSatelliteSubscriberProvisionStatus(@NonNull ResultReceiver result) {
if (!mFeatureFlags.carrierRoamingNbIotNtn()) {
- logd("requestSatelliteSubscriberProvisionStatus: carrierRoamingNbIotNtn is disabled");
result.send(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, null);
return;
}
@@ -7397,8 +7397,10 @@
}
public int getSelectedSatelliteSubId() {
- plogd("getSelectedSatelliteSubId: subId=" + mSelectedSatelliteSubId);
- return mSelectedSatelliteSubId;
+ synchronized (mSatelliteTokenProvisionedLock) {
+ plogd("getSelectedSatelliteSubId: subId=" + mSelectedSatelliteSubId);
+ return mSelectedSatelliteSubId;
+ }
}
/**
@@ -7760,13 +7762,15 @@
/** Return the carrier ID of the binding satellite subscription. */
public int getSatelliteCarrierId() {
- SubscriptionInfo subInfo = mSubscriptionManagerService.getSubscriptionInfo(
- mSelectedSatelliteSubId);
- if (subInfo == null) {
- logd("getSatelliteCarrierId: returns UNKNOWN_CARRIER_ID");
- return UNKNOWN_CARRIER_ID;
+ synchronized (mSatelliteTokenProvisionedLock) {
+ SubscriptionInfo subInfo = mSubscriptionManagerService.getSubscriptionInfo(
+ mSelectedSatelliteSubId);
+ if (subInfo == null) {
+ logd("getSatelliteCarrierId: returns UNKNOWN_CARRIER_ID");
+ return UNKNOWN_CARRIER_ID;
+ }
+ return subInfo.getCarrierId();
}
- return subInfo.getCarrierId();
}
/**
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 b6828df..b4de672 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
@@ -1157,7 +1157,6 @@
mDatagramDispatcherUT.handleMessage(
mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/,
new AsyncResult(null, null, null)));
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1206,7 +1205,6 @@
R.bool.config_satellite_allow_check_message_in_not_connected, true);
mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1233,7 +1231,6 @@
mDatagramDispatcherUT.onSatelliteModemStateChanged(
SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1246,7 +1243,6 @@
mDatagramDispatcherUT.onSatelliteModemStateChanged(
SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1259,7 +1255,6 @@
mDatagramDispatcherUT.onSatelliteModemStateChanged(
SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}
@@ -1290,7 +1285,6 @@
mDatagramDispatcherUT.onSatelliteModemStateChanged(
SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
- processAllMessages();
verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage();
}