summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/phonelookup/composite
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2018-01-11 14:05:10 -0800
committerCopybara-Service <copybara-piper@google.com>2018-01-11 14:23:40 -0800
commit4ee24a9492c7c83952f59ecc54071c31aa68fa86 (patch)
tree88259dfd2edf1eefdbb367cd93bc7dfd6a7db548 /java/com/android/dialer/phonelookup/composite
parent5dd30438fd3e4384b57cef3c7606ec20fad9b50d (diff)
Fixed bug in handling of empty numbers in new call log.
Empty numbers were not being inserted into PhoneLookupHistory because the URI "content://.../PhoneLookupHistory/" is treated the same as "content://.../PhoneLookupHistory" (w/o the trailing slash). This caused the update (i.e. replace) operation to incorrectly update all rows in the table when it should have updated a single row. The fix for this was to switch to a query parameter, so the empty number URI now looks like "content://.../PhoneLookupHistory?number=" Also improved some logging while debugging this problem. Bug: 71866050 Test: unit and manual PiperOrigin-RevId: 181659081 Change-Id: Idec4fb77e74920cd5485620b0a997db03aa8ff9b
Diffstat (limited to 'java/com/android/dialer/phonelookup/composite')
-rw-r--r--java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
index 34f35311f..68695b7e9 100644
--- a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
@@ -34,6 +34,7 @@ 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 java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -88,7 +89,18 @@ public final class CompositePhoneLookup implements PhoneLookup<PhoneLookupInfo>
public ListenableFuture<Boolean> isDirty(ImmutableSet<DialerPhoneNumber> phoneNumbers) {
List<ListenableFuture<Boolean>> futures = new ArrayList<>();
for (PhoneLookup<?> phoneLookup : phoneLookups) {
- futures.add(phoneLookup.isDirty(phoneNumbers));
+ futures.add(
+ Futures.transform(
+ phoneLookup.isDirty(phoneNumbers),
+ isDirty -> {
+ LogUtil.v(
+ "CompositePhoneLookup.isDirty",
+ "isDirty for %s: %b",
+ phoneLookup.getClass().getSimpleName(),
+ isDirty);
+ return isDirty;
+ },
+ MoreExecutors.directExecutor()));
}
// Executes all child lookups (possibly in parallel), completing when the first composite lookup
// which returns "true" completes, and cancels the others.