Keep original phone number in SipConnection.

In case it's a PSTN number carried by an Internet call, the phone app can still
get the original phone number from Connection.getAddress() instead of getting a
SIP URI.

http://b/issue?id=3085996

Change-Id: Ie6c66100a4b5b2ce3f73baa1b446761cd51d7727
diff --git a/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java b/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java
index dc4b27b..d546a08 100644
--- a/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java
+++ b/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java
@@ -56,8 +56,8 @@
     private DisconnectCause mCause = DisconnectCause.NOT_DISCONNECTED;
     private PostDialState postDialState = PostDialState.NOT_STARTED;
 
-    SipConnectionBase(String calleeSipUri) {
-        dialString = calleeSipUri;
+    SipConnectionBase(String dialString) {
+        this.dialString = dialString;
 
         postDialString = PhoneNumberUtils.extractPostDialPortion(dialString);
 
diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java
index 67f13bd..1968552 100755
--- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java
+++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java
@@ -387,7 +387,8 @@
             try {
                 SipProfile callee =
                         new SipProfile.Builder(calleeSipUri).build();
-                SipConnection c = new SipConnection(this, callee);
+                SipConnection c = new SipConnection(this, callee,
+                        originalNumber);
                 connections.add(c);
                 c.dial();
                 setState(Call.State.DIALING);
@@ -578,6 +579,7 @@
         private SipAudioCall mSipAudioCall;
         private Call.State mState = Call.State.IDLE;
         private SipProfile mPeer;
+        private String mOriginalNumber; // may be a PSTN number
         private boolean mIncoming = false;
 
         private SipAudioCallAdapter mAdapter = new SipAudioCallAdapter() {
@@ -659,10 +661,16 @@
             }
         };
 
-        public SipConnection(SipCall owner, SipProfile callee) {
-            super(getUriString(callee));
+        public SipConnection(SipCall owner, SipProfile callee,
+                String originalNumber) {
+            super(originalNumber);
             mOwner = owner;
             mPeer = callee;
+            mOriginalNumber = originalNumber;
+        }
+
+        public SipConnection(SipCall owner, SipProfile callee) {
+            this(owner, callee, getUriString(callee));
         }
 
         void initIncomingCall(SipAudioCall sipAudioCall, Call.State newState) {
@@ -735,7 +743,10 @@
 
         @Override
         public String getAddress() {
-            return getUriString(mPeer);
+            // Phone app uses this to query caller ID. Return the original dial
+            // number (which may be a PSTN number) instead of the peer's SIP
+            // URI.
+            return mOriginalNumber;
         }
 
         @Override