summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java9
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java23
2 files changed, 28 insertions, 4 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
index 9a3d2e20f..39a806568 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
@@ -29,6 +29,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.os.Build;
+import android.provider.CallLog.Calls;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
@@ -121,7 +122,13 @@ public class AnnotatedCallLogContentProvider extends ContentProvider {
Assert.checkArgument(sortOrder == null, "sort order not supported for coalesced call log");
try (Cursor allAnnotatedCallLogRows =
queryBuilder.query(
- db, null, null, null, null, null, AnnotatedCallLog.TIMESTAMP + " DESC")) {
+ db,
+ null,
+ String.format("%s != ?", CoalescedAnnotatedCallLog.CALL_TYPE),
+ new String[] {Integer.toString(Calls.VOICEMAIL_TYPE)},
+ null,
+ null,
+ AnnotatedCallLog.TIMESTAMP + " DESC")) {
Cursor coalescedRows = coalescer.coalesce(allAnnotatedCallLogRows);
coalescedRows.setNotificationUri(
getContext().getContentResolver(), CoalescedAnnotatedCallLog.CONTENT_URI);
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 0a965f63e..681a86da7 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -88,7 +88,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
appContext
.getContentResolver()
.registerContentObserver(
- CallLog.Calls.CONTENT_URI,
+ CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
true,
new CallLogObserver(
ThreadUtil.getUiThreadHandler(), appContext, contentObserverCallbacks));
@@ -152,6 +152,9 @@ public class SystemCallLogDataSource implements CallLogDataSource {
@Override
public ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc) {
// TODO(zachh): Complete implementation.
+
+ assertNoVoicemailsInRows(individualRowsSortedByTimestampDesc);
+
return new RowCombiner(individualRowsSortedByTimestampDesc)
.useMostRecentLong(AnnotatedCallLog.TIMESTAMP)
.useMostRecentLong(AnnotatedCallLog.NEW)
@@ -174,6 +177,15 @@ public class SystemCallLogDataSource implements CallLogDataSource {
.combine();
}
+ private void assertNoVoicemailsInRows(List<ContentValues> individualRowsSortedByTimestampDesc) {
+ for (ContentValues contentValue : individualRowsSortedByTimestampDesc) {
+ if (contentValue.getAsLong(AnnotatedCallLog.CALL_TYPE) != null) {
+ Assert.checkArgument(
+ contentValue.getAsLong(AnnotatedCallLog.CALL_TYPE) != Calls.VOICEMAIL_TYPE);
+ }
+ }
+ }
+
@TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
private void handleInsertsAndUpdates(
Context appContext, CallLogMutations mutations, Set<Long> existingAnnotatedCallLogIds) {
@@ -189,7 +201,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
appContext
.getContentResolver()
.query(
- Calls.CONTENT_URI, // Excludes voicemail
+ Calls.CONTENT_URI_WITH_VOICEMAIL,
new String[] {
Calls._ID,
Calls.DATE,
@@ -414,7 +426,12 @@ public class SystemCallLogDataSource implements CallLogDataSource {
try (Cursor cursor =
appContext
.getContentResolver()
- .query(Calls.CONTENT_URI, new String[] {Calls._ID}, whereClause, whereArgs, null)) {
+ .query(
+ Calls.CONTENT_URI_WITH_VOICEMAIL,
+ new String[] {Calls._ID},
+ whereClause,
+ whereArgs,
+ null)) {
if (cursor == null) {
LogUtil.e("SystemCallLogDataSource.getIdsFromSystemCallLog", "null cursor");