Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eaaf3961 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Avoid emitting broken ASCII.

Bug: 6131887
Change-Id: Iff13573aad8128cc7ae3613ab718c81e6d0862a1
parent 971a3cfa
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package android.util;

import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.text.format.DateUtils;

import com.android.internal.util.XmlUtils;

import libcore.util.ZoneInfoDB;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

@@ -28,10 +30,10 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.TimeZone;
import java.util.Date;
import java.util.TimeZone;

import com.android.internal.util.XmlUtils;
import libcore.util.ZoneInfoDB;

/**
 * A class containing utility methods related to time zones.
@@ -245,6 +247,8 @@ public class TimeUtils {
    private static final Object sFormatSync = new Object();
    private static char[] sFormatStr = new char[HUNDRED_DAY_FIELD_LEN+5];

    private static final long LARGEST_DURATION = (1000 * DateUtils.DAY_IN_MILLIS) - 1;

    static private int accumField(int amt, int suffix, boolean always, int zeropad) {
        if (amt > 99 || (always && zeropad >= 3)) {
            return 3+suffix;
@@ -307,6 +311,10 @@ public class TimeUtils {
            duration = -duration;
        }

        if (duration > LARGEST_DURATION) {
            duration = LARGEST_DURATION;
        }

        int millis = (int)(duration%1000);
        int seconds = (int) Math.floor(duration / 1000);
        int days = 0, hours = 0, minutes = 0;
+7 −2
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@ package android.util;

import junit.framework.TestCase;

import android.util.TimeUtils;

import java.util.Calendar;
import java.util.TimeZone;

@@ -442,6 +440,13 @@ public class TimeUtilsTest extends TestCase {
        assertFormatDuration("+10s24ms", 10024);
    }

    public void testFormatHugeDuration() {
        //assertFormatDuration("+15542d1h11m11s555ms", 1342833071555L);
        // TODO: improve formatDuration() API
        assertFormatDuration("+999d23h59m59s999ms", 1342833071555L);
        assertFormatDuration("-999d23h59m59s999ms", -1342833071555L);
    }

    private void assertFormatDuration(String expected, long duration) {
        StringBuilder sb = new StringBuilder();
        TimeUtils.formatDuration(duration, sb);