Merge AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.029 on remote branch

Change-Id: Ic5dd0319ef5e4d70fb8ea97861982d07653fc7b4
diff --git a/src/java/com/android/ims/ImsCall.java b/src/java/com/android/ims/ImsCall.java
index ee8ec11..f283c7d 100755
--- a/src/java/com/android/ims/ImsCall.java
+++ b/src/java/com/android/ims/ImsCall.java
@@ -1877,12 +1877,12 @@
 
                 // Since this call is the foreground call that sent the merge
                 // request, ending signifies that the call successfully got
-                // merged into the conference call.
-                // NOTE: We cannot identify a genuinely dropped call at this
-                // point.
-                processMergeComplete();
-
-                return;
+                // merged into the conference call only if mTransientConferenceSession exists.
+                // Else this is a genuine call end of this session & callTerminated will be invoked.
+                if (mTransientConferenceSession != null) {
+                    processMergeComplete();
+                    return;
+                }
             }
 
             // If this condition is satisfied, this call is either a part of
@@ -2224,7 +2224,10 @@
         @Override
         public void callSessionTerminated(ImsCallSession session, ImsReasonInfo reasonInfo) {
             if (mSession != session) {
-                log("callSessionTerminated :: not supported for conference session=" + session);
+                if (isTransientConferenceSession(session)) {
+                    processMergeFailed(reasonInfo);
+                    log("callSessionTerminated :: for transient session");
+                }
                 return;
             }