BEGIN_PUBLIC
Automated rollback of changelist 172505648

Bug: 30225112
Test: None
PiperOrigin-RevId: 178815682
Change-Id: I1fe1eef49d587314d32e7125f5106769b3099ad3
diff --git a/java/com/android/incallui/CallerInfo.java b/java/com/android/incallui/CallerInfo.java
index 4a9cf21..6f8d192 100644
--- a/java/com/android/incallui/CallerInfo.java
+++ b/java/com/android/incallui/CallerInfo.java
@@ -192,145 +192,141 @@
    *
    * @param context the context used to retrieve string constants
    * @param contactRef the URI to attach to this CallerInfo object
-   * @param cursor the first matching object in the cursor is used to build the CallerInfo object.
+   * @param cursor the first object in the cursor is used to build the CallerInfo object.
    * @return the CallerInfo which contains the caller id for the given number. The returned
    *     CallerInfo is null if no number is supplied.
    */
   public static CallerInfo getCallerInfo(Context context, Uri contactRef, Cursor cursor) {
     CallerInfo info = new CallerInfo();
-    info.cachedPhoto = null;
-    info.contactExists = false;
-    info.contactRefUri = contactRef;
-    info.isCachedPhotoCurrent = false;
-    info.name = null;
-    info.needUpdate = false;
-    info.numberLabel = null;
-    info.numberType = 0;
-    info.phoneLabel = null;
     info.photoResource = 0;
+    info.phoneLabel = null;
+    info.numberType = 0;
+    info.numberLabel = null;
+    info.cachedPhoto = null;
+    info.isCachedPhotoCurrent = false;
+    info.contactExists = false;
     info.userType = ContactsUtils.USER_TYPE_CURRENT;
 
     Log.v(TAG, "getCallerInfo() based on cursor...");
 
-    if (cursor == null || !cursor.moveToFirst()) {
-      return info;
-    }
+    if (cursor != null) {
+      if (cursor.moveToFirst()) {
+        // TODO: photo_id is always available but not taken
+        // care of here. Maybe we should store it in the
+        // CallerInfo object as well.
 
-    // TODO: photo_id is always available but not taken
-    // care of here. Maybe we should store it in the
-    // CallerInfo object as well.
+        long contactId = 0L;
+        int columnIndex;
 
-    long contactId = 0L;
-    int columnIndex;
+        // Look for the name
+        columnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
+        if (columnIndex != -1) {
+          info.name = cursor.getString(columnIndex);
+        }
 
-    // If the cursor has the phone number column, find the one that matches the lookup number in the
-    // URI.
-    columnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
-    if (columnIndex != -1 && contactRef != null) {
-      cursor = PhoneNumberHelper.getCursorMatchForContactLookupUri(cursor, columnIndex, contactRef);
-      if (cursor != null) {
-        info.phoneNumber = cursor.getString(columnIndex);
-      } else {
-        return info;
+        // Look for the number
+        columnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
+        if (columnIndex != -1) {
+          info.phoneNumber = cursor.getString(columnIndex);
+        }
+
+        // Look for the normalized number
+        columnIndex = cursor.getColumnIndex(PhoneLookup.NORMALIZED_NUMBER);
+        if (columnIndex != -1) {
+          info.normalizedNumber = cursor.getString(columnIndex);
+        }
+
+        // Look for the label/type combo
+        columnIndex = cursor.getColumnIndex(PhoneLookup.LABEL);
+        if (columnIndex != -1) {
+          int typeColumnIndex = cursor.getColumnIndex(PhoneLookup.TYPE);
+          if (typeColumnIndex != -1) {
+            info.numberType = cursor.getInt(typeColumnIndex);
+            info.numberLabel = cursor.getString(columnIndex);
+            info.phoneLabel =
+                Phone.getTypeLabel(context.getResources(), info.numberType, info.numberLabel)
+                    .toString();
+          }
+        }
+
+        // cache the lookup key for later use to create lookup URIs
+        columnIndex = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY);
+        if (columnIndex != -1) {
+          info.lookupKeyOrNull = cursor.getString(columnIndex);
+        }
+
+        // Look for the person_id.
+        columnIndex = getColumnIndexForPersonId(contactRef, cursor);
+        if (columnIndex != -1) {
+          contactId = cursor.getLong(columnIndex);
+          // QuickContacts in M doesn't support enterprise contact id
+          if (contactId != 0
+              && (VERSION.SDK_INT >= VERSION_CODES.N
+                  || !Contacts.isEnterpriseContactId(contactId))) {
+            info.contactIdOrZero = contactId;
+            Log.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero);
+          }
+        } else {
+          // No valid columnIndex, so we can't look up person_id.
+          Log.v(TAG, "Couldn't find contactId column for " + contactRef);
+          // Watch out: this means that anything that depends on
+          // person_id will be broken (like contact photo lookups in
+          // the in-call UI, for example.)
+        }
+
+        // Display photo URI.
+        columnIndex = cursor.getColumnIndex(PhoneLookup.PHOTO_URI);
+        if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
+          info.contactDisplayPhotoUri = Uri.parse(cursor.getString(columnIndex));
+        } else {
+          info.contactDisplayPhotoUri = null;
+        }
+
+        // look for the custom ringtone, create from the string stored
+        // in the database.
+        columnIndex = cursor.getColumnIndex(PhoneLookup.CUSTOM_RINGTONE);
+        if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
+          if (TextUtils.isEmpty(cursor.getString(columnIndex))) {
+            // make it consistent with frameworks/base/.../CallerInfo.java
+            info.contactRingtoneUri = Uri.EMPTY;
+          } else {
+            info.contactRingtoneUri = Uri.parse(cursor.getString(columnIndex));
+          }
+        } else {
+          info.contactRingtoneUri = null;
+        }
+
+        // look for the send to voicemail flag, set it to true only
+        // under certain circumstances.
+        columnIndex = cursor.getColumnIndex(PhoneLookup.SEND_TO_VOICEMAIL);
+        info.shouldSendToVoicemail = (columnIndex != -1) && ((cursor.getInt(columnIndex)) == 1);
+        info.contactExists = true;
+
+        // Determine userType by directoryId and contactId
+        final String directory =
+            contactRef == null
+                ? null
+                : contactRef.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY);
+        Long directoryId = null;
+        if (directory != null) {
+          try {
+            directoryId = Long.parseLong(directory);
+          } catch (NumberFormatException e) {
+            // do nothing
+          }
+        }
+        info.userType = ContactsUtils.determineUserType(directoryId, contactId);
+
+        info.nameAlternative =
+            ContactInfoHelper.lookUpDisplayNameAlternative(
+                context, info.lookupKeyOrNull, info.userType, directoryId);
       }
