summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java')
-rw-r--r--java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java64
1 files changed, 9 insertions, 55 deletions
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
index 60c934ace..307e0a434 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
@@ -37,7 +37,7 @@ 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.android.dialer.telecom.TelecomCallUtil;
import com.google.common.base.Optional;
@@ -45,7 +45,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.Map;
import java.util.Map.Entry;
@@ -392,6 +391,12 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
});
}
+ @Override
+ public void registerContentObservers(
+ Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+ // Do nothing since CP2 changes are too noisy.
+ }
+
/**
* 1. get all contact ids. if the id is unset, add the number to the list of contacts to look up.
* 2. reduce our list of contact ids to those that were updated after lastModified. 3. Now we have
@@ -475,7 +480,8 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
// Divide the numbers into those we can format to E164 and those we can't. Then run separate
// queries against the contacts table using the NORMALIZED_NUMBER and NUMBER columns.
// TODO(zachh): These queries are inefficient without a lastModified column to filter on.
- PartitionedNumbers partitionedNumbers = new PartitionedNumbers(updatedNumbers);
+ PartitionedNumbers partitionedNumbers =
+ new PartitionedNumbers(ImmutableSet.copyOf(updatedNumbers));
if (!partitionedNumbers.validE164Numbers().isEmpty()) {
try (Cursor cursor =
queryPhoneTableBasedOnE164(CP2_INFO_PROJECTION, partitionedNumbers.validE164Numbers())) {
@@ -701,56 +707,4 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
}
return where.toString();
}
-
- /**
- * Divides a set of {@link DialerPhoneNumber DialerPhoneNumbers} by those that can be formatted to
- * E164 and those that cannot.
- */
- private static class PartitionedNumbers {
- private Map<String, Set<DialerPhoneNumber>> e164NumbersToDialerPhoneNumbers = new ArrayMap<>();
- private Map<String, Set<DialerPhoneNumber>> unformattableNumbersToDialerPhoneNumbers =
- new ArrayMap<>();
-
- PartitionedNumbers(Set<DialerPhoneNumber> dialerPhoneNumbers) {
- DialerPhoneNumberUtil dialerPhoneNumberUtil =
- new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance());
- for (DialerPhoneNumber dialerPhoneNumber : dialerPhoneNumbers) {
- Optional<String> e164 = dialerPhoneNumberUtil.formatToE164(dialerPhoneNumber);
- if (e164.isPresent()) {
- String validE164 = e164.get();
- Set<DialerPhoneNumber> currentNumbers = e164NumbersToDialerPhoneNumbers.get(validE164);
- if (currentNumbers == null) {
- currentNumbers = new ArraySet<>();
- e164NumbersToDialerPhoneNumbers.put(validE164, currentNumbers);
- }
- currentNumbers.add(dialerPhoneNumber);
- } else {
- String unformattableNumber = dialerPhoneNumber.getRawInput().getNumber();
- Set<DialerPhoneNumber> currentNumbers =
- unformattableNumbersToDialerPhoneNumbers.get(unformattableNumber);
- if (currentNumbers == null) {
- currentNumbers = new ArraySet<>();
- unformattableNumbersToDialerPhoneNumbers.put(unformattableNumber, currentNumbers);
- }
- currentNumbers.add(dialerPhoneNumber);
- }
- }
- }
-
- Set<String> unformattableNumbers() {
- return unformattableNumbersToDialerPhoneNumbers.keySet();
- }
-
- Set<String> validE164Numbers() {
- return e164NumbersToDialerPhoneNumbers.keySet();
- }
-
- Set<DialerPhoneNumber> dialerPhoneNumbersForE164(String e164) {
- return e164NumbersToDialerPhoneNumbers.get(e164);
- }
-
- Set<DialerPhoneNumber> dialerPhoneNumbersForUnformattable(String unformattableNumber) {
- return unformattableNumbersToDialerPhoneNumbers.get(unformattableNumber);
- }
- }
}