Merge "Fixed call duration bug."
diff --git a/java/com/android/dialer/calllogutils/CallLogDurations.java b/java/com/android/dialer/calllogutils/CallLogDurations.java
index 20998de..9ed8a93 100644
--- a/java/com/android/dialer/calllogutils/CallLogDurations.java
+++ b/java/com/android/dialer/calllogutils/CallLogDurations.java
@@ -20,9 +20,7 @@
 import android.content.res.Resources;
 import android.text.format.Formatter;
 import com.android.dialer.util.DialerUtils;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -30,6 +28,10 @@
 public class CallLogDurations {
 
   private static CharSequence formatDuration(Context context, long elapsedSeconds) {
+    // Getting this method into a good state took a bunch of work between eng, i18n team and
+    // translators. If at all possible, the strings should not be changed or updated.
+    long minutes = TimeUnit.SECONDS.toMinutes(elapsedSeconds);
+    long seconds = elapsedSeconds - TimeUnit.MINUTES.toSeconds(minutes);
     Resources res = context.getResources();
     String formatPattern;
     if (elapsedSeconds >= 60) {
@@ -38,35 +40,22 @@
       // example output: "1m 1s"
       formatPattern =
           context.getString(
-              R.string.call_duration_format_pattern, "m", minutesString, "s", secondsString);
+              R.string.call_duration_format_pattern,
+              Long.toString(minutes),
+              minutesString,
+              Long.toString(seconds),
+              secondsString);
     } else {
       String secondsString = res.getString(R.string.call_details_seconds_abbreviation);
       // example output: "1s"
       formatPattern =
-          context.getString(R.string.call_duration_short_format_pattern, "s", secondsString);
-
-      // Temporary work around for a broken Hebrew(iw) translation.
-      if (formatPattern.endsWith("\'\'")) {
-        formatPattern = formatPattern.substring(0, formatPattern.length() - 1);
-      }
+          context.getString(
+              R.string.call_duration_short_format_pattern, Long.toString(seconds), secondsString);
     }
 
-    // If new translation issues arise, we should catch them here to prevent crashes.
-    try {
-      Date date = new Date(TimeUnit.SECONDS.toMillis(elapsedSeconds));
-      SimpleDateFormat format = new SimpleDateFormat(formatPattern);
-      String duration = format.format(date);
-
-      // SimpleDateFormat cannot display more than 59 minutes, instead it displays MINUTES % 60.
-      // Here we check for that value and replace it with the correct value.
-      if (elapsedSeconds >= TimeUnit.MINUTES.toSeconds(60)) {
-        int minutes = (int) (elapsedSeconds / 60);
-        duration = duration.replaceFirst(Integer.toString(minutes % 60), Integer.toString(minutes));
-      }
-      return duration;
-    } catch (Exception e) {
-      return "";
-    }
+    // Since we don't want to update the strings.xml, we need to remove the quotations from the
+    // previous implementation.
+    return formatPattern.replace("\'", "");
   }
 
   private static CharSequence formatDurationA11y(Context context, long elapsedSeconds) {