Loading src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java +8 −3 Original line number Diff line number Diff line Loading @@ -1251,10 +1251,15 @@ public class EmergencyStateTracker { exitEmergencyMode(gsmCdmaPhone, EMERGENCY_TYPE_CALL); } // If an emergency call is in progress, even if this method is called for any reason, // we should not initialize the Phone object so that the application can normally end // the emergency call. if (mOngoingConnection == null) { mEmergencyCallDomain = NetworkRegistrationInfo.DOMAIN_UNKNOWN; mIsTestEmergencyNumber = false; mPhone = null; } } private void releaseWakeLock() { // Release wakeLock. Loading tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -1113,6 +1113,32 @@ public class EmergencyStateTrackerTest extends TelephonyTest { eq(EMERGENCY_CALLBACK_MODE_CALL), anyInt()); } @Test @SmallTest public void testEndCallAfterExitEmergencyCallbackModeIsCalledInNonEcbm() throws Exception { // Setup EmergencyStateTracker EmergencyStateTracker emergencyStateTracker = setupEmergencyStateTracker( /* isSuplDdsSwitchRequiredForEmergencyCall= */ true); // Create test Phone GsmCdmaPhone testPhone = (GsmCdmaPhone) setupTestPhoneForEmergencyCall( /* isRoaming= */ true, /* isRadioOn= */ true); setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT); setUpAsyncResultForExitEmergencyMode(testPhone); // Start emergency call then enter ECM CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone, mTestConnection1, false); processAllMessages(); // Exit emergency mode explicitly emergencyStateTracker.exitEmergencyCallbackMode(); emergencyStateTracker.endCall(mTestConnection1); processAllMessages(); // Verify exitEmergencyMode() is called. verify(testPhone).exitEmergencyMode(any(Message.class)); } @Test @SmallTest public void testRecoverNormalInCellularWhenVoWiFiConnected() { Loading Loading
src/java/com/android/internal/telephony/emergency/EmergencyStateTracker.java +8 −3 Original line number Diff line number Diff line Loading @@ -1251,10 +1251,15 @@ public class EmergencyStateTracker { exitEmergencyMode(gsmCdmaPhone, EMERGENCY_TYPE_CALL); } // If an emergency call is in progress, even if this method is called for any reason, // we should not initialize the Phone object so that the application can normally end // the emergency call. if (mOngoingConnection == null) { mEmergencyCallDomain = NetworkRegistrationInfo.DOMAIN_UNKNOWN; mIsTestEmergencyNumber = false; mPhone = null; } } private void releaseWakeLock() { // Release wakeLock. Loading
tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyStateTrackerTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -1113,6 +1113,32 @@ public class EmergencyStateTrackerTest extends TelephonyTest { eq(EMERGENCY_CALLBACK_MODE_CALL), anyInt()); } @Test @SmallTest public void testEndCallAfterExitEmergencyCallbackModeIsCalledInNonEcbm() throws Exception { // Setup EmergencyStateTracker EmergencyStateTracker emergencyStateTracker = setupEmergencyStateTracker( /* isSuplDdsSwitchRequiredForEmergencyCall= */ true); // Create test Phone GsmCdmaPhone testPhone = (GsmCdmaPhone) setupTestPhoneForEmergencyCall( /* isRoaming= */ true, /* isRadioOn= */ true); setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT); setUpAsyncResultForExitEmergencyMode(testPhone); // Start emergency call then enter ECM CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone, mTestConnection1, false); processAllMessages(); // Exit emergency mode explicitly emergencyStateTracker.exitEmergencyCallbackMode(); emergencyStateTracker.endCall(mTestConnection1); processAllMessages(); // Verify exitEmergencyMode() is called. verify(testPhone).exitEmergencyMode(any(Message.class)); } @Test @SmallTest public void testRecoverNormalInCellularWhenVoWiFiConnected() { Loading