Added support for Calls.FEATURES_VOLTE in call log.

Test: CTS test
Bug: 141264508
Change-Id: I78eb1075d2caf2af1c2ce88b75eb1f8caa43fb81
Merged-In: I78eb1075d2caf2af1c2ce88b75eb1f8caa43fb81
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index b23e198..ed6a20a 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -461,6 +461,7 @@
     private boolean mWasConferencePreviouslyMerged = false;
     private boolean mWasHighDefAudio = false;
     private boolean mWasWifi = false;
+    private boolean mWasVolte = false;
 
     // For conferences which support merge/swap at their level, we retain a notion of an active
     // call. This is used for BluetoothPhoneService.  In order to support hold/merge, it must have
@@ -2391,6 +2392,13 @@
         for (Listener l : mListeners) {
             l.onExtrasChanged(this, source, extras);
         }
+      
+        // If mExtra shows that the call using Volte, record it with mWasVolte
+        if (mExtras.containsKey(TelecomManager.EXTRA_CALL_NETWORK_TYPE) &&
+            mExtras.get(TelecomManager.EXTRA_CALL_NETWORK_TYPE)
+                    .equals(TelephonyManager.NETWORK_TYPE_LTE)) {
+            mWasVolte = true;
+        }
 
         // If the change originated from an InCallService, notify the connection service.
         if (source == SOURCE_INCALL_SERVICE) {
@@ -3494,7 +3502,7 @@
     }
 
     /**
-     * Returns wether or not Wifi call was used.
+     * Returns whether or not Wifi call was used.
      *
      * @return true if wifi call was used during this call.
      */
@@ -3504,6 +3512,15 @@
 
     public void setIsUsingCallFiltering(boolean isUsingCallFiltering) {
         mIsUsingCallFiltering = isUsingCallFiltering;
+    }       
+          
+    /**
+     * Returns whether or not Volte call was used.
+     *
+     * @return true if Volte call was used during this call.
+     */
+    public boolean wasVolte() {
+        return mWasVolte;
     }
 
     /**
diff --git a/src/com/android/server/telecom/CallLogManager.java b/src/com/android/server/telecom/CallLogManager.java
index f616b13..b84d37e 100755
--- a/src/com/android/server/telecom/CallLogManager.java
+++ b/src/com/android/server/telecom/CallLogManager.java
@@ -339,7 +339,8 @@
                 call.wasHighDefAudio(), call.wasWifi(),
                 (call.getConnectionProperties() & Connection.PROPERTY_ASSISTED_DIALING_USED) ==
                         Connection.PROPERTY_ASSISTED_DIALING_USED,
-                call.wasEverRttCall());
+                call.wasEverRttCall(),
+                call.wasVolte());
 
         if (callLogType == Calls.BLOCKED_TYPE) {
             logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
@@ -464,7 +465,7 @@
      * @return The call features.
      */
     private static int getCallFeatures(int videoState, boolean isPulledCall, boolean isStoreHd,
-            boolean isWifi, boolean isUsingAssistedDialing, boolean isRtt) {
+            boolean isWifi, boolean isUsingAssistedDialing, boolean isRtt, boolean isVolte) {
         int features = 0;
         if (VideoProfile.isVideo(videoState)) {
             features |= Calls.FEATURES_VIDEO;
@@ -484,6 +485,9 @@
         if (isRtt) {
             features |= Calls.FEATURES_RTT;
         }
+        if (isVolte) {
+            features |= Calls.FEATURES_VOLTE;
+        }
         return features;
     }