History log of /libcore/luni/src/main/java/java/util/TimeZone.java
Revision Date Author Comments
07349e9d1011192699a08e7a0553b3e0e88da103 29-Jul-2014 Neil Fuller <nfuller@google.com> Change the DateFormatSymbols serialized form

Adding locale to the serialized form of
DateFormatSymbols.

Some duplicated code around the generation of
numeric / offset timezone strings (e.g. GMT+08:00) has
been removed. A new hidden method has been added
to TimeZone to create this string.

The timezone string lookup has been moved into
LocaleData and it now has a single path rather
than treating the customZoneStrings path as special.

customZoneStrings has been removed from
DateFormatSymbols because it would potentially
have an incorrect value after serialization and
it is no longer required.

(cherry picked from commit f39e1d71b478bafac028043a59683dfbed1d9df0)

Bug: 16502916
Change-Id: Id5b18728dc5cd0656d77d67eb509beedcc52f893
f39e1d71b478bafac028043a59683dfbed1d9df0 29-Jul-2014 Neil Fuller <nfuller@google.com> Change the DateFormatSymbols serialized form

Adding locale to the serialized form of
DateFormatSymbols.

Some duplicated code around the generation of
numeric / offset timezone strings (e.g. GMT+08:00) has
been removed. A new hidden method has been added
to TimeZone to create this string.

The timezone string lookup has been moved into
LocaleData and it now has a single path rather
than treating the customZoneStrings path as special.

customZoneStrings has been removed from
DateFormatSymbols because it would potentially
have an incorrect value after serialization and
it is no longer required.

Bug: 16502916
Change-Id: I2b317e34ba4772beb372a75dd08c95113408b9cc
60226561d5af59bc47ee70a4988633050e6fc62e 17-Jul-2014 Neil Fuller <nfuller@google.com> Add a cache for ZoneInfo objects in Java

This mirrors the single-item cache in localtime.c.

This is in preparation for an upcoming change to migrate
android.format.text.Time over to Java. It will be making
use of the Java ZoneInfo instead of the native
equivalent.

The Java cache has a size of 1 like the bionic one,
though this can easily be increased.

Given the default TimeZone / ZoneInfo was always
pinned, in many cases the memory usage will not
go up noticeably. In scenarios where applications load
timezones besides the default a cache size of 1 potentially
increases pinned memory usage by one ZoneInfo plus
the overhead of the prototype object held by the cache
(which is never returned to callers).

An example ZoneInfo is "Europe/London", which has ~190
transitions (1 int + 1 byte) and ~6 types (1 int + 1 byte).
Overhead of other fields is ~ 13 bytes, plus the ID string.

190 * (4 + 1) + 6 * (4 + 1) + 13 = 993 bytes.

The prototypes held by the cache share the majority of their
memory with their clones returned from
ZoneInfo.makeTimeZone() and so the overhead of introducing
the cache itself should be in the order of a few tens of
bytes at most.

In future we may want to increase the cache size to 2 in
order to support apps that compare / switch timezones to
increase the odds of the default remaining in the cache.
Sizes above 2 look increasingly specialist.

LMP cherry-pick notes: This is a cherry-pick of the final
patch. In master, an original patch was reverted and then
the revert was reverted with an added fix. The comment
above is from the original commit. The fixed version
included:

Contains a fix for when the timezone ID is not found.
This includes a new test.

(cherry picked from d3d39ab8df5c4f6ae663613dc3617ba300282315)

Change-Id: I4c145942b6603e0e62badfd052b5716fd68769d2
d3d39ab8df5c4f6ae663613dc3617ba300282315 17-Jul-2014 Neil Fuller <nfuller@google.com> Revert "Revert "Add a cache for ZoneInfo objects in Java""

This reverts commit 01b6a878d10ee68db87c3d85d137e81a5257a78a.

Contains a fix for when the timezone ID is not found.
This includes a new test.

Change-Id: I2e5e669782ea6caf4e97153ed6b63ca6ee4ef50d
01b6a878d10ee68db87c3d85d137e81a5257a78a 17-Jul-2014 Neil Fuller <nfuller@google.com> Revert "Add a cache for ZoneInfo objects in Java"

This reverts commit a6e8689807f5a8bb9470ce7c26a47455d2d0608d.

