Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +36 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,7 @@ public class SatelliteController extends Handler { private static final String HOW_IT_WORKS_BUTTON = "how_it_works_button"; private static final String ACTION_NOTIFICATION_CLICK = "action_notification_click"; private static final String ACTION_NOTIFICATION_DISMISS = "action_notification_dismiss"; private AtomicBoolean mOverrideNtnEligibility; private BroadcastReceiver mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -5360,6 +5361,11 @@ public class SatelliteController extends Handler { return; } if (mOverrideNtnEligibility != null) { mSatellitePhone.notifyCarrierRoamingNtnEligibleStateChanged(currentNtnEligibility); return; } synchronized (mSatellitePhoneLock) { if (mSatellitePhone == null) { ploge("notifyNtnEligibility: mSatellitePhone is null"); Loading Loading @@ -6529,6 +6535,11 @@ public class SatelliteController extends Handler { return false; } if (mOverrideNtnEligibility != null) { // TODO need to send the value from `mOverrideNtnEligibility` or simply true ? return true; } if (SatelliteServiceUtils.isCellularAvailable()) { plogd("isCarrierRoamingNtnEligible[phoneId=" + phone.getPhoneId() + "]: cellular is available"); Loading Loading @@ -6758,4 +6769,29 @@ public class SatelliteController extends Handler { return !mWaitingForSatelliteModemOff; } } /** * Method to override the Carrier roaming Non-terrestrial network eligibility check * * @param state flag to enable or disable the Ntn eligibility check. * @param resetRequired reset overriding the check with adb command. */ public boolean overrideCarrierRoamingNtnEligibilityChanged(boolean state, boolean resetRequired) { Log.d(TAG, "overrideCarrierRoamingNtnEligibilityChanged state = " + state + " resetRequired = " + resetRequired); if (resetRequired) { mOverrideNtnEligibility = null; } else { if (mOverrideNtnEligibility == null) { mOverrideNtnEligibility = new AtomicBoolean(state); } else { mOverrideNtnEligibility.set(state); } if (this.mSatellitePhone != null) { updateLastNotifiedNtnEligibilityAndNotify(state); } } return true; } } tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -4038,6 +4038,33 @@ public class SatelliteControllerTest extends TelephonyTest { processAllMessages(); assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); processAllMessages(); assertFalse(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false); processAllMessages(); assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); } @Test public void testOverrideCarrierRoamingNtNEligibilityChange() { when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false); verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true)); clearInvocations(mPhone); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, false); verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(false)); clearInvocations(mPhone); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, true); verify(mPhone, times(0)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true)); clearInvocations(mPhone); } @Test Loading Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +36 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,7 @@ public class SatelliteController extends Handler { private static final String HOW_IT_WORKS_BUTTON = "how_it_works_button"; private static final String ACTION_NOTIFICATION_CLICK = "action_notification_click"; private static final String ACTION_NOTIFICATION_DISMISS = "action_notification_dismiss"; private AtomicBoolean mOverrideNtnEligibility; private BroadcastReceiver mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -5360,6 +5361,11 @@ public class SatelliteController extends Handler { return; } if (mOverrideNtnEligibility != null) { mSatellitePhone.notifyCarrierRoamingNtnEligibleStateChanged(currentNtnEligibility); return; } synchronized (mSatellitePhoneLock) { if (mSatellitePhone == null) { ploge("notifyNtnEligibility: mSatellitePhone is null"); Loading Loading @@ -6529,6 +6535,11 @@ public class SatelliteController extends Handler { return false; } if (mOverrideNtnEligibility != null) { // TODO need to send the value from `mOverrideNtnEligibility` or simply true ? return true; } if (SatelliteServiceUtils.isCellularAvailable()) { plogd("isCarrierRoamingNtnEligible[phoneId=" + phone.getPhoneId() + "]: cellular is available"); Loading Loading @@ -6758,4 +6769,29 @@ public class SatelliteController extends Handler { return !mWaitingForSatelliteModemOff; } } /** * Method to override the Carrier roaming Non-terrestrial network eligibility check * * @param state flag to enable or disable the Ntn eligibility check. * @param resetRequired reset overriding the check with adb command. */ public boolean overrideCarrierRoamingNtnEligibilityChanged(boolean state, boolean resetRequired) { Log.d(TAG, "overrideCarrierRoamingNtnEligibilityChanged state = " + state + " resetRequired = " + resetRequired); if (resetRequired) { mOverrideNtnEligibility = null; } else { if (mOverrideNtnEligibility == null) { mOverrideNtnEligibility = new AtomicBoolean(state); } else { mOverrideNtnEligibility.set(state); } if (this.mSatellitePhone != null) { updateLastNotifiedNtnEligibilityAndNotify(state); } } return true; } }
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -4038,6 +4038,33 @@ public class SatelliteControllerTest extends TelephonyTest { processAllMessages(); assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); processAllMessages(); assertFalse(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false); processAllMessages(); assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone)); } @Test public void testOverrideCarrierRoamingNtNEligibilityChange() { when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false); verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true)); clearInvocations(mPhone); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, false); verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(false)); clearInvocations(mPhone); mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, true); verify(mPhone, times(0)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true)); clearInvocations(mPhone); } @Test Loading