Display "Emergency number" in the call log for emergency numbers

This CL updates the call log to show "Emergency number" for call log rows from
numbers that PhoneNumberUtils.isEmergencyNumber considers to be emergency
numbers.

Bug: 66926712
Test: Manual, see above
PiperOrigin-RevId: 189953302
Change-Id: Ibaae243ead8b918a26f6058164316e042a4f82fd
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index b88a959..096488a 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -27,6 +27,7 @@
 import android.support.v4.content.ContextCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
 import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -199,20 +200,7 @@
       views.callAccountLabel.setVisibility(View.GONE);
     }
 
-    final CharSequence nameText;
-    final CharSequence displayNumber = details.displayNumber;
-    if (TextUtils.isEmpty(details.getPreferredName())) {
-      nameText = displayNumber;
-      // We have a real phone number as "nameView" so make it always LTR
-      views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
-    } else {
-      nameText = details.getPreferredName();
-      // "nameView" is updated from phone number to contact name after number matching.
-      // Since TextDirection remains at View.TEXT_DIRECTION_LTR, initialize it.
-      views.nameView.setTextDirection(View.TEXT_DIRECTION_INHERIT);
-    }
-
-    views.nameView.setText(nameText);
+    setNameView(views, details);
 
     if (isVoicemail) {
       int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
@@ -282,6 +270,26 @@
             details.isRead ? R.color.call_log_detail_color : R.color.call_log_unread_text_color));
   }
 
+  private void setNameView(PhoneCallDetailsViews views, PhoneCallDetails details) {
+    if (!TextUtils.isEmpty(details.getPreferredName())) {
+      views.nameView.setText(details.getPreferredName());
+      // "nameView" is updated from phone number to contact name after number matching.
+      // Since TextDirection remains at View.TEXT_DIRECTION_LTR, initialize it.
+      views.nameView.setTextDirection(View.TEXT_DIRECTION_INHERIT);
+      return;
+    }
+
+    if (PhoneNumberUtils.isEmergencyNumber(details.number.toString())) {
+      views.nameView.setText(R.string.emergency_number);
+      views.nameView.setTextDirection(View.TEXT_DIRECTION_INHERIT);
+      return;
+    }
+
+    views.nameView.setText(details.displayNumber);
+    // We have a real phone number as "nameView" so make it always LTR
+    views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
+  }
+
   private boolean shouldShowTranscriptionRating(
       int transcriptionState, PhoneAccountHandle account) {
     if (transcriptionState != VoicemailCompat.TRANSCRIPTION_AVAILABLE) {
@@ -548,24 +556,6 @@
     return currentYear != calendar.get(Calendar.YEAR);
   }
 
-  /** Sets the text of the header view for the details page of a phone call. */
-  public void setCallDetailsHeader(TextView nameView, PhoneCallDetails details) {
-    final CharSequence nameText;
-    if (!TextUtils.isEmpty(details.namePrimary)) {
-      nameText = details.namePrimary;
-    } else if (!TextUtils.isEmpty(details.displayNumber)) {
-      nameText = details.displayNumber;
-    } else {
-      nameText = resources.getString(R.string.unknown);
-    }
-
-    nameView.setText(nameText);
-  }
-
-  public void setCurrentTimeForTest(long currentTimeMillis) {
-    currentTimeMillisForTest = currentTimeMillis;
-  }
-
   /**
    * Returns the current time in milliseconds since the epoch.
    *
diff --git a/java/com/android/dialer/theme/res/values/strings.xml b/java/com/android/dialer/theme/res/values/strings.xml
index 6194751..bab05ed 100644
--- a/java/com/android/dialer/theme/res/values/strings.xml
+++ b/java/com/android/dialer/theme/res/values/strings.xml
@@ -26,6 +26,9 @@
   <!-- String used to display calls from pay phone in the call log -->
   <string name="payphone">Payphone</string>
 
+  <!-- String used to display calls from emergency numbers in the call log and incallui -->
+  <string name="emergency_number">Emergency number</string>
+
   <!-- Title for the activity that dials the phone.  This is the name
        used in the Launcher icon. -->
   <string name="launcherActivityLabel">Phone</string>
diff --git a/java/com/android/incallui/CallerInfo.java b/java/com/android/incallui/CallerInfo.java
index fd9855f..0aedea5 100644
--- a/java/com/android/incallui/CallerInfo.java
+++ b/java/com/android/incallui/CallerInfo.java
@@ -485,7 +485,7 @@
    * @return this instance.
    */
   /* package */ CallerInfo markAsEmergency(Context context) {
-    name = context.getString(R.string.emergency_call_dialog_number_for_display);
+    name = context.getString(R.string.emergency_number);
     phoneNumber = null;
 
     isEmergency = true;
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index af61253..15cd2e0 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -172,9 +172,6 @@
   <!-- Label for "Manage conference call" panel [CHAR LIMIT=40] -->
   <string name="manageConferenceLabel" tools:ignore="UnusedResources">Manage conference call</string>
 
-  <!-- This can be used in any application wanting to disable the text "Emergency number" -->
-  <string name="emergency_call_dialog_number_for_display">Emergency number</string>
-
   <!-- Used to inform the user that a call was received via a number other than the primary
       phone number associated with their device. [CHAR LIMIT=16] -->
   <string name="child_number">via <xliff:g example="650-555-1212" id="child_number">%s</xliff:g></string>