diff options
author | zachh <zachh@google.com> | 2018-01-29 13:45:58 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-29 15:36:05 -0800 |
commit | 75a8d5170399b37d33bced7825a9f6d88a5ec233 (patch) | |
tree | 35a7e6ae0b6dbdae5ba84388a55853af78ac875f /java/com/android/dialer/phonelookup | |
parent | add7d143419d8ada612eb3e0bb2807b0e97dff35 (diff) |
Added is_valid and post_dial_portion fields to DialerPhoneNumber.
These are frequently used attributes of numbers that we can compute once at parse-time.
Also did some general cleanup of DialerPhoneNumberUtil:
-Removed unused Future version of parse()
-Remove formatToValidE164 now that the new fields are available
-Inlined normalizeNumber()
Bug: 72563861
Test: existing
PiperOrigin-RevId: 183720128
Change-Id: I702dc265360e590439c5352c493ae8a858f36812
Diffstat (limited to 'java/com/android/dialer/phonelookup')
-rw-r--r-- | java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java | 41 | ||||
-rw-r--r-- | java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java | 7 |
2 files changed, 29 insertions, 19 deletions
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java index 127569b9f..95b14a41d 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java @@ -39,18 +39,16 @@ import com.android.dialer.phonelookup.PhoneLookupInfo; import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info; import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info.Cp2ContactInfo; import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract.PhoneLookupHistory; -import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.android.dialer.phonenumberproto.PartitionedNumbers; import com.android.dialer.storage.Unencrypted; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; -import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.protobuf.InvalidProtocolBufferException; import java.util.ArrayList; import java.util.List; @@ -96,21 +94,32 @@ public final class Cp2LocalPhoneLookup implements PhoneLookup<Cp2Info> { } private Cp2Info lookupInternal(DialerPhoneNumber dialerPhoneNumber) { - DialerPhoneNumberUtil dialerPhoneNumberUtil = - new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance()); - String number = dialerPhoneNumberUtil.normalizeNumber(dialerPhoneNumber); + String number = dialerPhoneNumber.getNormalizedNumber(); if (TextUtils.isEmpty(number)) { return Cp2Info.getDefaultInstance(); } - Optional<String> validE164 = dialerPhoneNumberUtil.formatToValidE164(dialerPhoneNumber); + Set<Cp2ContactInfo> cp2ContactInfos = new ArraySet<>(); - // Note: It would make sense to use PHONE_LOOKUP for E164 numbers as well, but we use PHONE to - // ensure consistency when the batch methods are used to update data. - try (Cursor cursor = - validE164.isPresent() - ? queryPhoneTableBasedOnE164( - Cp2Projections.getProjectionForPhoneTable(), ImmutableSet.of(validE164.get())) - : queryPhoneLookup(Cp2Projections.getProjectionForPhoneLookupTable(), number)) { + + // Even though this is only a single number, use PartitionedNumbers to mimic the logic used + // during getMostRecentInfo. + PartitionedNumbers partitionedNumbers = + new PartitionedNumbers(ImmutableSet.of(dialerPhoneNumber)); + + Cursor cursor = null; + try { + // Note: It would make sense to use PHONE_LOOKUP for valid numbers as well, but we use PHONE + // to ensure consistency when the batch methods are used to update data. + if (!partitionedNumbers.validE164Numbers().isEmpty()) { + cursor = + queryPhoneTableBasedOnE164( + Cp2Projections.getProjectionForPhoneTable(), partitionedNumbers.validE164Numbers()); + } else { + cursor = + queryPhoneLookup( + Cp2Projections.getProjectionForPhoneLookupTable(), + Iterables.getOnlyElement(partitionedNumbers.invalidNumbers())); + } if (cursor == null) { LogUtil.w("Cp2LocalPhoneLookup.lookupInternal", "null cursor"); return Cp2Info.getDefaultInstance(); @@ -118,6 +127,10 @@ public final class Cp2LocalPhoneLookup implements PhoneLookup<Cp2Info> { while (cursor.moveToNext()) { cp2ContactInfos.add(Cp2Projections.buildCp2ContactInfoFromCursor(appContext, cursor)); } + } finally { + if (cursor != null) { + cursor.close(); + } } return Cp2Info.newBuilder().addAllCp2ContactInfo(cp2ContactInfos).build(); } diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java index 9596f15f7..cc4fbf19f 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java @@ -32,14 +32,12 @@ import com.android.dialer.inject.ApplicationContext; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info; -import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.i18n.phonenumbers.PhoneNumberUtil; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; @@ -114,9 +112,8 @@ public final class Cp2RemotePhoneLookup implements PhoneLookup<Cp2Info> { return Futures.immediateFuture(Cp2Info.getDefaultInstance()); } - DialerPhoneNumberUtil dialerPhoneNumberUtil = - new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance()); - String number = dialerPhoneNumberUtil.normalizeNumber(dialerPhoneNumber); + // Note: This loses country info when number is not valid. + String number = dialerPhoneNumber.getNormalizedNumber(); List<ListenableFuture<Cp2Info>> cp2InfoFutures = new ArrayList<>(); for (long remoteDirectoryId : remoteDirectoryIds) { |