Allow 1st party app to set Line 1 number for display purpose.

After the number is set, TelephonyManager.getLine1Number will actually
return this one instead of the actual MSISDN/MDN.

Bug: 11900806
Change-Id: I4df3fac7b483ddae2bbda14b5a85629486e400cf
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index dad9cee..8e03568 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -59,6 +59,7 @@
 import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.dataconnection.DctController;
+import com.android.internal.telephony.uicc.AdnRecord;
 import com.android.internal.telephony.uicc.IccIoResult;
 import com.android.internal.telephony.uicc.IccUtils;
 import com.android.internal.telephony.uicc.UiccCarrierPrivilegeRules;
@@ -127,6 +128,7 @@
      * subscription.
      */
     Set<Long> mSimplifiedNetworkSettings;
+    Map<Long, AdnRecord> mAdnRecordsForDisplay;
 
     /**
      * A request object to use for transmitting data to an ICC.
@@ -567,6 +569,7 @@
         mSimplifiedNetworkSettings = new HashSet<Long>();
         mAppOps = (AppOpsManager)app.getSystemService(Context.APP_OPS_SERVICE);
         mMainThreadHandler = new MainThreadHandler();
+        mAdnRecordsForDisplay = new HashMap<Long, AdnRecord>();
         publish();
     }
 
@@ -1734,4 +1737,36 @@
         enforceReadPermission();
         return mSimplifiedNetworkSettings.contains(subId);
     }
+
+    @Override
+    public void setLine1NumberForDisplay(long subId, String alphaTag, String number) {
+        enforceModifyPermission();
+        mAdnRecordsForDisplay.put(subId, new AdnRecord(alphaTag, number));
+    }
+
+    @Override
+    public String getLine1NumberForDisplay(long subId) {
+        enforceReadPermission();
+        if (!mAdnRecordsForDisplay.containsKey(subId)) {
+            return null;
+        }
+        AdnRecord adnRecord = mAdnRecordsForDisplay.get(subId);
+        if (adnRecord.getNumber() == null || adnRecord.getNumber().isEmpty()) {
+            return null;
+        }
+        return adnRecord.getNumber();
+    }
+
+    @Override
+    public String getLine1AlphaTagForDisplay(long subId) {
+        enforceReadPermission();
+        if (!mAdnRecordsForDisplay.containsKey(subId)) {
+            return null;
+        }
+        AdnRecord adnRecord = mAdnRecordsForDisplay.get(subId);
+        if (adnRecord.getAlphaTag() == null || adnRecord.getAlphaTag().isEmpty()) {
+            return null;
+        }
+        return adnRecord.getAlphaTag();
+    }
 }