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

Commit 2bbc19dd authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Avoid emitting broken ASCII."

parents 1c6b82b0 eaaf3961
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);