Change-Id: I17a0262d169db3418f2f8888195381f778975dc4
a6e8689807f5a8bb9470ce7c26a47455d2d0608d 16-Jul-2014 Neil Fuller <nfuller@google.com> Add a cache for ZoneInfo objects in Java

This mirrors the single-item cache in localtime.c.

This is in preparation for an upcoming change to migrate
android.format.text.Time over to Java. It will be making
use of the Java ZoneInfo instead of the native
equivalent.

The Java cache has a size of 1 like the bionic one,
though this can easily be increased.

Given the default TimeZone / ZoneInfo was always
pinned, in many cases the memory usage will not
go up noticeably. In scenarios where applications load
timezones besides the default a cache size of 1 potentially
increases pinned memory usage by one ZoneInfo plus
the overhead of the prototype object held by the cache
(which is never returned to callers).

An example ZoneInfo is "Europe/London", which has ~190
transitions (1 int + 1 byte) and ~6 types (1 int + 1 byte).
Overhead of other fields is ~ 13 bytes, plus the ID string.

190 * (4 + 1) + 6 * (4 + 1) + 13 = 993 bytes.

The prototypes held by the cache share the majority of their
memory with their clones returned from
ZoneInfo.makeTimeZone() and so the overhead of introducing
the cache itself should be in the order of a few tens of
bytes at most.

In future we may want to increase the cache size to 2 in
order to support apps that compare / switch timezones to
increase the odds of the default remaining in the cache.
Sizes above 2 look increasingly specialist.

Change-Id: I0b7daa8ad5d334c8d421dfaa6e0421d3c181a915
7ebbf2f04e2d9692c4c00d87f4c41d2ed63a5669 23-Apr-2014 Neil Fuller <nfuller@google.com> Revert "Add 1.7 methods to TimeZone / SimpleTimeZone"

This reverts commit 15737123c4b241c331e0090d311afb9631c3cf1b.

See the conversation on the original change I45d89cf0f30b49bb77c6dcfdae1a81edea40a2d4
and Ifa0b89debb42a7181f1f5f188ae7175970286adb.

Trading this API change for one in FileLock which is more useful.
This API change was of questionable value.

Change-Id: I8cf977acceededfe3ee13bf91af3fe4f5b84cfc2
15737123c4b241c331e0090d311afb9631c3cf1b 12-Mar-2014 Neil Fuller <nfuller@google.com> Add 1.7 methods to TimeZone / SimpleTimeZone

The RI documents the required implementation.

Unlike the RI, SimpleTimeZone in Android does not override
the TimeZone implementation: it seems pointless to do so
given it appears to rely on the implementation details of
another method (inDaylightTime()) which can, itself, be
overridden.

Change-Id: I45d89cf0f30b49bb77c6dcfdae1a81edea40a2d4
1b5e1ff243e0f7f017e891020693cf371cd72964 26-Apr-2013 Elliott Hughes <enh@google.com> Fix vogar --mode device's fallback time zone.

Change-Id: Icf7a5ecb5aa7e1b4e6effe26e7a4a63807d18b1c
995caee51334a4f1a1429e29680ea079c900c37a 25-Apr-2013 Elliott Hughes <enh@google.com> Cope with a corrupt tzdata update.

We need to fall back to the next choice on error. Rewrite the code
to be testable and add some tests. Add an internal GMT-only
fallback in case all our sources of tzdata are bad. Also make
time zone detection on the host more useful.

Bug: 8373554
Change-Id: I9f91b844a61f07f34b268535e6d24aa0c301bf8d
ac7cf58962995825464af08ae6fa5e006c94f3fa 27-Feb-2013 Elliott Hughes <enh@google.com> Switch to using icu4c 50's TimeZoneNames API.

This takes us down from ~330ms/locale on prime to ~70ms/locale.

This also fixes a bug in DateFormatSymbols.getZoneStrings and adds a test
so we don't regress.

Change-Id: I13663a659666c0a7d87a299235b75fa4e9fef69d
cf101d4099424a8e1ea603da5ddefd067f154b57 04-Feb-2013 Elliott Hughes <enh@google.com> Fix date parsing for time zones without names.

Bug: 8128460
Change-Id: I41a6baee6e22b8af9170e3e569e0599c38b5e707
f20e96718a936499da309766da7f36f123b43d93 18-Jan-2013 Elliott Hughes <enh@google.com> Improve our time zone name collection.

