Don't manually create CallerInfo objects from SipPhone

Currently the SipPhone class manually creates a CallerInfo object, and
populates it with very basic info from the SIP address, when making an
outgoing call.

But this is no longer needed, now that we do caller-id lookup properly for
SIP addresses (based on real data from the contacts database -- see
bug 3004127 and change https://android-git.corp.google.com/g/70555).
And in fact the presence of this initial CallerInfo object actually
*disabled* contacts lookup for outgoing calls (bug 3072731).

This change removes all that CallerInfo-related stuff from SipPhone.

(Thus SipPhone is now consistent with the other phone objects, like
GSMPhone and CDMAPhone, in that it doesn't muck with CallerInfo data at
all, but instead lets the phone app do it.)

Also, update isUriNumber() to handle "%40" in case the passed-in string is
URI-escaped.  (Nobody depends on that now, but it may be needed in the
future, and it's certainly safe to say that "%40" will never be found in a
legal PSTN number.)

TESTED:
  - Outgoing SIP call:
    - In-call UI shows correct contact info
    - After the call, Call Log shows correct contact info

  - Incoming SIP call:
    - In-call UI shows correct contact info
    - After the call, Call Log shows correct contact info

  - PSTN calls:
    - correct contact info everywhere

Bug: 3072731

Change-Id: I51434e4e5ad66d2e8ff51fc220001fb74485f0f5
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index b4a3c95..5542c42 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -1649,12 +1649,19 @@
     }
 
     /**
+     * Determines if the specified number is actually a URI
+     * (i.e. a SIP address) rather than a regular PSTN phone number,
+     * based on whether or not the number contains an "@" character.
+     *
      * @hide
      * @param number
      * @return true if number contains @
      */
     public static boolean isUriNumber(String number) {
-        return number != null && number.contains("@");
+        // Note we allow either "@" or "%40" to indicate a URI, in case
+        // the passed-in string is URI-escaped.  (Neither "@" nor "%40"
+        // will ever be found in a legal PSTN number.)
+        return number != null && (number.contains("@") || number.contains("%40"));
     }
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java
index 02af0ed..67f13bd 100755
--- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java
+++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java
@@ -18,7 +18,6 @@
 
 import android.content.Context;
 import android.net.rtp.AudioGroup;
-import android.net.rtp.AudioStream;
 import android.net.sip.SipAudioCall;
 import android.net.sip.SipErrorCode;
 import android.net.sip.SipException;
@@ -29,11 +28,9 @@
 import android.os.Message;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.ServiceState;
-import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.internal.telephony.Call;
-import com.android.internal.telephony.CallerInfo;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.Phone;
@@ -382,40 +379,6 @@
             }
         }
 
-        private CallerInfo createCallerInfo(String number, SipProfile callee) {
-            SipProfile p = callee;
-            String name = p.getDisplayName();
-            if (TextUtils.isEmpty(name)) name = p.getUserName();
-            CallerInfo info = new CallerInfo();
-            info.name = name;
-            info.phoneNumber = number;
-            if (DEBUG) {
-                Log.d(LOG_TAG, "create caller info from scratch:");
-                Log.d(LOG_TAG, "     name: " + info.name);
-                Log.d(LOG_TAG, "     numb: " + info.phoneNumber);
-            }
-            return info;
-        }
-
-        // from contacts
-        private CallerInfo findCallerInfo(String number) {
-            CallerInfo info = CallerInfo.getCallerInfo(mContext, number);
-            if ((info == null) || (info.name == null)) return null;
-            if (DEBUG) {
-                Log.d(LOG_TAG, "got caller info from contact:");
-                Log.d(LOG_TAG, "     name: " + info.name);
-                Log.d(LOG_TAG, "     numb: " + info.phoneNumber);
-                Log.d(LOG_TAG, "     pres: " + info.numberPresentation);
-            }
-            return info;
-        }
-
-        private CallerInfo getCallerInfo(String number, SipProfile callee) {
-            CallerInfo info = findCallerInfo(number);
-            if (info == null) info = createCallerInfo(number, callee);
-            return info;
-        }
-
         Connection dial(String originalNumber) throws SipException {
             String calleeSipUri = originalNumber;
             if (!calleeSipUri.contains("@")) {
@@ -424,8 +387,7 @@
             try {
                 SipProfile callee =
                         new SipProfile.Builder(calleeSipUri).build();
-                CallerInfo info = getCallerInfo(originalNumber, callee);
-                SipConnection c = new SipConnection(this, callee, info);
+                SipConnection c = new SipConnection(this, callee);
                 connections.add(c);
                 c.dial();
                 setState(Call.State.DIALING);
@@ -461,10 +423,7 @@
 
         void initIncomingCall(SipAudioCall sipAudioCall, boolean makeCallWait) {
             SipProfile callee = sipAudioCall.getPeerProfile();
-            CallerInfo info = findCallerInfo(getUriString(callee));
-            if (info == null) info = findCallerInfo(callee.getUserName());
-            if (info == null) info = findCallerInfo(callee.getDisplayName());
-            SipConnection c = new SipConnection(this, callee, info);
+            SipConnection c = new SipConnection(this, callee);
             connections.add(c);
 
             Call.State newState = makeCallWait ? State.WAITING : State.INCOMING;
@@ -700,12 +659,10 @@
             }
         };
 
-        public SipConnection(SipCall owner, SipProfile callee,
-                CallerInfo info) {
+        public SipConnection(SipCall owner, SipProfile callee) {
             super(getUriString(callee));
             mOwner = owner;
             mPeer = callee;
-            setUserData(info);
         }
 
         void initIncomingCall(SipAudioCall sipAudioCall, Call.State newState) {