Loading src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +10 −2 Original line number Diff line number Diff line Loading @@ -282,7 +282,7 @@ public class SatelliteSOSMessageRecommender extends Handler { updateSatelliteViaCarrierAvailability(); boolean isDialerNotified = false; if (!isImsRegistered() && !isCellularAvailable() if (!isCellularAvailable() && isSatelliteAllowed() && (isSatelliteViaOemAvailable() || isSatelliteViaCarrierAvailable()) && shouldTrackCall(mEmergencyConnection.getState())) { Loading Loading @@ -441,10 +441,12 @@ public class SatelliteSOSMessageRecommender extends Handler { int state = serviceState.getState(); if ((state == STATE_IN_SERVICE || state == STATE_EMERGENCY_ONLY) && !serviceState.isUsingNonTerrestrialNetwork()) { logv("isCellularAvailable true"); return true; } } } logv("isCellularAvailable false"); return false; } Loading Loading @@ -479,9 +481,10 @@ public class SatelliteSOSMessageRecommender extends Handler { } private synchronized void handleStateChangedEventForHysteresisTimer() { if (!isImsRegistered() && !isCellularAvailable()) { if (!isCellularAvailable()) { startTimer(); } else { logv("handleStateChangedEventForHysteresisTimer stopTimer"); stopTimer(); } } Loading @@ -494,6 +497,7 @@ public class SatelliteSOSMessageRecommender extends Handler { sendMessageDelayed(obtainMessage(EVENT_TIME_OUT), mTimeoutMillis); mCountOfTimerStarted++; mIsTimerTimedOut = false; logd("startTimer mCountOfTimerStarted=" + mCountOfTimerStarted); } } Loading Loading @@ -744,6 +748,10 @@ public class SatelliteSOSMessageRecommender extends Handler { || SystemProperties.getBoolean(BOOT_ALLOW_MOCK_MODEM_PROPERTY, false)); } private static void logv(@NonNull String log) { Rlog.v(TAG, log); } private static void logd(@NonNull String log) { Rlog.d(TAG, log); } Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java +22 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.telephony.satellite; import static android.telephony.ServiceState.STATE_IN_SERVICE; import static android.telephony.ServiceState.STATE_OUT_OF_SERVICE; import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE; import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT; import static android.telephony.satellite.SatelliteManager.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS; Loading Loading @@ -141,8 +143,8 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { when(mPhone2.getPhoneId()).thenReturn(PHONE_ID2); mTestSOSMessageRecommender = new TestSOSMessageRecommender(mContext, Looper.myLooper(), mTestSatelliteController, mTestImsManager); when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); when(mServiceState2.getState()).thenReturn(STATE_OUT_OF_SERVICE); when(mPhone.isImsRegistered()).thenReturn(false); when(mPhone2.isImsRegistered()).thenReturn(false); } Loading Loading @@ -291,7 +293,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { } @Test public void testImsRegistrationStateChangedBeforeTimeout() { public void testNetworkStateChangedBeforeTimeout() { mTestSOSMessageRecommender.isSatelliteAllowedCallback = null; mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection); processAllMessages(); Loading @@ -302,6 +304,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback); when(mPhone.isImsRegistered()).thenReturn(true); when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(0, true); processAllMessages(); Loading @@ -310,19 +313,31 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone.isImsRegistered()).thenReturn(false); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(0, true); processAllMessages(); assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE)); assertTrue(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone.isImsRegistered()).thenReturn(false); when(mPhone2.isImsRegistered()).thenReturn(true); when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(1, true); processAllMessages(); assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE)); assertFalse(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone2.isImsRegistered()).thenReturn(false); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(1, false); processAllMessages(); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertEquals(3, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback); // Move Location service to emergency mode Loading Loading @@ -436,7 +451,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Test public void testCellularServiceStateChangedBeforeTimeout_InServiceToOutOfService() { testCellularServiceStateChangedBeforeTimeout( ServiceState.STATE_IN_SERVICE, ServiceState.STATE_OUT_OF_SERVICE); ServiceState.STATE_IN_SERVICE, STATE_OUT_OF_SERVICE); } @Test Loading @@ -448,7 +463,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Test public void testCellularServiceStateChangedBeforeTimeout_EmergencyOnlyToOutOfService() { testCellularServiceStateChangedBeforeTimeout( ServiceState.STATE_EMERGENCY_ONLY, ServiceState.STATE_OUT_OF_SERVICE); ServiceState.STATE_EMERGENCY_ONLY, STATE_OUT_OF_SERVICE); } @Test Loading Loading
src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +10 −2 Original line number Diff line number Diff line Loading @@ -282,7 +282,7 @@ public class SatelliteSOSMessageRecommender extends Handler { updateSatelliteViaCarrierAvailability(); boolean isDialerNotified = false; if (!isImsRegistered() && !isCellularAvailable() if (!isCellularAvailable() && isSatelliteAllowed() && (isSatelliteViaOemAvailable() || isSatelliteViaCarrierAvailable()) && shouldTrackCall(mEmergencyConnection.getState())) { Loading Loading @@ -441,10 +441,12 @@ public class SatelliteSOSMessageRecommender extends Handler { int state = serviceState.getState(); if ((state == STATE_IN_SERVICE || state == STATE_EMERGENCY_ONLY) && !serviceState.isUsingNonTerrestrialNetwork()) { logv("isCellularAvailable true"); return true; } } } logv("isCellularAvailable false"); return false; } Loading Loading @@ -479,9 +481,10 @@ public class SatelliteSOSMessageRecommender extends Handler { } private synchronized void handleStateChangedEventForHysteresisTimer() { if (!isImsRegistered() && !isCellularAvailable()) { if (!isCellularAvailable()) { startTimer(); } else { logv("handleStateChangedEventForHysteresisTimer stopTimer"); stopTimer(); } } Loading @@ -494,6 +497,7 @@ public class SatelliteSOSMessageRecommender extends Handler { sendMessageDelayed(obtainMessage(EVENT_TIME_OUT), mTimeoutMillis); mCountOfTimerStarted++; mIsTimerTimedOut = false; logd("startTimer mCountOfTimerStarted=" + mCountOfTimerStarted); } } Loading Loading @@ -744,6 +748,10 @@ public class SatelliteSOSMessageRecommender extends Handler { || SystemProperties.getBoolean(BOOT_ALLOW_MOCK_MODEM_PROPERTY, false)); } private static void logv(@NonNull String log) { Rlog.v(TAG, log); } private static void logd(@NonNull String log) { Rlog.d(TAG, log); } Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java +22 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.telephony.satellite; import static android.telephony.ServiceState.STATE_IN_SERVICE; import static android.telephony.ServiceState.STATE_OUT_OF_SERVICE; import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE; import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT; import static android.telephony.satellite.SatelliteManager.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS; Loading Loading @@ -141,8 +143,8 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { when(mPhone2.getPhoneId()).thenReturn(PHONE_ID2); mTestSOSMessageRecommender = new TestSOSMessageRecommender(mContext, Looper.myLooper(), mTestSatelliteController, mTestImsManager); when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); when(mServiceState2.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); when(mServiceState2.getState()).thenReturn(STATE_OUT_OF_SERVICE); when(mPhone.isImsRegistered()).thenReturn(false); when(mPhone2.isImsRegistered()).thenReturn(false); } Loading Loading @@ -291,7 +293,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { } @Test public void testImsRegistrationStateChangedBeforeTimeout() { public void testNetworkStateChangedBeforeTimeout() { mTestSOSMessageRecommender.isSatelliteAllowedCallback = null; mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection); processAllMessages(); Loading @@ -302,6 +304,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback); when(mPhone.isImsRegistered()).thenReturn(true); when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(0, true); processAllMessages(); Loading @@ -310,19 +313,31 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone.isImsRegistered()).thenReturn(false); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(0, true); processAllMessages(); assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE)); assertTrue(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone.isImsRegistered()).thenReturn(false); when(mPhone2.isImsRegistered()).thenReturn(true); when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(1, true); processAllMessages(); assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE)); assertFalse(mTestSOSMessageRecommender.isTimerStarted()); assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0); when(mPhone2.isImsRegistered()).thenReturn(false); when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE); mTestImsManager.sendImsRegistrationStateChangedEvent(1, false); processAllMessages(); assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertEquals(3, mTestSOSMessageRecommender.getCountOfTimerStarted()); assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback); // Move Location service to emergency mode Loading Loading @@ -436,7 +451,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Test public void testCellularServiceStateChangedBeforeTimeout_InServiceToOutOfService() { testCellularServiceStateChangedBeforeTimeout( ServiceState.STATE_IN_SERVICE, ServiceState.STATE_OUT_OF_SERVICE); ServiceState.STATE_IN_SERVICE, STATE_OUT_OF_SERVICE); } @Test Loading @@ -448,7 +463,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest { @Test public void testCellularServiceStateChangedBeforeTimeout_EmergencyOnlyToOutOfService() { testCellularServiceStateChangedBeforeTimeout( ServiceState.STATE_EMERGENCY_ONLY, ServiceState.STATE_OUT_OF_SERVICE); ServiceState.STATE_EMERGENCY_ONLY, STATE_OUT_OF_SERVICE); } @Test Loading