From 37295b9c31eca606c9af23db0bc0a9acc4a48cdd Mon Sep 17 00:00:00 2001 From: Santos Cordon Date: Thu, 9 Oct 2014 15:21:12 -0700 Subject: Dont overwrite cnap name with a failed local lookup. Bug: 17916730 Change-Id: Iec19b5d02611b1cde23b57822157f278ae26d3ae --- .../src/com/android/incallui/ContactInfoCache.java | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'InCallUI') 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."); -- cgit v1.2.3