A variety of bugs here. We weren't using dates in the current year,
we were assuming that icu4c has correct time zone transition data (it
usually doesn't), and in the fallback code (which we'd previously
never hit) we weren't honoring the caller's request for standard/daylight
time.

This patch fixes:

Africa/Tripoli: long='Eastern European Standard Time' short='Eastern European Standard Time'!
America/Araguaina: long='Brasilia Standard Time' short='Brasilia Standard Time'!
America/Campo_Grande: long='Amazon Standard Time' short='Amazon Standard Time'!
America/Cuiaba: long='Amazon Standard Time' short='Amazon Standard Time'!
America/Havana: long='Cuba Standard Time' short='Cuba Standard Time'!
America/Santiago: long='Chile Standard Time' short='Chile Standard Time'!
America/Sao_Paulo: long='Brasilia Standard Time' short='Brasilia Standard Time'!
Antarctica/Palmer: long='Chile Standard Time' short='Chile Standard Time'!
Asia/Jerusalem: long='Israel Standard Time' short='Israel Standard Time'!
Asia/Tehran: long='Iran Standard Time' short='Iran Standard Time'!
Asia/Tel_Aviv: long='Israel Standard Time' short='Israel Standard Time'!
Brazil/East: long='Brasilia Standard Time' short='Brasilia Standard Time'!
Chile/Continental: long='Chile Standard Time' short='Chile Standard Time'!
Chile/EasterIsland: long='Easter Island Standard Time' short='Easter Island Standard Time'!
Cuba: long='Cuba Standard Time' short='Cuba Standard Time'!
Iran: long='Iran Standard Time' short='Iran Standard Time'!
Israel: long='Israel Standard Time' short='Israel Standard Time'!
Libya: long='Eastern European Standard Time' short='Eastern European Standard Time'!
Pacific/Apia: long='Samoa Standard Time' short='Samoa Standard Time'!
Pacific/Easter: long='Easter Island Standard Time' short='Easter Island Standard Time'!
Pacific/Fiji: long='Fiji Standard Time' short='Fiji Standard Time'!

It also fixes Pacific/Fakaofo, which was confused between GMT+14:00 and
GMT+13:00.

We need a special case for Pacific/Apia because icu4c 4.9 doesn't believe
Samoa has ever used daylight time.

I've also added a test to keep us out of mischief in the face of future
upgrades to the Olson tzdata and/or icu4c.

Bug: 7955614
Bug: 8026776
Change-Id: I7ed551a691f29e26dd71456d492493d2a4fce945
cff1616012dc0d56c2da9af2b9b1183e76c7e044 04-Dec-2012 Elliott Hughes <enh@google.com> Add detail messages to all the easy IllegalArgumentException cases.

Noticed during my recent Matcher change.

Change-Id: I415d911b26d0ee548ca04d56bba7fc3d4e6b3f88
de3df0418aff29b06ea022b200fbcc687de63a7c 05-Oct-2012 Elliott Hughes <enh@google.com> Slim down ZoneInfo.toString.

Dalvik Explorer can now do a better job of helping examine transition data,
and regular developers don't need to see it. For America/Los_Angeles, for
example, toString used to output 186 lines. Now it just returns:

libcore.util.ZoneInfo[id="America/Los_Angeles",mRawOffset=-28800000,mEarliestRawOffset=-28800000,mUseDst=true,mDstSavings=3600000,transitions=185]

Also fix an incorrect comment from the TimeZone documentation.

Change-Id: I5748845a7b4f911e99a0e1c2e1a0786742288518
d43b9ef11a1095967a3396b246639b563e1a4128 12-Sep-2012 Kenny Root <kroot@google.com> Add consistent reasons for NullPointerException

Semi-automated replacement of empty and non-conforming
NullPointerException reason messages.

(cherry-pick of 86acc043d3334651ee26c65467d78d6cefedd397.)

Change-Id: I6d893979f5c20a50e841e32af9fd7b2d8bc9d54d
86acc043d3334651ee26c65467d78d6cefedd397 12-Sep-2012 Kenny Root <kroot@google.com> Add consistent reasons for NullPointerException

Semi-automated replacement of empty and non-conforming
NullPointerException reason messages.

Change-Id: Iedeb4b21949e973c4042ce5982dda315f2e785e1
78c3de051d68b703af480778c100ca335690b250 30-Jul-2012 Elliott Hughes <enh@google.com> Fix TimeZone's handling of Australia/Lord_Howe.

