Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +11 −0 Original line number Diff line number Diff line Loading @@ -2005,6 +2005,9 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { */ @VisibleForTesting public void addReasonCodeRemapping(Integer fromCode, String message, Integer toCode) { if (message != null) { message = message.toLowerCase(); } mImsReasonCodeMap.put(new Pair<>(fromCode, message), toCode); } Loading @@ -2023,6 +2026,8 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { String reason = reasonInfo.getExtraMessage(); if (reason == null) { reason = ""; } else { reason = reason.toLowerCase(); } log("maybeRemapReasonCode : fromCode = " + reasonInfo.getCode() + " ; message = " + reason); Loading Loading @@ -2095,6 +2100,12 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { case ImsReasonInfo.CODE_SIP_GLOBAL_ERROR: return DisconnectCause.SERVER_ERROR; case ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE: return DisconnectCause.EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE; case ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION: return DisconnectCause.WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION; case ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE: case ImsReasonInfo.CODE_SIP_SERVER_ERROR: return DisconnectCause.SERVER_UNREACHABLE; Loading tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,12 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { ImsReasonInfo.CODE_ANSWERED_ELSEWHERE); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_USER_TERMINATED_BY_REMOTE, "", ImsReasonInfo.CODE_SIP_FORBIDDEN); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, "emergency calls over wifi not allowed in this location", ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_SIP_FORBIDDEN, "service not allowed in this location", ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION); mCTUT.setDataEnabled(true); mCTHander = new Handler(mCTUT.getLooper()); setReady(true); Loading Loading @@ -645,8 +651,12 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { new ImsReasonInfo(200, 1, "Wifi signal lost."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(501, 1, "Call answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(501, 1, "CALL answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(510, 1, "Call answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(510, 1, "CALL ANswered elsewhere."))); assertEquals(90210, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(90210, 1, "Call answered elsewhere."))); } Loading Loading @@ -989,6 +999,38 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { assertTrue(result[0]); } @Test @SmallTest public void testRemapEmergencyCallsOverWfc() { assertEquals(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0))); assertEquals(ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0, "emergency calls over wifi not allowed in this location"))); assertEquals(ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0, "EMERGENCY calls over wifi not allowed in this location"))); } @Test @SmallTest public void testRemapWfcNotAvailable() { assertEquals(ImsReasonInfo.CODE_SIP_FORBIDDEN, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0))); assertEquals(ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0, "Service not allowed in this location"))); assertEquals(ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0, "SERVICE not allowed in this location"))); } private ImsPhoneConnection placeCallAndMakeActive() { try { doAnswer(new Answer<ImsCall>() { Loading Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +11 −0 Original line number Diff line number Diff line Loading @@ -2005,6 +2005,9 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { */ @VisibleForTesting public void addReasonCodeRemapping(Integer fromCode, String message, Integer toCode) { if (message != null) { message = message.toLowerCase(); } mImsReasonCodeMap.put(new Pair<>(fromCode, message), toCode); } Loading @@ -2023,6 +2026,8 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { String reason = reasonInfo.getExtraMessage(); if (reason == null) { reason = ""; } else { reason = reason.toLowerCase(); } log("maybeRemapReasonCode : fromCode = " + reasonInfo.getCode() + " ; message = " + reason); Loading Loading @@ -2095,6 +2100,12 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { case ImsReasonInfo.CODE_SIP_GLOBAL_ERROR: return DisconnectCause.SERVER_ERROR; case ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE: return DisconnectCause.EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE; case ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION: return DisconnectCause.WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION; case ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE: case ImsReasonInfo.CODE_SIP_SERVER_ERROR: return DisconnectCause.SERVER_UNREACHABLE; Loading
tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,12 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { ImsReasonInfo.CODE_ANSWERED_ELSEWHERE); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_USER_TERMINATED_BY_REMOTE, "", ImsReasonInfo.CODE_SIP_FORBIDDEN); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, "emergency calls over wifi not allowed in this location", ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE); mCTUT.addReasonCodeRemapping(ImsReasonInfo.CODE_SIP_FORBIDDEN, "service not allowed in this location", ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION); mCTUT.setDataEnabled(true); mCTHander = new Handler(mCTUT.getLooper()); setReady(true); Loading Loading @@ -645,8 +651,12 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { new ImsReasonInfo(200, 1, "Wifi signal lost."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(501, 1, "Call answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(501, 1, "CALL answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(510, 1, "Call answered elsewhere."))); assertEquals(ImsReasonInfo.CODE_ANSWERED_ELSEWHERE, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(510, 1, "CALL ANswered elsewhere."))); assertEquals(90210, mCTUT.maybeRemapReasonCode(new ImsReasonInfo(90210, 1, "Call answered elsewhere."))); } Loading Loading @@ -989,6 +999,38 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { assertTrue(result[0]); } @Test @SmallTest public void testRemapEmergencyCallsOverWfc() { assertEquals(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0))); assertEquals(ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0, "emergency calls over wifi not allowed in this location"))); assertEquals(ImsReasonInfo.CODE_EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_SERVICE_UNAVAILABLE, 0, "EMERGENCY calls over wifi not allowed in this location"))); } @Test @SmallTest public void testRemapWfcNotAvailable() { assertEquals(ImsReasonInfo.CODE_SIP_FORBIDDEN, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0))); assertEquals(ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0, "Service not allowed in this location"))); assertEquals(ImsReasonInfo.CODE_WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION, mCTUT.maybeRemapReasonCode( new ImsReasonInfo(ImsReasonInfo.CODE_SIP_FORBIDDEN, 0, "SERVICE not allowed in this location"))); } private ImsPhoneConnection placeCallAndMakeActive() { try { doAnswer(new Answer<ImsCall>() { Loading