Separate calls with the video feature from others when coalescing rows in the new call log.

Test: CoalescerTest
PiperOrigin-RevId: 191376690
Change-Id: Id5939175edddd164a1b477319fb20e6d2a9671a9
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
index ed09eea..6b1a9e1 100644
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -18,6 +18,7 @@
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.provider.CallLog.Calls;
 import android.support.annotation.NonNull;
 import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
@@ -151,7 +152,6 @@
         TelecomUtil.composePhoneAccountHandle(
             row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME),
             row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_ID));
-
     if (!Objects.equals(phoneAccount1, phoneAccount2)) {
       return false;
     }
@@ -161,7 +161,7 @@
       return false;
     }
 
-    if (!meetsAssistedDialingCriteria(row1, row2)) {
+    if (!meetsCallFeatureCriteria(row1, row2)) {
       return false;
     }
 
@@ -185,20 +185,25 @@
   }
 
   /**
-   * Returns a boolean indicating whether or not FEATURES_ASSISTED_DIALING is mutually exclusive
-   * between two rows.
+   * Returns true if column {@link AnnotatedCallLog#FEATURES} of the two given rows indicate that
+   * they can be coalesced.
    */
-  private static boolean meetsAssistedDialingCriteria(ContentValues row1, ContentValues row2) {
-    int row1Assisted =
-        row1.getAsInteger(AnnotatedCallLog.FEATURES)
-            & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING;
-    int row2Assisted =
-        row2.getAsInteger(AnnotatedCallLog.FEATURES)
-            & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING;
+  private static boolean meetsCallFeatureCriteria(ContentValues row1, ContentValues row2) {
+    int row1Features = row1.getAsInteger(AnnotatedCallLog.FEATURES);
+    int row2Features = row2.getAsInteger(AnnotatedCallLog.FEATURES);
 
-    // FEATURES_ASSISTED_DIALING should not be combined with calls that are
-    // !FEATURES_ASSISTED_DIALING
-    return row1Assisted == row2Assisted;
+    // A row with FEATURES_ASSISTED_DIALING should not be combined with one without it.
+    if ((row1Features & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
+        != (row2Features & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)) {
+      return false;
+    }
+
+    // A video call should not be combined with one that is not a video call.
+    if ((row1Features & Calls.FEATURES_VIDEO) != (row2Features & Calls.FEATURES_VIDEO)) {
+      return false;
+    }
+
+    return true;
   }
 
   /**