summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog/database/Coalescer.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/calllog/database/Coalescer.java')
-rw-r--r--java/com/android/dialer/calllog/database/Coalescer.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
index 5683687fd..63fa9f828 100644
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -32,6 +32,7 @@ import com.google.protobuf.InvalidProtocolBufferException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import javax.inject.Inject;
/**
@@ -129,12 +130,25 @@ public class Coalescer {
*/
private static boolean rowsShouldBeCombined(
DialerPhoneNumberUtil dialerPhoneNumberUtil, ContentValues row1, ContentValues row2) {
- // TODO: Real implementation.
+ // Don't combine rows which don't use the same phone account.
+ if (!Objects.equals(
+ row1.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_LABEL),
+ row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_LABEL))) {
+ return false;
+ }
DialerPhoneNumber number1;
DialerPhoneNumber number2;
try {
- number1 = DialerPhoneNumber.parseFrom(row1.getAsByteArray(AnnotatedCallLog.NUMBER));
- number2 = DialerPhoneNumber.parseFrom(row2.getAsByteArray(AnnotatedCallLog.NUMBER));
+ byte[] number1Bytes = row1.getAsByteArray(AnnotatedCallLog.NUMBER);
+ byte[] number2Bytes = row2.getAsByteArray(AnnotatedCallLog.NUMBER);
+
+ if (number1Bytes == null || number2Bytes == null) {
+ // Empty numbers should not be combined.
+ return false;
+ }
+
+ number1 = DialerPhoneNumber.parseFrom(number1Bytes);
+ number2 = DialerPhoneNumber.parseFrom(number2Bytes);
} catch (InvalidProtocolBufferException e) {
throw Assert.createAssertionFailException("error parsing DialerPhoneNumber proto", e);
}