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;
}
/**