Australia/Lord_Howe has a half hour difference between standard and daylight
time, rather than the usual hour. Our ZoneInfo implementation ignored this.
Fix that oversight, make SimpleDateFormat actually use this information, and
prevent TimeZone.getTimeZone("GMT") and TimeZone.getTimeZone("UTC") from
being quite as expensive as they accidentally were.

Longer term I think we should probably remove all uses of getDSTSavings from
libcore in favor of TimeZone.getOffset, but this is probably a useful step
forwards anyway. It fixes Australia/Lord_Howe in the meantime and it means
that anyone else who's using getDSTSavings won't be bitten (even if they too
really ought to be using TimeZone.getOffset).

Bug: 4723412
Bug: http://code.google.com/p/android/issues/detail?id=24684
Change-Id: I5d50afecbe1453157e9c8f0b88305a258a3ba2e0
91348f798cddae22b59ee1a17bd24315c0897f6f 23-Jun-2012 Elliott Hughes <enh@google.com> Be more careful when parsing custom zone ids.

The old code was allowing invalid ids.

Bug: 6556561
Change-Id: I691d33fa133527a76bbffa4e3b56a023c389ca8f
6fb123c8681a795c65cbd67ffcc0ef641c473288 10-Jan-2012 Elliott Hughes <enh@google.com> Make it clearer that TimeZone.getTimeZone(null) throws NPE on purpose.

Bug: http://code.google.com/p/android/issues/detail?id=24036
Change-Id: I3464dc5094274931d67e3ca4a5bc553fa1a6dc96
d8d3329347af700beed67172c77046b5c2ecece2 15-Jun-2011 Jesse Wilson <jessewilson@google.com> Kill another use of TimeZone.useDaylightTime().

I wrote another test to prove the use was incorrect.

Change-Id: I86c5e53c735e7948b96c0d2a87abe21eb9aed876
http://b/2435103
6d82ce5d35a5e84aedf08528fd98b849f3f565a6 15-Feb-2011 Elliott Hughes <enh@google.com> Move ZoneInfo and ZoneInfoDB into libcore.util.

Change-Id: I91385512ec27aa2aebdc163ae204e542efa58f21
566bbb1d5a0ffadfc07fa58176587d4bd0d0be13 12-Feb-2011 Elliott Hughes <enh@google.com> Various time zone strings improvements.

* Added a cache -- really a memo table -- to libcore.icu.TimeZones. I've also
made the intern table global across all locales, for the common case where one
language has many corresponding country codes (and thus locales) for which the
strings are all the same. (I.e. this gives us deduplication across locales
where before we only had it within locales.) We also eagerly populate the cache
with both the default locale *and* en_US in the zygote, which should provide
better behavior for everyone whose default locale isn't en_US.

* Switched from linear search to binary search when pulling a row out of the
zone strings table. We could hash these, but I currently have no reason to
think we'd gain much speed for the space.

* Removed the special-case hack I had to ask ICU for a single string. The new
code largely removes the need for this, though one can imagine a theoretical
app that will behave worse under the new regime, all plausible ones will
benefit.

* Switch ICU over to using an mmap(2)ed copy of its .dat file and tell it never
to look for stuff on the file system. This doesn't actually work in any current
version of ICU, though it is slightly faster by virtue of no longer looking for
individual .res files (it still keeps looking for the same .dat file over and
over). I'll work on fixing ICU later. This change takes us from about
1.1s/locale to 0.8s/locale. My current ICU hack takes that down to 0.3s/locale,
which is still obscene, but it's another step in the right direction.

* Fixed the "unambiguous abbrevations" logic in TimeZones.cpp so that all users
of (say) CET to mean "Central European Time" get it, not just first. We really
just wanted to avoid the situation where there's a "Central Excellent Time" or
whatever, whose CET would *conflict* with the first one we learned about.
Multiple references to the same time zone are not conflicts.

* Moved clone2dStringArray to the only place it's really needed.

* Slightly better documentation for Comparator.

* More tests, including the one for CET formatting that I should have added
when I fixed CET parsing, which would have shown me the error of my old ways.

Bug: 3443476
Change-Id: If1d50e6273fc98a38139f14445265ce0be5e09dd
6c0aa9e00fdbcc2765d3c498c45e078457944468 14-Sep-2010 Elliott Hughes <enh@google.com> Fix the TimeZone.getTimeZone documentation and a test.

