summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
authorSantos Cordon <santoscordon@google.com>2014-10-09 15:21:12 -0700
committerSantos Cordon <santoscordon@google.com>2014-10-10 11:24:32 -0700
commit37295b9c31eca606c9af23db0bc0a9acc4a48cdd (patch)
treee72f7c731cfc5dc523bdc87306e3448c92edd8a3 /InCallUI
parent8ecbd37d8681495a1ee806643665f8feda330f93 (diff)
Dont overwrite cnap name with a failed local lookup.
Bug: 17916730 Change-Id: Iec19b5d02611b1cde23b57822157f278ae26d3ae
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/ContactInfoCache.java22
1 files changed, 14 insertions, 8 deletions
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 4623c3b0f..bf67a6702 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -156,16 +156,24 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
presentationMode = TelecomManager.PRESENTATION_ALLOWED;
}
- final ContactCacheEntry cacheEntry = buildEntry(mContext, callId,
- callerInfo, presentationMode, isIncoming);
+ ContactCacheEntry cacheEntry = mInfoMap.get(callId);
+ // Rebuild the entry from the new data if:
+ // 1) This is NOT the asynchronous local lookup (IOW, this is the first pass)
+ // 2) The local lookup was done and the contact exists
+ // 3) The existing cached entry is empty (no name).
+ if (!didLocalLookup || callerInfo.contactExists ||
+ (cacheEntry != null && TextUtils.isEmpty(cacheEntry.name))) {
+ cacheEntry = buildEntry(mContext, callId, callerInfo, presentationMode, isIncoming);
+ mInfoMap.put(callId, cacheEntry);
+ }
- // Add the contact info to the cache.
- mInfoMap.put(callId, cacheEntry);
sendInfoNotifications(callId, cacheEntry);
if (didLocalLookup) {
- if (!callerInfo.contactExists && cacheEntry.name == null &&
- mPhoneNumberService != null) {
+ // Before issuing a request for more data from other services, We only check that the
+ // contact wasn't found in the local DB. We don't check the if the cache entry already
+ // has a name because we allow overriding cnap data with data from other services.
+ if (!callerInfo.contactExists && mPhoneNumberService != null) {
Log.d(TAG, "Contact lookup. Local contacts miss, checking remote");
final PhoneNumberServiceListener listener = new PhoneNumberServiceListener(callId);
mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener,
@@ -179,8 +187,6 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
} else {
if (callerInfo.contactExists) {
Log.d(TAG, "Contact lookup done. Local contact found, no image.");
- } else if (cacheEntry.name != null) {
- Log.d(TAG, "Contact lookup done. Special contact type.");
} else {
Log.d(TAG, "Contact lookup done. Local contact not found and"
+ " no remote lookup service available.");