summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog/ui
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-01-17 10:39:26 -0800
committerCopybara-Service <copybara-piper@google.com>2018-01-17 11:25:43 -0800
commit31e83f3eb7e6ce06c7fb93b621f6086e7d5cd8c2 (patch)
tree9e7ee23475307895f1862b1c1fc5cbb9a5731a86 /java/com/android/dialer/calllog/ui
parentbb41b26b5d8b438f6d163c56e31f0ff3801c7ed0 (diff)
Replace PhoneLookupSelector with PhoneLookupInfoConsolidator.
PhoneLookupInfoConsolidator is designed for the following two purposes. (1) Different sub-messages in a PhoneLookupInfo proto can contain information for the same purpose. For example, all of cp2_local_info, cp2_remote_info, and people_api_info have the information for a contact's name. PhoneLookupInfoConsolidator defines the rules that determine which sub-message should be used to display the name in the UI. This is the same as PhoneLookupSelector. (2) Avoid mixing info from different sub-messages when we are supposed to stick with only one sub-message. For example, if a PhoneLookupInfo proto has both cp2_local_info and cp2_remote_info but only cp2_remote_info has a photo URI, PhoneLookupInfoConsolidator should return an *empty* photo URI as cp2_local_info has higher priority and we should not use cp2_remote_info's photo URI to display the contact's photo. This is what PhoneLookupSelector is unable to do. Bug: 71763594 Test: PhoneLookupInfoConsolidatorTest PiperOrigin-RevId: 182236013 Change-Id: If19cdc1a9e076f3ebc8f9e2901f050b519e273f2
Diffstat (limited to 'java/com/android/dialer/calllog/ui')
-rw-r--r--java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java33
1 files changed, 18 insertions, 15 deletions
diff --git a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
index 393482ab0..6e214edc4 100644
--- a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
+++ b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
@@ -16,6 +16,7 @@
package com.android.dialer.calllog.ui;
+import android.content.Context;
import android.support.annotation.MainThread;
import android.util.ArrayMap;
import com.android.dialer.DialerPhoneNumber;
@@ -23,10 +24,11 @@ import com.android.dialer.NumberAttributes;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.Annotations.Ui;
+import com.android.dialer.inject.ApplicationContext;
import com.android.dialer.phonelookup.PhoneLookupInfo;
import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
+import com.android.dialer.phonelookup.consolidator.PhoneLookupInfoConsolidator;
import com.android.dialer.phonelookup.cp2.Cp2LocalPhoneLookup;
-import com.android.dialer.phonelookup.selector.PhoneLookupSelector;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@@ -47,20 +49,20 @@ import javax.inject.Inject;
*/
public final class RealtimeRowProcessor {
- private final ListeningExecutorService uiExecutor;
+ private final Context appContext;
private final Cp2LocalPhoneLookup cp2LocalPhoneLookup;
- private final PhoneLookupSelector phoneLookupSelector;
+ private final ListeningExecutorService uiExecutor;
private final Map<DialerPhoneNumber, Cp2Info> cache = new ArrayMap<>();
@Inject
RealtimeRowProcessor(
+ @ApplicationContext Context appContext,
@Ui ListeningExecutorService uiExecutor,
- Cp2LocalPhoneLookup cp2LocalPhoneLookup,
- PhoneLookupSelector phoneLookupSelector) {
+ Cp2LocalPhoneLookup cp2LocalPhoneLookup) {
+ this.appContext = appContext;
this.uiExecutor = uiExecutor;
this.cp2LocalPhoneLookup = cp2LocalPhoneLookup;
- this.phoneLookupSelector = phoneLookupSelector;
}
/**
@@ -104,19 +106,20 @@ public final class RealtimeRowProcessor {
private CoalescedRow applyCp2LocalInfoToRow(Cp2Info cp2Info, CoalescedRow row) {
PhoneLookupInfo phoneLookupInfo = PhoneLookupInfo.newBuilder().setCp2LocalInfo(cp2Info).build();
+ PhoneLookupInfoConsolidator phoneLookupInfoConsolidator =
+ new PhoneLookupInfoConsolidator(appContext, phoneLookupInfo);
// It is safe to overwrite any existing data because CP2 always has highest priority.
return row.toBuilder()
.setNumberAttributes(
NumberAttributes.newBuilder()
- .setName(phoneLookupSelector.selectName(phoneLookupInfo))
- .setPhotoUri(phoneLookupSelector.selectPhotoUri(phoneLookupInfo))
- .setPhotoId(phoneLookupSelector.selectPhotoId(phoneLookupInfo))
- .setLookupUri(phoneLookupSelector.selectLookupUri(phoneLookupInfo))
- .setNumberTypeLabel(phoneLookupSelector.selectNumberLabel(phoneLookupInfo))
- .setIsBusiness(phoneLookupSelector.selectIsBusiness(phoneLookupInfo))
- .setIsVoicemail(phoneLookupSelector.selectIsVoicemail(phoneLookupInfo))
- .setCanReportAsInvalidNumber(
- phoneLookupSelector.canReportAsInvalidNumber(phoneLookupInfo))
+ .setName(phoneLookupInfoConsolidator.getName())
+ .setPhotoUri(phoneLookupInfoConsolidator.getPhotoUri())
+ .setPhotoId(phoneLookupInfoConsolidator.getPhotoId())
+ .setLookupUri(phoneLookupInfoConsolidator.getLookupUri())
+ .setNumberTypeLabel(phoneLookupInfoConsolidator.getNumberLabel())
+ .setIsBusiness(phoneLookupInfoConsolidator.isBusiness())
+ .setIsVoicemail(phoneLookupInfoConsolidator.isVoicemail())
+ .setCanReportAsInvalidNumber(phoneLookupInfoConsolidator.canReportAsInvalidNumber())
.build())
.build();
}