summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
authorVictor Chang <vichang@google.com>2016-02-10 10:59:12 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-02-10 10:59:12 +0000
commit1b46f30dc26771bf5be59afb26aaf51ae0dc9f04 (patch)
treebb7d2aec1ed7391611242adf446ea47330a7c10c /InCallUI
parentb26dae0f4e7e51d5cfa37a510e863ab534cb229b (diff)
parent67d3e7007e05ba68816b165c81eb9b16962db46b (diff)
Merge "Make work badge in call log consistent with InCall"
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java42
1 files changed, 25 insertions, 17 deletions
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index 8d45efb97..4714af492 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -471,15 +471,15 @@ public class CallerInfoAsyncQuery {
private static final class DirectoryQueryCompleteListenerFactory {
// Make sure listener to be called once and only once
- int mCount;
- boolean mIsListenerCalled;
- OnQueryCompleteListener mListener;
- Context mContext;
- CachedNumberLookupService mCachedNumberLookupService =
+ private int mCount;
+ private boolean mIsListenerCalled;
+ private final OnQueryCompleteListener mListener;
+ private final Context mContext;
+ private final CachedNumberLookupService mCachedNumberLookupService =
ObjectFactory.newCachedNumberLookupService();
private class DirectoryQueryCompleteListener implements OnQueryCompleteListener {
- long mDirectoryId;
+ private final long mDirectoryId;
DirectoryQueryCompleteListener(long directoryId) {
mDirectoryId = directoryId;
@@ -487,26 +487,20 @@ public class CallerInfoAsyncQuery {
@Override
public void onQueryComplete(int token, Object cookie, CallerInfo ci) {
- if (ci.contactExists && mCachedNumberLookupService != null) {
- CachedContactInfo cachedContactInfo =
- CallerInfoUtils.buildCachedContactInfo(mCachedNumberLookupService, ci);
- String directoryLabel = mContext.getString(R.string.directory_search_label);
- cachedContactInfo.setDirectorySource(directoryLabel, mDirectoryId);
- mCachedNumberLookupService.addContact(mContext, cachedContactInfo);
- }
-
- callListenerIfNecessary(token, cookie, ci);
+ onDirectoryQueryComplete(token, cookie, ci, mDirectoryId);
}
}
- DirectoryQueryCompleteListenerFactory(Context context, int size, OnQueryCompleteListener listener) {
+ DirectoryQueryCompleteListenerFactory(Context context, int size,
+ OnQueryCompleteListener listener) {
mCount = size;
mListener = listener;
mIsListenerCalled = false;
mContext = context;
}
- private void callListenerIfNecessary(int token, Object cookie, CallerInfo ci) {
+ private void onDirectoryQueryComplete(int token, Object cookie, CallerInfo ci,
+ long directoryId) {
boolean shouldCallListener = false;
synchronized (this) {
mCount = mCount - 1;
@@ -515,11 +509,25 @@ public class CallerInfoAsyncQuery {
shouldCallListener = true;
}
}
+
+ // Don't call callback in synchronized block because mListener.onQueryComplete may
+ // take long time to complete
if (shouldCallListener && mListener != null) {
+ addCallerInfoIntoCache(ci, directoryId);
mListener.onQueryComplete(token, cookie, ci);
}
}
+ private void addCallerInfoIntoCache(CallerInfo ci, long directoryId) {
+ if (ci.contactExists && mCachedNumberLookupService != null) {
+ CachedContactInfo cachedContactInfo = CallerInfoUtils
+ .buildCachedContactInfo(mCachedNumberLookupService, ci);
+ String directoryLabel = mContext.getString(R.string.directory_search_label);
+ cachedContactInfo.setDirectorySource(directoryLabel, directoryId);
+ mCachedNumberLookupService.addContact(mContext, cachedContactInfo);
+ }
+ }
+
public OnQueryCompleteListener newListener(long directoryId) {
return new DirectoryQueryCompleteListener(directoryId);
}