summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/phonelookup
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2018-01-09 17:44:36 -0800
committerCopybara-Service <copybara-piper@google.com>2018-01-09 18:30:15 -0800
commit73ec1ab52956c658654a40c42f4c59806713b15e (patch)
treeead07b921b1f204e54fba836f03f392a064d7063 /java/com/android/dialer/phonelookup
parent06fee1b28472f1019443c9b63ea9bd8aad9f5757 (diff)
Changed behavior of failures in DialerFutures#firstMatching.
DialerFutures#firstMatching now fails if one of its provided futures fails before a match is found. This is to accomodate the case where no source returns true for isDirty, but one or more fail; we want to be notified of the failure in that case and not silently treat that case as not dirty. Also fixed a bug in NewCallLogFragment where the failed future wasn't causing the application to crash. Also improved some related logging in RefreshAnnotatedCallLogWorker and Cp2PhoneLookup, and fixed a bug where empty numbers were not being handled correctly. Bug: 71504246 Test: unit PiperOrigin-RevId: 181401710 Change-Id: I23e207ac334ff80ac95b08a8f4f775a528a8c511
Diffstat (limited to 'java/com/android/dialer/phonelookup')
-rw-r--r--java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
index 5ae0fb68a..dd440708c 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java
@@ -211,6 +211,7 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
anyContactsDeletedFuture,
anyContactsDeleted -> {
if (anyContactsDeleted) {
+ LogUtil.v("Cp2PhoneLookup.isDirty", "returning true because contacts deleted");
return Futures.immediateFuture(true);
}
// Hopefully the most common case is there are no contacts updated; we can detect
@@ -221,6 +222,9 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
noContactsModifiedSinceFuture,
noContactsModifiedSince -> {
if (noContactsModifiedSince) {
+ LogUtil.v(
+ "Cp2PhoneLookup.isDirty",
+ "returning false because no contacts modified since last run");
return Futures.immediateFuture(false);
}
// This method is more expensive but is probably the most likely scenario; we
@@ -236,6 +240,9 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
contactsUpdatedFuture,
contactsUpdated -> {
if (contactsUpdated) {
+ LogUtil.v(
+ "Cp2PhoneLookup.isDirty",
+ "returning true because a previously called contact was updated");
return Futures.immediateFuture(true);
}
// This is the most expensive method so do it last; the scenario is that
@@ -357,13 +364,14 @@ public final class Cp2PhoneLookup implements PhoneLookup<Cp2Info> {
private ListenableFuture<Set<Long>> queryPhoneLookupTableForContactIdsBasedOnRawNumber(
String rawNumber) {
+ if (TextUtils.isEmpty(rawNumber)) {
+ return Futures.immediateFuture(new ArraySet<>());
+ }
return backgroundExecutorService.submit(
() -> {
Set<Long> contactIds = new ArraySet<>();
try (Cursor cursor =
- queryPhoneLookup(
- new String[] {android.provider.ContactsContract.PhoneLookup.CONTACT_ID},
- rawNumber)) {
+ queryPhoneLookup(new String[] {ContactsContract.PhoneLookup.CONTACT_ID}, rawNumber)) {
if (cursor == null) {
LogUtil.w(
"Cp2PhoneLookup.queryPhoneLookupTableForContactIdsBasedOnRawNumber",