Bug: 2996225
Change-Id: I9242b8a8e343d2b1995b5f1d0cb715d2fa3080f6
705462a2b003b2eeed90bf3cebe0871e02554cbd 12-Aug-2010 Elliott Hughes <enh@google.com> Minor documentation improvements.

Fix unqualified uses of SimpleDateFormat in TimeZone.java, explain how to use
getPercentageInstance (http://code.google.com/p/android/issues/detail?id=10333),
add an explicit test to make sure no-one accidentally "fixes" that
odd-but-correct behavior, and remove an example from the DecimalFormat
documentation that doesn't really clarify anything.

Bug: http://code.google.com/p/android/issues/detail?id=10333
Change-Id: I52f22d817c7c6c32ad38fb6953fbe909a76f8943
3ab13ebe9d67b0b210865853902b854711ef45b0 11-Aug-2010 Elliott Hughes <enh@google.com> Improve the performance of TimeZone.getTimeZone.

Rewrite the code that reads time zone data so that rather than opening,
reading, and closing the file each time, we just keep the file mapped.

This patch actually removes functionality: we no longer support reading
individual Unix time zone data files.

Also stop cloning guaranteed-new instances returned by ZoneInfoDB.

Before:

benchmark us logarithmic runtime
TimeZone_getDefault 9.85 =
TimeZone_getTimeZoneUTC 211.40 =====================
TimeZone_getTimeZone_America_Caracas 437.87 ==========================
TimeZone_getTimeZone_America_Santiago 783.29 ==============================
TimeZone_getTimeZone_GMT_plus_10 181.80 ====================
TimeZone_getTimeZone_default 194.78 ====================

After:

benchmark us logarithmic runtime
TimeZone_getDefault 10.8 =
TimeZone_getTimeZoneUTC 70.9 =============
TimeZone_getTimeZone_America_Caracas 118.9 =================
TimeZone_getTimeZone_America_Santiago 797.5 ==============================
TimeZone_getTimeZone_GMT_plus_10 57.8 ============
TimeZone_getTimeZone_default 72.2 =============

(Note that these have very different scales.)

Bug: 2870945
Change-Id: Iae5aa86153006d4de8e7278d30bcaeef6a9ccab7
f14cadb15b06371fb9a6daf885dc1c4bccf975b9 10-Aug-2010 Elliott Hughes <enh@google.com> Minor TimeZone cleanup.

Getting ready to do some real work here, I thought I'd improve the
documentation and remove some cruft.

Bug: 2870945
Change-Id: I771badc8afa5c0a5f77880f64e1542d77672d984
21557bb6a8f35a2f9889adba449cac950c9d41b9 23-Jun-2010 Elliott Hughes <enh@google.com> Add TimeZones.forLocale, plus some tidying.

The new feature here is TimeZones.forLocale and the accompanying JNI. I've also
taken the liberty of pulling the time zone stuff out of ICU.java and ICU.cpp,
and I've moved some of the ICU-related code I've written recently (NativeIDN,
NativeNormalizer, and NativePluralRules) into a new libcore.icu package.

I've also renamed various things so the implementation details use the same
terminology as the thing they're implementing.

Bug: 2790386
Change-Id: Ie39a2f5f7023e8e29864de15790be8a660f5cba6
e32b21f14d52bac429a9c54fe031f9e92c911d64 18-Jun-2010 Jesse Wilson <jessewilson@google.com> Implementing ZoneInfo.hasSameRules().

Moving TimeZoneTest to OldTimeZoneTest and removing test methods
that are duplicated between libcore and Harmony.

Also adding Objects.equals() to make implementing this easy,
and removing redundant time zone tests. I did a few searches
to find candidate code that could take advantage of this new
utility method and adopted it there.

Change-Id: I133298f1b36d755bd35c1ad0dc0ab366fd164270
2f633269e71f3fb0b6248cc695cf37c5cbaf7e60 20-Apr-2010 Jesse Wilson <jessewilson@google.com> Fixing TimeZone.setDefault() documentation.

Set expectations for date formatting to tolerate "GMT-07" in the
output. The alternative is to emit an ambigous date string.
Applications that want pretty date formatting should use the
proper facilities: SimpleDateFormat, etc.

This problem was detected by org.apache.harmony.luni.tests.java.util.DateTest.test_toString
757a7942eed2b0aa457f8517a0259d2ac82c5b18 16-Apr-2010 Elliott Hughes <enh@google.com> Merge LocaleData and Resources, rename Resources to ICU.

Also move our ICU tests into our little tree of tests.

Bug: 2596471
Change-Id: I73b53d74c26ef9bf670f12cac58b51ba61eefead
3106a99ccbe2e2a25bb66266d0ee42d98dd18099 13-Apr-2010 Elliott Hughes <enh@google.com> Improve documentation about the user's default locale.

Add a bit of text to Locale's class documentation, and include a link from
every method that uses Locale.getDefault(). Also try to consistently say
"user's default locale", as a subliminal hint that this isn't necessarily
the developer's locale, nor en_US.

Bug: 2593000
Change-Id: Ieebe864ed6b9fecbfef5d5415269299739cedd1b
dc30337534e7970bb5b8cfbcb3c2b7f75d818795 05-Dec-2009 Elliott Hughes <enh@google.com> Improve TimeZone documentation.

We can't do anything about the RI's unfortunate choice of method names,
but improving our documentation might help reduce the confusion they
cause.

Bug: 2244560
4fefecee9d4a5d2a4510f516b4015607b19e8d09 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
1c422fc0ab0692e10a05af6f48c6276c4dad4bea 16-Oct-2009 Jesse Wilson <jessewilson@google.com> Respond to impossible CloneNotSupportedExceptions with AssertionErrors.

See bug 2183132.
a389b4a499f40379b0b204d7ba1c2057663d95c0 11-Aug-2009 Jesse Wilson <jessewilson@google.com> Update Luni to Harmony r802921.

Notable changes:
- replaced StringBuffer with StringBuilder in several places
- fixed a problem with BufferedInputStream's newline characters (EBCDIC)
- cleanup Timer's finalizer helper object
- new cache for the canonical path of a file
- fixed concurrency issue with ArrayList
- floating point parsing now trims length for very small numbers
- encoding specified "UTF-8" when converting some byte[]s to strings (JarURLConnection, Util, OSFileSystem)
- Harmony now implements floor and ceil in Java. We continue to use native code.
f5597e626ecf7949d249dea08c1a2964d890ec11 25-Jul-2009 Jesse Wilson <jessewilson@google.com> Integrate luni module (but not tests) to Harmony r772995.

Notable changes
- Stripped "@since Android 1.0" from many files. Most files
are now 100% the same in Dalvik and Harmony.
- AbstractStringBuilder.reverse() supports surrogates
- AbstractStringBuilder shares less to waste less memory
- Bitset optimized
- BufferedInputStream changed to support unsynchronized close()
- BufferedOutputStream does flushInternal
- BufferedReader supports EBCDIC NEL
- Collections.synchronizedList().indexOf() does a copy for more concurrency
- Classes in nio module changed: DatagramChannelImpl, SocketChannelImpl
and ServerSocketChannelImpl (these depend on internal APIs changed in
this update)
- DataInputStream/DataOutputStream now use a small buffer to limit the
number of times the underlying stream is accessed
- Date now has a minutes offset, more efficient toString()
- ExposedByteArrayInputStream: new internal class
- DeleteOnExit moved to top-level class
- FileDescriptor.isValid() now non-native
- Float, Double lessThan optimized (fix for compare(-0.0F, 0.0F) still pending)
- FileURLConnection now guesses content types from streams
- HashMap iterator changes
- Hashtable iterator changes
- INetworkSystem
- removes bind2(), createMulticastSocket, sendStream(),
- renames createSocket to createStreamSocket
- JarURLConnection rewritten
- LinkedHashMap: new iterator
- Locale, Currency, TimeZone: now use ICU in Harmony, plain Java in Dalvik
- ObjectInputStream: Accessor objects in Harmony, direct native in Dalvik
- ProxyClassFile - many changes
- String - optimized ascii for toLowerCase, toUpperCase, compare
- Timer - rewritten
- TreeMap - rewritten
- URLClassLoader - new
- URLConnection - new guessContentTypeFromStream(), uses org.apache.harmony.awt.www.content
to lookup content type handlers
adc854b798c1cfe3bfd4c27d68d5cee38ca617da 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
1c0fed63c71ddb230f3b304aac12caffbedf2f21 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
dd828f42a5c83b4270d4fbf6fce2da1878f1e84a 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
fdb2704414a9ed92394ada0d1395e4db86889465 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution