am c089b0d2: Change cached info to interface

* commit 'c089b0d2b1bf1bd511cd54dc51d9186b6ce41681':
  Change cached info to interface
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 64484cb..bcba9ff 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -30,6 +30,7 @@
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialerbind.ObjectFactory;
 
 import org.json.JSONException;
@@ -228,7 +229,9 @@
         if (info != null && info != ContactInfo.EMPTY) {
             info.formattedNumber = formatPhoneNumber(number, null, countryIso);
         } else if (mCachedNumberLookupService != null) {
-            info = mCachedNumberLookupService.lookupCachedContactFromNumber(mContext, number);
+            CachedContactInfo cacheInfo = mCachedNumberLookupService
+                .lookupCachedContactFromNumber(mContext, number);
+            info = cacheInfo != null ? cacheInfo.getContactInfo() : null;
         }
         return info;
     }
diff --git a/src/com/android/dialer/list/RegularSearchFragment.java b/src/com/android/dialer/list/RegularSearchFragment.java
index 2a80b3e..21c8c31 100644
--- a/src/com/android/dialer/list/RegularSearchFragment.java
+++ b/src/com/android/dialer/list/RegularSearchFragment.java
@@ -49,7 +49,7 @@
             final RegularSearchListAdapter adapter =
                 (RegularSearchListAdapter) getAdapter();
             mCachedNumberLookupService.addContact(getContext(),
-                    adapter.getContactInfo(position));
+                    adapter.getContactInfo(mCachedNumberLookupService, position));
         }
     }
 }
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index 05af3c7..d0617b7 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -23,6 +23,8 @@
 
 import com.android.contacts.common.list.DirectoryPartition;
 import com.android.contacts.common.list.PhoneNumberListAdapter;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
 
 /**
@@ -34,8 +36,10 @@
         super(context);
     }
 
-    public CachedContactInfo getContactInfo(int position) {
-        CachedContactInfo info = new CachedContactInfo();
+    public CachedContactInfo getContactInfo(
+            CachedNumberLookupService lookupService, int position) {
+        ContactInfo info = new ContactInfo();
+        CachedContactInfo cacheInfo = lookupService.buildCachedContactInfo(info);
         final Cursor item = (Cursor) getItem(position);
         if (item != null) {
             info.name = item.getString(PhoneQuery.DISPLAY_NAME);
@@ -44,19 +48,21 @@
             info.number = item.getString(PhoneQuery.PHONE_NUMBER);
             final String photoUriStr = item.getString(PhoneQuery.PHOTO_URI);
             info.photoUri = photoUriStr == null ? null : Uri.parse(photoUriStr);
-            info.lookupKey = item.getString(PhoneQuery.LOOKUP_KEY);
+
+            cacheInfo.setLookupKey(item.getString(PhoneQuery.LOOKUP_KEY));
 
             final int partitionIndex = getPartitionForPosition(position);
             final DirectoryPartition partition =
                 (DirectoryPartition) getPartition(partitionIndex);
             final long directoryId = partition.getDirectoryId();
-            info.sourceName = partition.getLabel();
-            info.sourceType = isExtendedDirectory(directoryId) ?
-                CachedContactInfo.SOURCE_TYPE_EXTENDED :
-                CachedContactInfo.SOURCE_TYPE_DIRECTORY;
-            info.sourceId = (int) directoryId;
+            final String sourceName = partition.getLabel();
+            if (isExtendedDirectory(directoryId)) {
+                cacheInfo.setExtendedSource(sourceName, directoryId);
+            } else {
+                cacheInfo.setDirectorySource(sourceName, directoryId);
+            }
         }
-        return info;
+        return cacheInfo;
     }
 
     @Override
diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java
index cba158b..62881d2 100644
--- a/src/com/android/dialer/service/CachedNumberLookupService.java
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -7,29 +7,27 @@
 
 public interface CachedNumberLookupService {
 
-    public class CachedContactInfo extends ContactInfo {
-        public static final int SOURCE_TYPE_DIRECTORY = 1;
-        public static final int SOURCE_TYPE_EXTENDED = 2;
-        public static final int SOURCE_TYPE_PLACES = 3;
-        public static final int SOURCE_TYPE_PROFILE = 4;
+    public interface CachedContactInfo {
+        public ContactInfo getContactInfo();
 
-        public String sourceName;
-        public int    sourceType;
-        public int    sourceId;
-        public String lookupKey;
+        public void setDirectorySource(String name, long directoryId);
+        public void setExtendedSource(String name, long directoryId);
+        public void setLookupKey(String lookupKey);
     }
 
+    public CachedContactInfo buildCachedContactInfo(ContactInfo info);
+
     /**
      * Perform a lookup using the cached number lookup service to return contact
      * information stored in the cache that corresponds to the given number.
      *
      * @param context Valid context
      * @param number Phone number to lookup the cache for
-     * @return A {@link ContactInfo} containing the contact information if the phone
+     * @return A {@link CachedContactInfo} containing the contact information if the phone
      * number is found in the cache, {@link ContactInfo#EMPTY} if the phone number was
      * not found in the cache, and null if there was an error when querying the cache.
      */
-    public ContactInfo lookupCachedContactFromNumber(Context context, String number);
+    public CachedContactInfo lookupCachedContactFromNumber(Context context, String number);
 
     public void addContact(Context context, CachedContactInfo info);