Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +6 −7 Original line number Diff line number Diff line Loading @@ -3580,14 +3580,13 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection conn = findConnection(imsCall); // Since onCallInitiating and onCallProgressing reset mPendingMO, // we can't depend on mPendingMO. if ((reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL || reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_NOT_REGISTERED || reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED) && conn != null) { if (conn != null) { logi("onCallStartFailed eccCategory=" + eccCategory); if (reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL || reasonInfo.getExtraCode() == ImsReasonInfo.EXTRA_CODE_CALL_RETRY_EMERGENCY) { int reason = reasonInfo.getCode(); int extraCode = reasonInfo.getExtraCode(); if ((reason == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED && extraCode == ImsReasonInfo.EXTRA_CODE_CALL_RETRY_EMERGENCY) || (reason == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL)) { conn.setNonDetectableEmergencyCallInfo(eccCategory); } conn.setImsReasonInfo(reasonInfo); Loading tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -2496,6 +2496,34 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { emergencyNumber.getEmergencyServiceCategoryBitmask()); } @Test @SmallTest public void testDomainSelectionEmergencyPermFailure() { doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported(); startOutgoingCall(); ImsPhoneConnection c = mCTUT.mForegroundCall.getFirstConnection(); mImsCallListener.onCallStartFailed(mSecondImsCall, new ImsReasonInfo(ImsReasonInfo.CODE_EMERGENCY_PERM_FAILURE, -1)); processAllMessages(); assertNotNull(c.getImsReasonInfo()); assertEquals(ImsReasonInfo.CODE_EMERGENCY_PERM_FAILURE, c.getImsReasonInfo().getCode()); } @Test @SmallTest public void testDomainSelectionEmergencyTempFailure() { doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported(); startOutgoingCall(); ImsPhoneConnection c = mCTUT.mForegroundCall.getFirstConnection(); mImsCallListener.onCallStartFailed(mSecondImsCall, new ImsReasonInfo(ImsReasonInfo.CODE_EMERGENCY_TEMP_FAILURE, -1)); processAllMessages(); assertNotNull(c.getImsReasonInfo()); assertEquals(ImsReasonInfo.CODE_EMERGENCY_TEMP_FAILURE, c.getImsReasonInfo().getCode()); } @Test public void testUpdateImsCallStatusIncoming() throws Exception { // Incoming call Loading Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +6 −7 Original line number Diff line number Diff line Loading @@ -3580,14 +3580,13 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection conn = findConnection(imsCall); // Since onCallInitiating and onCallProgressing reset mPendingMO, // we can't depend on mPendingMO. if ((reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL || reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_NOT_REGISTERED || reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED) && conn != null) { if (conn != null) { logi("onCallStartFailed eccCategory=" + eccCategory); if (reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL || reasonInfo.getExtraCode() == ImsReasonInfo.EXTRA_CODE_CALL_RETRY_EMERGENCY) { int reason = reasonInfo.getCode(); int extraCode = reasonInfo.getExtraCode(); if ((reason == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED && extraCode == ImsReasonInfo.EXTRA_CODE_CALL_RETRY_EMERGENCY) || (reason == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL)) { conn.setNonDetectableEmergencyCallInfo(eccCategory); } conn.setImsReasonInfo(reasonInfo); Loading
tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -2496,6 +2496,34 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { emergencyNumber.getEmergencyServiceCategoryBitmask()); } @Test @SmallTest public void testDomainSelectionEmergencyPermFailure() { doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported(); startOutgoingCall(); ImsPhoneConnection c = mCTUT.mForegroundCall.getFirstConnection(); mImsCallListener.onCallStartFailed(mSecondImsCall, new ImsReasonInfo(ImsReasonInfo.CODE_EMERGENCY_PERM_FAILURE, -1)); processAllMessages(); assertNotNull(c.getImsReasonInfo()); assertEquals(ImsReasonInfo.CODE_EMERGENCY_PERM_FAILURE, c.getImsReasonInfo().getCode()); } @Test @SmallTest public void testDomainSelectionEmergencyTempFailure() { doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported(); startOutgoingCall(); ImsPhoneConnection c = mCTUT.mForegroundCall.getFirstConnection(); mImsCallListener.onCallStartFailed(mSecondImsCall, new ImsReasonInfo(ImsReasonInfo.CODE_EMERGENCY_TEMP_FAILURE, -1)); processAllMessages(); assertNotNull(c.getImsReasonInfo()); assertEquals(ImsReasonInfo.CODE_EMERGENCY_TEMP_FAILURE, c.getImsReasonInfo().getCode()); } @Test public void testUpdateImsCallStatusIncoming() throws Exception { // Incoming call Loading