summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/phonelookup
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2017-12-15 23:50:27 -0800
committerCopybara-Service <copybara-piper@google.com>2017-12-15 23:51:37 -0800
commite3b74d22b4e92009433e07f29973f53fb90613e1 (patch)
tree1a7612102ab551b0a765bd35ef89f0f28e1922a6 /java/com/android/dialer/phonelookup
parent14690e983b0858d8ee4679adc54c1810a8ccddcc (diff)
Implemented Cp2PhoneLookup#lookup.
Bug: 34672501 Test: unit PiperOrigin-RevId: 179278530 Change-Id: If629aa2c31efad790c8c70e8066dc9a5612d1fc3
Diffstat (limited to 'java/com/android/dialer/phonelookup')
-rw-r--r--java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java42
1 files changed, 33 insertions, 9 deletions
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
index fce6bbaf6..b31d0e72e 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
@@ -22,7 +22,6 @@ import android.database.Cursor;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.DeletedContacts;
-import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.util.ArrayMap;
import android.support.v4.util.ArraySet;
@@ -39,6 +38,7 @@ import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info.Cp2ContactInfo;
import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
import com.android.dialer.storage.Unencrypted;
+import com.android.dialer.telecom.TelecomCallUtil;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -96,9 +96,32 @@ public final class Cp2PhoneLookup implements PhoneLookup {
}
@Override
- public ListenableFuture<PhoneLookupInfo> lookup(@NonNull Call call) {
- // TODO(zachh): Implementation.
- return backgroundExecutorService.submit(PhoneLookupInfo::getDefaultInstance);
+ public ListenableFuture<PhoneLookupInfo> lookup(Call call) {
+ return backgroundExecutorService.submit(() -> lookupInternal(call));
+ }
+
+ private PhoneLookupInfo lookupInternal(Call call) {
+ String rawNumber = TelecomCallUtil.getNumber(call);
+ if (TextUtils.isEmpty(rawNumber)) {
+ return PhoneLookupInfo.getDefaultInstance();
+ }
+ Optional<String> e164 = TelecomCallUtil.getE164Number(appContext, call);
+ Set<Cp2ContactInfo> cp2ContactInfos = new ArraySet<>();
+ try (Cursor cursor =
+ e164.isPresent()
+ ? queryPhoneTableBasedOnE164(CP2_INFO_PROJECTION, ImmutableSet.of(e164.get()))
+ : queryPhoneTableBasedOnRawNumber(CP2_INFO_PROJECTION, ImmutableSet.of(rawNumber))) {
+ if (cursor == null) {
+ LogUtil.w("Cp2PhoneLookup.lookupInternal", "null cursor");
+ return PhoneLookupInfo.getDefaultInstance();
+ }
+ while (cursor.moveToNext()) {
+ cp2ContactInfos.add(buildCp2ContactInfoFromPhoneCursor(appContext, cursor));
+ }
+ }
+ return PhoneLookupInfo.newBuilder()
+ .setCp2Info(Cp2Info.newBuilder().addAllCp2ContactInfo(cp2ContactInfos))
+ .build();
}
@Override
@@ -226,10 +249,11 @@ public final class Cp2PhoneLookup implements PhoneLookup {
public ListenableFuture<ImmutableMap<DialerPhoneNumber, PhoneLookupInfo>>
getMostRecentPhoneLookupInfo(
ImmutableMap<DialerPhoneNumber, PhoneLookupInfo> existingInfoMap) {
- return backgroundExecutorService.submit(() -> bulkUpdateInternal(existingInfoMap));
+ return backgroundExecutorService.submit(
+ () -> getMostRecentPhoneLookupInfoInternal(existingInfoMap));
}
- private ImmutableMap<DialerPhoneNumber, PhoneLookupInfo> bulkUpdateInternal(
+ private ImmutableMap<DialerPhoneNumber, PhoneLookupInfo> getMostRecentPhoneLookupInfoInternal(
ImmutableMap<DialerPhoneNumber, PhoneLookupInfo> existingInfoMap) {
currentLastTimestampProcessed = null;
long lastModified = sharedPreferences.getLong(PREF_LAST_TIMESTAMP_PROCESSED, 0L);
@@ -381,7 +405,7 @@ public final class Cp2PhoneLookup implements PhoneLookup {
String e164Number = cursor.getString(CP2_INFO_NORMALIZED_NUMBER_INDEX);
Set<DialerPhoneNumber> dialerPhoneNumbers =
partitionedNumbers.dialerPhoneNumbersForE164(e164Number);
- Cp2ContactInfo info = buildCp2ContactInfoFromUpdatedContactsCursor(appContext, cursor);
+ Cp2ContactInfo info = buildCp2ContactInfoFromPhoneCursor(appContext, cursor);
addInfo(map, dialerPhoneNumbers, info);
}
}
@@ -398,7 +422,7 @@ public final class Cp2PhoneLookup implements PhoneLookup {
String unformattableNumber = cursor.getString(CP2_INFO_NUMBER_INDEX);
Set<DialerPhoneNumber> dialerPhoneNumbers =
partitionedNumbers.dialerPhoneNumbersForUnformattable(unformattableNumber);
- Cp2ContactInfo info = buildCp2ContactInfoFromUpdatedContactsCursor(appContext, cursor);
+ Cp2ContactInfo info = buildCp2ContactInfoFromPhoneCursor(appContext, cursor);
addInfo(map, dialerPhoneNumbers, info);
}
}
@@ -453,7 +477,7 @@ public final class Cp2PhoneLookup implements PhoneLookup {
* @param cursor with projection {@link #CP2_INFO_PROJECTION}.
* @return new {@link Cp2ContactInfo} based on current row of {@code cursor}.
*/
- private static Cp2ContactInfo buildCp2ContactInfoFromUpdatedContactsCursor(
+ private static Cp2ContactInfo buildCp2ContactInfoFromPhoneCursor(
Context appContext, Cursor cursor) {
String displayName = cursor.getString(CP2_INFO_NAME_INDEX);
String photoUri = cursor.getString(CP2_INFO_PHOTO_URI_INDEX);