+      cursor.close();
     }
 
-    // Look for the name
-    columnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
-    if (columnIndex != -1) {
-      info.name = normalize(cursor.getString(columnIndex));
-    }
-
-    // Look for the normalized number
-    columnIndex = cursor.getColumnIndex(PhoneLookup.NORMALIZED_NUMBER);
-    if (columnIndex != -1) {
-      info.normalizedNumber = cursor.getString(columnIndex);
-    }
-
-    // Look for the label/type combo
-    columnIndex = cursor.getColumnIndex(PhoneLookup.LABEL);
-    if (columnIndex != -1) {
-      int typeColumnIndex = cursor.getColumnIndex(PhoneLookup.TYPE);
-      if (typeColumnIndex != -1) {
-        info.numberType = cursor.getInt(typeColumnIndex);
-        info.numberLabel = cursor.getString(columnIndex);
-        info.phoneLabel =
-            Phone.getTypeLabel(context.getResources(), info.numberType, info.numberLabel)
-                .toString();
-      }
-    }
-
-    // cache the lookup key for later use to create lookup URIs
-    columnIndex = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY);
-    if (columnIndex != -1) {
-      info.lookupKeyOrNull = cursor.getString(columnIndex);
-    }
-
-    // Look for the person_id.
-    columnIndex = getColumnIndexForPersonId(contactRef, cursor);
-    if (columnIndex != -1) {
-      contactId = cursor.getLong(columnIndex);
-      // QuickContacts in M doesn't support enterprise contact id
-      if (contactId != 0
-          && (VERSION.SDK_INT >= VERSION_CODES.N || !Contacts.isEnterpriseContactId(contactId))) {
-        info.contactIdOrZero = contactId;
-        Log.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero);
-      }
-    } else {
-      // No valid columnIndex, so we can't look up person_id.
-      Log.v(TAG, "Couldn't find contactId column for " + contactRef);
-      // Watch out: this means that anything that depends on
-      // person_id will be broken (like contact photo lookups in
-      // the in-call UI, for example.)
-    }
-
-    // Display photo URI.
-    columnIndex = cursor.getColumnIndex(PhoneLookup.PHOTO_URI);
-    if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
-      info.contactDisplayPhotoUri = Uri.parse(cursor.getString(columnIndex));
-    } else {
-      info.contactDisplayPhotoUri = null;
-    }
-
-    // look for the custom ringtone, create from the string stored
-    // in the database.
-    columnIndex = cursor.getColumnIndex(PhoneLookup.CUSTOM_RINGTONE);
-    if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
-      if (TextUtils.isEmpty(cursor.getString(columnIndex))) {
-        // make it consistent with frameworks/base/.../CallerInfo.java
-        info.contactRingtoneUri = Uri.EMPTY;
-      } else {
-        info.contactRingtoneUri = Uri.parse(cursor.getString(columnIndex));
-      }
-    } else {
-      info.contactRingtoneUri = null;
-    }
-
-    // look for the send to voicemail flag, set it to true only
-    // under certain circumstances.
-    columnIndex = cursor.getColumnIndex(PhoneLookup.SEND_TO_VOICEMAIL);
-    info.shouldSendToVoicemail = (columnIndex != -1) && ((cursor.getInt(columnIndex)) == 1);
-    info.contactExists = true;
-
-    // Determine userType by directoryId and contactId
-    final String directory =
-        contactRef == null
-            ? null
-            : contactRef.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY);
-    Long directoryId = null;
-    if (directory != null) {
-      try {
-        directoryId = Long.parseLong(directory);
-      } catch (NumberFormatException e) {
-        // do nothing
-      }
-    }
-    info.userType = ContactsUtils.determineUserType(directoryId, contactId);
-
-    info.nameAlternative =
-        ContactInfoHelper.lookUpDisplayNameAlternative(
-            context, info.lookupKeyOrNull, info.userType, directoryId);
-    cursor.close();
+    info.needUpdate = false;
+    info.name = normalize(info.name);
+    info.contactRefUri = contactRef;
 
     return info;
   }
@@ -510,7 +506,6 @@
       Log.e(TAG, "Cannot access VoiceMail.", se);
     }
     // TODO: There is no voicemail picture?
-
     // photoResource = android.R.drawable.badge_voicemail;
     return this;
   }