Properly handle multi-endpoint answered elsewhere disconnect cause.

Two issues:
1. The "answered elsewhere" disconnect cause was mapped to "call pulled".
2. The "answered elsewhere" disconnect cause would be remapped as a missed
call.

Bug: 29236416
Change-Id: I4cb46a68079fdefd273c532b378e703c24ba7f4e
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 150922a..da36a0f 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -1180,6 +1180,8 @@
                 return DisconnectCause.FDN_BLOCKED;
 
             case ImsReasonInfo.CODE_ANSWERED_ELSEWHERE:
+                return DisconnectCause.ANSWERED_ELSEWHERE;
+
             case ImsReasonInfo.CODE_CALL_END_CAUSE_CALL_PULL:
                 return DisconnectCause.CALL_PULLED;
             default:
@@ -1292,7 +1294,8 @@
                 mOnHoldToneStarted = false;
                 mOnHoldToneId = -1;
             }
-            if (conn != null && conn.isIncoming() && conn.getConnectTime() == 0) {
+            if (conn != null && conn.isIncoming() && conn.getConnectTime() == 0
+                    && cause != DisconnectCause.ANSWERED_ELSEWHERE) {
                 // Missed
                 if (cause == DisconnectCause.NORMAL) {
                     cause = DisconnectCause.INCOMING_MISSED;