Combine isSatelliteEnabled and isSatelliteBeingEnabled
The two APIs isSatelliteEnabled and isSatelliteBeingEnabled are being used across Telephony code. Most of the times, they are used together, but we have not called isSatelliteBeingEnabled in some places yet.
We should refactor isSatelliteEnabled to isSatelliteEnabledOrBeingEnabled and do a single check isSatelliteEnabledOrBeingEnabled.
Bug: 359928391
Flag: EXEMPT bugfix
Test: SatelliteControllerTest TelephonyConnectionServiceTest RadioOnStateListenerTest EmergencyStateTrackerTest
Manually test in live network for regression
Change-Id: I6a737d9eaab90b0d9743a214a295847171556d2d
diff --git a/src/java/com/android/internal/telephony/MultiSimSettingController.java b/src/java/com/android/internal/telephony/MultiSimSettingController.java
index 3c35f1a..881adde 100644
--- a/src/java/com/android/internal/telephony/MultiSimSettingController.java
+++ b/src/java/com/android/internal/telephony/MultiSimSettingController.java
@@ -513,8 +513,8 @@
SatelliteController satelliteController = SatelliteController.getInstance();
boolean isSatelliteEnabledOrBeingEnabled = false;
if (satelliteController != null) {
- isSatelliteEnabledOrBeingEnabled = satelliteController.isSatelliteEnabled()
- || satelliteController.isSatelliteBeingEnabled();
+ isSatelliteEnabledOrBeingEnabled =
+ satelliteController.isSatelliteEnabledOrBeingEnabled();
}
if (DBG) {
diff --git a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
index f983108..53a3fe8 100644
--- a/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
+++ b/src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java
@@ -1588,7 +1588,7 @@
final boolean isAirplaneModeOn = isAirplaneModeOn(mContext);
boolean needToTurnOnRadio = !isRadioOn() || isAirplaneModeOn;
final SatelliteController satelliteController = SatelliteController.getInstance();
- boolean needToTurnOffSatellite = satelliteController.isSatelliteEnabled();
+ boolean needToTurnOffSatellite = satelliteController.isSatelliteEnabledOrBeingEnabled();
if (isAirplaneModeOn && !isPowerOff()
&& !phone.getServiceStateTracker().getDesiredPowerState()) {
@@ -1614,7 +1614,7 @@
@Override
public void onComplete(RadioOnStateListener listener, boolean isRadioReady) {
if (!isRadioReady) {
- if (satelliteController.isSatelliteEnabled()) {
+ if (satelliteController.isSatelliteEnabledOrBeingEnabled()) {
// Could not turn satellite off
Rlog.e(TAG, "Failed to turn off satellite modem.");
completeEmergencyMode(emergencyType, DisconnectCause.SATELLITE_ENABLED);
@@ -1647,7 +1647,7 @@
return false;
}
return phone.getServiceStateTracker().isRadioOn()
- && !satelliteController.isSatelliteEnabled();
+ && !satelliteController.isSatelliteEnabledOrBeingEnabled();
}
@Override
@@ -1659,7 +1659,7 @@
}
// onTimeout shall be called only with the Phone for emergency
return phone.getServiceStateTracker().isRadioOn()
- && !satelliteController.isSatelliteEnabled();
+ && !satelliteController.isSatelliteEnabledOrBeingEnabled();
}
}, !isTestEmergencyNumber, phone, isTestEmergencyNumber, waitForInServiceTimeout,
/* forNormalRoutingEmergencyCall */ false);
diff --git a/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java b/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
index 26da1c2..11162b8 100644
--- a/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
+++ b/src/java/com/android/internal/telephony/emergency/RadioOnHelper.java
@@ -104,11 +104,8 @@
}
powerOnRadio(forEmergencyCall, phoneForEmergencyCall, isTestEmergencyNumber,
forNormalRoutingEmergencyCall);
- if (SatelliteController.getInstance().isSatelliteEnabled()
- || SatelliteController.getInstance().isSatelliteBeingEnabled()) {
- // TODO: phoneForEmergencyCall is actually ignored, SatelliteController#mSatelliePhone
- // is being used instead.
- powerOffSatellite(phoneForEmergencyCall);
+ if (SatelliteController.getInstance().isSatelliteEnabledOrBeingEnabled()) {
+ powerOffSatellite();
}
}
@@ -162,7 +159,7 @@
* Attempt to power off the satellite modem. We'll eventually get an
* onSatelliteModemStateChanged() callback when the satellite modem is successfully disabled.
*/
- private void powerOffSatellite(Phone phoneForEmergencyCall) {
+ private void powerOffSatellite() {
SatelliteController satelliteController = SatelliteController.getInstance();
satelliteController.requestSatelliteEnabled(
false /* enableSatellite */, false /* enableDemoMode */, false /* isEmergency */,
diff --git a/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java b/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
index 1b1922c..3a3f6c8 100644
--- a/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
+++ b/src/java/com/android/internal/telephony/emergency/RadioOnStateListener.java
@@ -230,7 +230,7 @@
// Register for RADIO_OFF to handle cases where emergency call is dialed before
// we receive UNSOL_RESPONSE_RADIO_STATE_CHANGED with RADIO_OFF.
registerForRadioOff();
- if (mSatelliteController.isSatelliteEnabled()) {
+ if (mSatelliteController.isSatelliteEnabledOrBeingEnabled()) {
// Register for satellite modem state changed to notify when satellite is disabled.
registerForSatelliteEnabledChanged();
}
@@ -401,7 +401,7 @@
Rlog.d(TAG, "Trying (again) to turn the radio on and satellite modem off.");
mPhone.setRadioPower(true, mForEmergencyCall, mSelectedPhoneForEmergencyCall,
false);
- if (mSatelliteController.isSatelliteEnabled()) {
+ if (mSatelliteController.isSatelliteEnabledOrBeingEnabled()) {
mSatelliteController.requestSatelliteEnabled(
false /* enableSatellite */, false /* enableDemoMode */,
false /* isEmergency*/,
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 8ae6cf4..daae3f2 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -2094,13 +2094,15 @@
*
* @return {@code true} if the satellite modem is enabled and {@code false} otherwise.
*/
- public boolean isSatelliteEnabled() {
+ private boolean isSatelliteEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
plogd("isSatelliteEnabled: oemEnabledSatelliteFlag is disabled");
return false;
}
- if (mIsSatelliteEnabled == null) return false;
- return mIsSatelliteEnabled;
+ synchronized (mIsSatelliteEnabledLock) {
+ if (mIsSatelliteEnabled == null) return false;
+ return mIsSatelliteEnabled;
+ }
}
/**
@@ -2108,7 +2110,7 @@
*
* @return {@code true} if the satellite modem is being enabled and {@code false} otherwise.
*/
- public boolean isSatelliteBeingEnabled() {
+ private boolean isSatelliteBeingEnabled() {
if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
plogd("isSatelliteBeingEnabled: oemEnabledSatelliteFlag is disabled");
return false;
@@ -2121,6 +2123,17 @@
}
/**
+ * Get whether the satellite modem is enabled or being enabled.
+ * This will return the cached value instead of querying the satellite modem.
+ *
+ * @return {@code true} if the satellite modem is enabled or being enabled, {@code false}
+ * otherwise.
+ */
+ public boolean isSatelliteEnabledOrBeingEnabled() {
+ return isSatelliteEnabled() || isSatelliteBeingEnabled();
+ }
+
+ /**
* Get whether satellite modem is being disabled.
*
* @return {@code true} if the satellite modem is being disabled and {@code false} otherwise.
@@ -3487,7 +3500,7 @@
return false;
}
- if (!isSatelliteEnabled()) {
+ if (!isSatelliteEnabledOrBeingEnabled()) {
plogd("iisInCarrierRoamingNbIotNtn: satellite is disabled");
return false;
}
@@ -4124,7 +4137,7 @@
mWaitingForSatelliteModemOff = false;
}
} else {
- if (isSatelliteEnabled() || isSatelliteBeingEnabled() || isSatelliteBeingDisabled()) {
+ if (isSatelliteEnabledOrBeingEnabled() || isSatelliteBeingDisabled()) {
notifyModemStateChangedToSessionController(state);
} else {
// Telephony framework and modem are out of sync. We need to disable modem
@@ -5603,7 +5616,7 @@
return;
}
- if (!isSatelliteEnabled()) {
+ if (!isSatelliteEnabledOrBeingEnabled()) {
plogd("handleCmdUpdateNtnSignalStrengthReporting: ignore request, satellite is "
+ "disabled");
return;
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 353493b..4e28d00 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -1450,8 +1450,8 @@
SatelliteController satelliteController = SatelliteController.getInstance();
boolean isSatelliteEnabledOrBeingEnabled = false;
if (satelliteController != null) {
- isSatelliteEnabledOrBeingEnabled = satelliteController.isSatelliteEnabled()
- || satelliteController.isSatelliteBeingEnabled();
+ isSatelliteEnabledOrBeingEnabled =
+ satelliteController.isSatelliteEnabledOrBeingEnabled();
}
if (!isSatelliteEnabledOrBeingEnabled) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
index 25e9715..2664ff3 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java
@@ -346,7 +346,7 @@
true /* isRadioOn */);
when(mSST.isRadioOn()).thenReturn(true);
// Satellite enabled
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(true);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(true);
setConfigForDdsSwitch(testPhone, null,
CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY, "150");
@@ -363,7 +363,7 @@
// isOkToCall() should return true once satellite modem is off
assertFalse(callback.getValue()
.isOkToCall(testPhone, ServiceState.STATE_IN_SERVICE, false));
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(false);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(false);
assertTrue(callback.getValue()
.isOkToCall(testPhone, ServiceState.STATE_IN_SERVICE, false));
// Once radio on is complete, trigger delay dial
@@ -391,7 +391,7 @@
Phone testPhone = setupTestPhoneForEmergencyCall(false /* isRoaming */,
true /* isRadioOn */);
// Satellite enabled
- when(mSatelliteController.isSatelliteEnabled()).thenReturn(true);
+ when(mSatelliteController.isSatelliteEnabledOrBeingEnabled()).thenReturn(true);
CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(testPhone,
mTestConnection1, false);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
index bb349a7..e9bff91 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/RadioOnStateListenerTest.java
@@ -104,7 +104,7 @@
*/
@Test
public void testRegisterForSatelliteCallback() {
- doReturn(true).when(mSatelliteController).isSatelliteEnabled();
+ doReturn(true).when(mSatelliteController).isSatelliteEnabledOrBeingEnabled();
mListener.waitForRadioOn(mMockPhone, mCallback, false, false, 0);
waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
@@ -229,7 +229,7 @@
@Test
public void testTimeout_RetryFailure_WithSatellite() {
- doReturn(true).when(mSatelliteController).isSatelliteEnabled();
+ doReturn(true).when(mSatelliteController).isSatelliteEnabledOrBeingEnabled();
ServiceState state = new ServiceState();
state.setState(ServiceState.STATE_POWER_OFF);
when(mMockPhone.getState()).thenReturn(PhoneConstants.State.IDLE);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
index db46a00..60d229c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
@@ -1548,7 +1548,7 @@
public void testIsSatelliteEnabled() {
logd("testIsSatelliteEnabled: starting");
setUpResponseForRequestIsSatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);
- assertFalse(mSatelliteControllerUT.isSatelliteEnabled());
+ assertFalse(mSatelliteControllerUT.isSatelliteEnabledOrBeingEnabled());
mIsSatelliteEnabledSemaphore.drainPermits();
mSatelliteControllerUT.requestIsSatelliteEnabled(mIsSatelliteEnabledReceiver);
processAllMessages();
@@ -1564,7 +1564,8 @@
mSatelliteControllerUT.requestIsSatelliteEnabled(mIsSatelliteEnabledReceiver);
processAllMessages();
assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedIsSatelliteEnabledResultCode);
- assertEquals(mSatelliteControllerUT.isSatelliteEnabled(), mQueriedIsSatelliteEnabled);
+ assertEquals(mSatelliteControllerUT.isSatelliteEnabledOrBeingEnabled(),
+ mQueriedIsSatelliteEnabled);
}
@Test