Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +11 −0 Original line number Diff line number Diff line Loading @@ -1948,6 +1948,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 @@ -1966,6 +1969,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 @@ -2038,6 +2043,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 @@ -620,8 +626,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 @@ -917,6 +927,38 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { new ImsReasonInfo(ImsReasonInfo.CODE_USER_TERMINATED_BY_REMOTE, 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 void 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 @@ -1948,6 +1948,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 @@ -1966,6 +1969,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 @@ -2038,6 +2043,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 @@ -620,8 +626,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 @@ -917,6 +927,38 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { new ImsReasonInfo(ImsReasonInfo.CODE_USER_TERMINATED_BY_REMOTE, 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 void placeCallAndMakeActive() { try { doAnswer(new Answer<ImsCall>() { Loading