summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2017-08-25 18:59:09 -0700
committerEric Erfanian <erfanian@google.com>2017-08-30 23:28:11 +0000
commit6e1adcc3ca6d754a1c262e058b0305c65a5d1166 (patch)
tree23c999f6c1d3e7479c8cd40aeaef8b94c39fe051 /java
parent51f2b28ae6a45f57f94e5c9a66081a10aebc8349 (diff)
Use Calls.CACHED_FORMATTED_NUMBER in new call log.
I debated re-implementing formatting but I'm assuming that the "cached" columns need to continue to be populated (via our legacy code or as part of NUI, TBD). If that's the case, reading them to display the new call log seems to be the right thing to do. Bug: 34672501 Test: yes PiperOrigin-RevId: 166553457 Change-Id: I0e53d2be0809b5a0bc5a82b32cdd2a598880637e
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java1
-rw-r--r--java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java18
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java36
-rw-r--r--java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java24
4 files changed, 28 insertions, 51 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 507a51af6..78c329a0e 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -39,6 +39,7 @@ class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper {
.append(AnnotatedCallLog._ID + " integer primary key, ")
.append(AnnotatedCallLog.TIMESTAMP + " integer, ")
.append(AnnotatedCallLog.NAME + " string, ")
+ .append(AnnotatedCallLog.FORMATTED_NUMBER + " string, ")
.append(AnnotatedCallLog.NEW + " integer, ")
.append(AnnotatedCallLog.TYPE + " integer, ")
.append(AnnotatedCallLog.CONTACT_PHOTO_URI + " string, ")
diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
index c669bdae5..be891c534 100644
--- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
+++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
@@ -53,6 +53,13 @@ public class AnnotatedCallLogContract {
String NAME = "name";
/**
+ * Copied from {@link android.provider.CallLog.Calls#CACHED_FORMATTED_NUMBER}.
+ *
+ * <p>Type: TEXT
+ */
+ String FORMATTED_NUMBER = "formatted_number";
+
+ /**
* Local photo URI for the contact associated with the phone number, if it exists.
*
* <p>Photos currently only come from local contacts database and not caller ID sources. If
@@ -136,6 +143,7 @@ public class AnnotatedCallLogContract {
_ID,
TIMESTAMP,
NAME,
+ FORMATTED_NUMBER,
CONTACT_PHOTO_URI,
NUMBER_TYPE_LABEL,
IS_READ,
@@ -213,14 +221,6 @@ public class AnnotatedCallLogContract {
public static final String NUMBER_CALLS = "number_calls";
/**
- * The phone number formatted in a way suitable for display to the user. This value is generated
- * on the fly when the {@link CoalescedAnnotatedCallLog} is generated.
- *
- * <p>Type: TEXT
- */
- public static final String FORMATTED_NUMBER = "formatted_number";
-
- /**
* The call types of the most recent 3 calls, encoded as a CallTypes proto.
*
* <p>TYPE: BLOB
@@ -232,7 +232,7 @@ public class AnnotatedCallLogContract {
* AnnotatedCallLog}.
*/
private static final String[] COLUMNS_ONLY_IN_COALESCED_CALL_LOG =
- new String[] {NUMBER_CALLS, FORMATTED_NUMBER, CALL_TYPES};
+ new String[] {NUMBER_CALLS, CALL_TYPES};
/** All columns in the {@link CoalescedAnnotatedCallLog}. */
public static final String[] ALL_COLUMNS =
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 7bf2972c5..e4af4170c 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -38,7 +38,6 @@ import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import android.util.ArraySet;
import com.android.dialer.CallTypes;
-import com.android.dialer.DialerPhoneNumber;
import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
import com.android.dialer.calllog.datasources.CallLogDataSource;
@@ -52,7 +51,6 @@ import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
import com.android.dialer.theme.R;
import com.android.dialer.util.PermissionsUtil;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.protobuf.InvalidProtocolBufferException;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -160,18 +158,9 @@ public class SystemCallLogDataSource implements CallLogDataSource {
.useMostRecentLong(AnnotatedCallLog.NEW)
.useMostRecentString(AnnotatedCallLog.NUMBER_TYPE_LABEL)
.useMostRecentString(AnnotatedCallLog.GEOCODED_LOCATION)
+ .useMostRecentString(AnnotatedCallLog.FORMATTED_NUMBER)
.combine();
- // All phone numbers in the provided group should be equivalent (but could be formatted
- // differently). Arbitrarily show the raw phone number of the most recent call.
- DialerPhoneNumber mostRecentPhoneNumber =
- getMostRecentPhoneNumber(individualRowsSortedByTimestampDesc);
- if (mostRecentPhoneNumber != null) {
- coalescedValues.put(
- CoalescedAnnotatedCallLog.FORMATTED_NUMBER,
- mostRecentPhoneNumber.getRawInput().getNumber());
- }
-
CallTypes.Builder callTypes = CallTypes.newBuilder();
// Store a maximum of 3 call types since that's all we show to users via icons.
for (int i = 0; i < 3 && i < individualRowsSortedByTimestampDesc.size(); i++) {
@@ -183,23 +172,6 @@ public class SystemCallLogDataSource implements CallLogDataSource {
return coalescedValues;
}
- @Nullable
- private static DialerPhoneNumber getMostRecentPhoneNumber(
- List<ContentValues> individualRowsSortedByTimestampDesc) {
- byte[] protoBytes =
- individualRowsSortedByTimestampDesc.get(0).getAsByteArray(AnnotatedCallLog.NUMBER);
- if (protoBytes == null) {
- return null;
- }
- DialerPhoneNumber dialerPhoneNumber;
- try {
- dialerPhoneNumber = DialerPhoneNumber.parseFrom(protoBytes);
- } catch (InvalidProtocolBufferException e) {
- throw Assert.createAssertionFailException("couldn't parse DialerPhoneNumber", e);
- }
- return dialerPhoneNumber;
- }
-
@TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
private void handleInsertsAndUpdates(
Context appContext, CallLogMutations mutations, Set<Long> existingAnnotatedCallLogIds) {
@@ -223,6 +195,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
Calls.NUMBER,
Calls.TYPE,
Calls.COUNTRY_ISO,
+ Calls.CACHED_FORMATTED_NUMBER,
Calls.CACHED_NUMBER_TYPE,
Calls.CACHED_NUMBER_LABEL,
Calls.IS_READ,
@@ -253,6 +226,8 @@ public class SystemCallLogDataSource implements CallLogDataSource {
int numberColumn = cursor.getColumnIndexOrThrow(Calls.NUMBER);
int typeColumn = cursor.getColumnIndexOrThrow(Calls.TYPE);
int countryIsoColumn = cursor.getColumnIndexOrThrow(Calls.COUNTRY_ISO);
+ int cachedFormattedNumberColumn =
+ cursor.getColumnIndexOrThrow(Calls.CACHED_FORMATTED_NUMBER);
int cachedNumberTypeColumn = cursor.getColumnIndexOrThrow(Calls.CACHED_NUMBER_TYPE);
int cachedNumberLabelColumn = cursor.getColumnIndexOrThrow(Calls.CACHED_NUMBER_LABEL);
int isReadColumn = cursor.getColumnIndexOrThrow(Calls.IS_READ);
@@ -272,7 +247,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
String numberAsStr = cursor.getString(numberColumn);
long type = cursor.getType(typeColumn);
String countryIso = cursor.getString(countryIsoColumn);
- // TODO(zachh): Decide if should use "cached" columns from call log or recompute.
+ String formattedNumber = cursor.getString(cachedFormattedNumberColumn);
int cachedNumberType = cursor.getInt(cachedNumberTypeColumn);
String cachedNumberLabel = cursor.getString(cachedNumberLabelColumn);
int isRead = cursor.getInt(isReadColumn);
@@ -293,6 +268,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
}
contentValues.put(AnnotatedCallLog.TYPE, type);
+ contentValues.put(AnnotatedCallLog.FORMATTED_NUMBER, formattedNumber);
// Phone.getTypeLabel returns "Custom" if given (0, null) which is not of any use. Just
// omit setting the label if there's no information for it.
diff --git a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
index 654591688..488e8f430 100644
--- a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
+++ b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
@@ -31,18 +31,18 @@ final class CoalescedAnnotatedCallLogCursorLoader extends CursorLoader {
private static final int TIMESTAMP = 1;
private static final int NAME = 2;
- private static final int CONTACT_PHOTO_URI = 3;
- private static final int NUMBER_TYPE_LABEL = 4;
- private static final int IS_READ = 5;
- private static final int NEW = 6;
- private static final int GEOCODED_LOCATION = 7;
- private static final int PHONE_ACCOUNT_LABEL = 8;
- private static final int PHONE_ACCOUNT_COLOR = 9;
- private static final int FEATURES = 10;
- private static final int IS_BUSINESS = 11;
- private static final int IS_VOICEMAIL = 12;
- private static final int NUMBER_CALLS = 13;
- private static final int FORMATTED_NUMBER = 14;
+ private static final int FORMATTED_NUMBER = 3;
+ private static final int CONTACT_PHOTO_URI = 4;
+ private static final int NUMBER_TYPE_LABEL = 5;
+ private static final int IS_READ = 6;
+ private static final int NEW = 7;
+ private static final int GEOCODED_LOCATION = 8;
+ private static final int PHONE_ACCOUNT_LABEL = 9;
+ private static final int PHONE_ACCOUNT_COLOR = 10;
+ private static final int FEATURES = 11;
+ private static final int IS_BUSINESS = 12;
+ private static final int IS_VOICEMAIL = 13;
+ private static final int NUMBER_CALLS = 14;
private static final int CALL_TYPES = 15;
/** Convenience class for accessing values using an abbreviated syntax. */