72ed50d1e9048b79efdb5b9e4ffb07c99a302d84 |
|
16-Jan-2015 |
Lorenzo Colitti <lorenzo@google.com> |
Use the IPv6 instead of the IPv4 wildcard address in sockets. A few places in libcore consider the local address of an unbound socket to be Inet4Address.ANY. For example, calling getLocalAddress on an uncreated Socket will return 0.0.0.0, and when creating a DatagramSocket, libcore attempts to bind it to 0.0.0.0 unless the caller specifies another address. On Android, this is incorrect. All native socket filedescriptors that underpin Java socket objects are created by IoBridge.socket, and are dual-stack AF_INET6 sockets, not AF_INET sockets. When such a socket is created, its local address is ::, not 0.0.0.0. Thus, for example, calling getLocalAddress on a just-created ServerSocket object will return ::. Binding to 0.0.0.0 is not even allowed by os.bind, which silently converts it to :: instead (in inetAddresstoSockaddr). Therefore, accept reality and use :: instead of 0.0.0.0 in the Java layer as well. Specifically: 1. Change DatagramSocket's constructors to bind to :: instead of 0.0.0.0. This is a complete no-op, because os.bind() silently converts 0.0.0.0 into ::. Add a test for the other of the two codepaths. 2. Change InetSocketAddress so that an uninitialized object has an IP address of :: and not 0.0.0.0, and update its test. This is unlikely to break anything short of an app that explicitly depends on this behaviour, because os.bind() converts 0.0.0.0 to ::, and because any SocketAddress returned by any real socket will never contain 0.0.0.0 anyway. 3. Change Socket so that calling getLocalAddress() when there is no underlying socket file descriptor is will return :: instead of 0.0.0.0. This is more correct, because it's consistent with sockets that have been created, which will never have a local address of 0.0.0.0. Tested: vogar $(find libcore/*Socket*Test*) all passes on device. Bug: 18094870 Change-Id: I9d60710fe945a99d6a5e65430248a889008ef4b1
|
7d5a8340b6f50d1d8677463897c3ba499fad3eb8 |
|
20-Jan-2015 |
Neil Fuller <nfuller@google.com> |
Make socket binding behavior clearer Use of "localhost" to mean "the local host" and not "loopback" was confusing. Some docs lacked information. InetSocketAddress was ambiguous around what was being described. Use of "this socket" rather than "the socket [endpoint|address|]" makes it sound like InetSocketAddress is a socket, not a socket's address. Bug: 19065543 Change-Id: Ic7265464ba39ecace6640b8c4f7a9084ea6ae1d2
|
47ae0b5a1d96c8030e0963ccc5b44c3ee66aaec3 |
|
20-Jan-2014 |
Neil Fuller <nfuller@google.com> |
Implementing bind() and getLocalAddress() for NIO2. This change introduces NetworkChannel, but only bind() and getLocalAddress() methods. To avoid breaking existing Android applications that extend ServerSocketChannel, DatagramChannel and SocketChannel the methods have been added with concrete implementations that throw exceptions rather than leaving them abstract. In channel tests, usages of channel.socket().bind() and channel.socket().getLocalSocketAddress() have been changed to channel.bind() and channel.getLocalAddress(), since the behavior is close enough and the tests should be written against the channel APIs as much as possible. Tests have been added for new methods. Removed further overriding in DatagramChannelImpl.DatagramSocketAdapter and SocketChannelImpl.SocketAdapter which revealed some bugs and lack of clarity in the docs for the socket methods: Improved the documentation for DatagramSocket.getLocalAddress(), DatagramSocket.getLocalSocketAddress(), ServerSocket.getInetAddress(), ServerSocket.getLocalPort(), ServerSocket.getLocalSocketAddress(), Socket.getLocalAddress(), Socket.getLocalPort(), Socket.getLocalSocketAddress(). These methods treat special cases differently. Fixed a bug in DatagramSocket.getLocalSocketAddress() where it would incorrect throw an exception if the socket has been closed, which contradicts the (updated) documentation and the RI. It now returns null. Added tests. Fixed a bug in Socket.close(): a closed socket would still report as being connected. Added tests. Fixed a bug in Socket.startupSocket() - the socket was recording it was being bound, but was not updating the cached local address. This method is called during ServerSocketChannel.accept() and would cause the socket to report its local address as being the wildcard address, when it is not. Added a test. Change-Id: Ibec8527e1c72597e268d23e6c1f03eb16e46cdc4 Bug: 12464155
|
933fbbf606268eec9fc430632b8bca7002a833b3 |
|
14-Jan-2014 |
Neil Fuller <nfuller@google.com> |
Refactoring in preparation for NIO2 changes. Making the various Socket/Channel classes more consistent with each other for synchronizing state between the Channel, Socket and the OS. This is in preparation for NetworkChannel.bind(). Synchronizing state revealed a test that relied upon a Socket from a channel not reporting isConnected() properly after a connect(). Tests have been updated. Reading the local address back from the OS revealed that Android is using IPv6 and reports the string equivalent of IPv4's 0.0.0.0 as "::". Updated a test that was relying on the string form. Calling connect() twice on a DatagramSocket appears inconsistent with itself and Channel and other Sockets. A pure DatagramSocket switches over to the new remote address. I have changed the Channel-backed DatagramSocket to throw an IllegalStateException exception, and have created a bug to discuss making the calls more consistent. Socket has been modified to avoid using the address field to store the local address after a bind(). This field is documented as holding the remote address, not the local. Changed implementation of SocketChannelImpl.socket().getInputStream() and SocketChannelImpl.socket().getOutputStream() to use the one that is implemented by Socket and not a custom NIO-based implementation. The use of NIO provided two parallel implementations for the same thing. This change alters behavior when attempting to read zero bytes and when a Channel is in non-blocking mode: now it throws IllegalBlockingModeException rather than ArrayIndexOutOfBoundsException. The tests have been updated. Various tidying up changes to introduce @Override, remove unnecessarily initialized local variables, fields, semi-colons, javadocs and imports. Added close() calls for objects during tests that were cluttering the logs. Modified IoBridge.connect() to be void. Adjusted SocketChannelImpl accordingly and tidied up impossible cases. Modified SocketChannel.connect() so that it always returns false in non-blocking mode. This looks like an existing bug: it would previously have returned true, even though the connection was potentially still pending. Tests have been added. Also tidied up SocketChannelImpl.finishConnect() - it was potentially resetting the isBound state. Change-Id: Ic7943615b4b763f77e74397e0e91a62edc7d7017 bug: 12464155
|
9902f3494c6d983879d8b9cfe6b1f771cfefe703 |
|
10-May-2013 |
Elliott Hughes <enh@google.com> |
Finish off AutoCloseable. Bug: 3484927 Change-Id: Ia0f5ad3db9807459ce6cda05bc2f53564b63b375
|
255a6f4ab321614ed1ca26849d1df7fa9c0610f5 |
|
25-Apr-2013 |
Elliott Hughes <enh@google.com> |
Fix getLocalAddress on closed sockets. Bug: https://code.google.com/p/android/issues/detail?id=54072 Change-Id: Ie32708054f584885ec85dd7847c128d48ff6c7d5
|
51cf1b49bca54ec0229a51df400ad1bee580b1bb |
|
16-Mar-2013 |
Brian Carlstrom <bdc@google.com> |
Assorted socket fixes related to test_SSLSocket_setSoWriteTimeout failure investigation 1.) Fixed the failure of libcore.javax.net.ssl.SSLSocketTest's test_SSLSocket_setSoWriteTimeout by setting send/recv buffer sizes earlier (b/8272932) 2.) Fixed javadoc bug in java.net.Socket 3.) Fixed implementation bug in IoBridge affecting reading SO_RCVBUF 4.) Fixed bug where we would leave unsent bytes in OpenSSL write buffer after SSLSocket write possible cause of b/6693087 Bug: 8272932 Bug: 6693087 Change-Id: I54e084e58e8b10583a6ac3051d5e05e519139d64
|
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
|
3267a46b52d848e1e9e20c226512688f0c50d4c3 |
|
25-Aug-2011 |
Jeff Sharkey <jsharkey@android.com> |
Return real FileDescriptor in Socket wrappers. In classes that wrap another Socket, return the real FileDescriptor from the wrapped Socket. Bug: 5189186 Change-Id: I157feb6991def9110eaf0ea82365b6f5b95b9372
|
c61ad82613eb264cbf93e91519b0c061d11b3c2d |
|
27-May-2011 |
Elliott Hughes <enh@google.com> |
Match the RI's exact exception type. Change-Id: Id64b8ff87198e31a93a92d19d542948bcbb74db0
|
0b736ebc4efef64f2db1999aea90297ad8196146 |
|
20-May-2011 |
Elliott Hughes <enh@google.com> |
Move the stuff to bridge between io/net/nio semantics and POSIX semantics. IoUtils should be more generally useful. Change-Id: I5665f2a94d226ada3077a30045549a53cc741cf0
|
ae394a866dd86df8819b652dfe00b3d2c7ee204c |
|
20-Apr-2011 |
Elliott Hughes <enh@google.com> |
Remove "java.net.preferIPv6Addresses", which has been true since Eclair. Also ensure all javadoc references to RFCs are links. Change-Id: I58b08a8ead08d6eab018e19ec2cff7d60f2b06e6
|
5d3f5200f3511c9a7107bcc0a996c7afa1b39aaf |
|
01-Apr-2011 |
Elliott Hughes <enh@google.com> |
Don't cache the underlying Socket's underlying SocketImpl's underlying FileDescriptor in OpenSSLSocketImpl. (OpenSSLSocketImpl, of course, being a Socket, not a SocketImpl.) Bug: 4192414 git cherry-pick dc33f53f38600943c84146320c748e3c46fd2e7b Change-Id: I8f481e0fe217aac782ad9d9e9053681ad69e62ef
|
dc33f53f38600943c84146320c748e3c46fd2e7b |
|
01-Apr-2011 |
Elliott Hughes <enh@google.com> |
Don't cache the underlying Socket's underlying SocketImpl's underlying FileDescriptor in OpenSSLSocketImpl. (OpenSSLSocketImpl, of course, being a Socket, not a SocketImpl.) Bug: 4192414 Change-Id: I3c7d0fed70b1b98dc8fcc73f35b3feb0e1eeb2f9
|
0a9d1ee45a9884a9616624d747172e18734e8fe0 |
|
31-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add getsockname(2) and getsockopt(2). Bug: 3107501 Change-Id: Ibb0d5a576ecb46e51dbda6051776145eec9e7fe1
|
8de7cf6bff36093dda9e25a1ab3718720cb54906 |
|
07-Mar-2011 |
Elliott Hughes <enh@google.com> |
Move the various concrete SocketImpl classes into java.net. Also do some trivial tidying of dead code. Bug: http://code.google.com/p/android/issues/detail?id=15304 Change-Id: If7186dda6bf31e2c2ef00ac6f386cbc9a78847fd
|
ae06196267319eef727892d9e13bdecea3482e34 |
|
24-Feb-2011 |
Elliott Hughes <enh@google.com> |
Fix more FindBugs warnings: dead code in Socket(Proxy). From the SecurityManager removal. Change-Id: Ie822bc02453b1020a8ad6d9337b2d997c475659b
|
a9c6c9013b08934867f71b69a90efce0c1b66918 |
|
11-Jan-2011 |
Elliott Hughes <enh@google.com> |
Documentation improvements for socket options. Bug: http://code.google.com/p/android/issues/detail?id=13898 Change-Id: I202a5404e7e828f074483a3f6365b4e3a941da7d
|
ad41624e761bcf1af9c8008eb45187fc13983717 |
|
07-Jan-2011 |
Elliott Hughes <enh@google.com> |
Retire SecurityManager. This change removes all the code that was calling getSecurityManager, and removes all use of AccessController.doPrivileged. It also changes the implementation of AccessController so it doesn't actually do anything; it's only there for source-level compatibility. Bug: 2585285 Change-Id: I1f0295a4f12bce0316d8073011d8593fee116f71
|
b46dab348e2007bc08abaf7ecae34d89a2474e50 |
|
09-Dec-2010 |
Elliott Hughes <enh@google.com> |
Rewrite all backwards comparisons. Strictly, all the ones I could find. This is everything with 0 or null on the left-hand side. Note that this touches several incorrect bounds checks, which I haven't fixed: I'm going to come back and finish that independent cleanup separately. Change-Id: Ibdb054b53df9aace47c7d2a00ff19122190053e8
|
0d93c38cc3c7a5001aece8a18cafc6d1fc7551f3 |
|
04-Nov-2010 |
Elliott Hughes <enh@google.com> |
Add a public @hide InetAddress.isNumeric. Some frameworks/base callers want to know whether they can call getAllByName/getByName without incurring a DNS lookup. Rather than have them write their own JNI to do the AI_NUMERICHOST getaddrinfo(3) call, let's just offer them ours. Why don't I fully expose getaddrinfo(3)? Because it doesn't map to Java API very well, and no-one needs that yet. So for now, let's take the easy way out. Also improve some misleading javadoc. Bug: 3073384 Change-Id: Ia1990313306254598a4e1480cae356f68ceaaf22
|
5e23b687ef8b3c696d54d1880b454942875665b7 |
|
22-Sep-2010 |
Elliott Hughes <enh@google.com> |
Remove custom marker classes for locks. Just use Object instead. Bug: 3024308 Change-Id: I83a01020646d95e014743b76e27ca7134c155298
|
3db0d1b07a79c3c871b0aa0929674adae3081b4f |
|
28-Aug-2010 |
Elliott Hughes <enh@google.com> |
Remove the accessors hiding our IFileSystem and INetworkSystem. These accessors aren't buying us anything, are costing us something, and have encouraged caching of instances in fields all over the place. Lose all that cruft. I think we all agree that we want to merge IFileSystem and INetworkSystem at some point, but I'll do that some other day. Change-Id: I07696ec9650d0395ec31a71a74300e818a3fed91
|
0917c4a9d5d0115950450cdd0bb46e43a48da5db |
|
12-Aug-2010 |
Elliott Hughes <enh@google.com> |
Clean up some dead/useless code. (The DatagramPacketTest.java change is unrelated, but it's been lurking in my repository for weeks now.) Change-Id: I65d3ad53dd30709b2daed3c5787cc38c6081ffea
|
7365de1056414750d0a7d1fdd26025fd247f0d04 |
|
12-Aug-2010 |
Jesse Wilson <jessewilson@google.com> |
Sorting imports. Change-Id: I8347bc625480a1c37a1ed9976193ddfedeb00bbc
|
2cd82d7111f68ff63145ef7c393bf1479ff06223 |
|
29-Jul-2010 |
Elliott Hughes <enh@google.com> |
Fix setTrafficClass. Pass the traffic class setting down to the kernel, rather than trying to fake it in Java and then not actually using it at all in the native code. There are two ways to set traffic class (aka type of service, or TOS): per-packet or per-socket. The Java API is for the per-socket style, but the old implementation had each SocketImpl intercept calls to SocketOptions.setOption for SocketOptions.IP_TOS, stash the traffic class in one of the SocketImpl's private fields, skip calling native code, and then pass the traffic class to each native method that would need it to implement the per-packet style. Unfortunately, each of those methods was just ignoring the traffic class. I've removed all this interception, so we now pass the traffic class straight to the kernel via setsockopt(2), and we don't need to pass anything to the individual per-packet calls. The motivation for going the per-packet route appears to have been to work around a lack of support for the per-socket route in old versions of Linux and other OSes. It all works now, though, so there's no point making our lives harder (and doing more work at runtime) to work around bugs and infelicities that no longer exist. I tested the new code manually with tcpdump, for both IPv4 (radio) and IPv6 (wifi), and in both cases it looks like it's doing the right thing now. We also still pass all of our tests, though none of them are capable of recognizing whether we're actually doing anything useful anyway... Change-Id: Ice241e088d25037123c73733a3f2bfade976fb31
|
0371d85fa3ecb5f162d107cdbff0a99cd987fdcc |
|
27-Jul-2010 |
Elliott Hughes <enh@google.com> |
Fix setSoLinger. The bizarre use of Boolean or Integer (rather than just using -1) comes from the RI. Third-party SocketImpl implementations may expect the RI's documented behavior, so we should probably do the same. I've also changed SocketChannelImpl.SocketAdapter to reuse Socket's implementation of all the socket option getting/setting code, mainly so we don't have two copies of all the weirdness. I've also fixed a bug in the native getSocketOption code which returned a Boolean rather than an Integer for IP_TOS/IPV6_TCLASS, though that code is actually never called at the moment. I've removed support for passing Byte values to setSocketOption. The RI only uses Boolean and Integer. Change-Id: I80ba63745f4c4f3ac357dc3f0b7cbf254a291bce
|
4e4000ed98f9056639fba0713a3fd3caacf9746c |
|
27-Jul-2010 |
Elliott Hughes <enh@google.com> |
Let the kernel handle network timeouts by setting SO_RCVTIMEO. As far as I can tell, the reason other implementations use select(2) instead of SO_RCVTIMEO is that traditionally the latter wasn't implemented. Stevens is unusually unspecific about the portability of SO_RCVTIMEO, but the web says that Linux didn't support it until 2.4, and Solaris was late and buggy too. Modern versions of Linux, Mac OS, and Windows all support SO_RCVTIMEO, though, so portability should not be a concern for us. This patch causes a regression; several of the blocking network I/O methods that used to be interruptible by virtue of their select(2)-based manual implementation of timeouts are no longer interruptible. Making all network I/O interruptible is work in progress, covered by http://b/2823977. Bug: http://b/2512069 Change-Id: I0a2812ca1537bd171c4205343d6b3b526b72b2b2
|
79ff4e73fd689dae6667a8137ee57137962ff13a |
|
14-Jul-2010 |
Elliott Hughes <enh@google.com> |
Make it possible to interrupt network reads. This patch simplifies the network I/O interface, in particular for read/recv. The bounds checking from OSNetworkSystem.read goes, since the caller already checks. (If we want that checking in native code, we should add it uniformly.) We also remove supportsUrgentData (which was always returning true), and remove the sole caller, so we just try the operation and report failures if they happen rather than trying to predict the failure (as the original code seemed to want to do, and which is never a good idea). The native code gains logic to recognize when the FileDescriptor has been closed from another thread, though this logic remains largely unused at this point. (There's comment-out code in "close" that does a shutdown(2) to wake us up so we can recognize this situation.) I've switched code over to using the new NetFd class, but haven't ensured that we handle the wakeups correctly. (The "read" implementation being the notable exception.) For now, with the shutdown(2) commented out, this shouldn't have any visible behavioral changes. (And our tests don't spot any.) Code that was using malloc(3)/free(3) to allocate temporary buffers, and copying to and from those buffers has been rewritten to use JNI-provided pointers onto the heap, as part of the general "don't lie to the garbage collector" push. The implementations for the various old forms of recv have been collapsed into one. Bug: 2823977 Change-Id: I05cf742c44827a24df3c1ff59727013ee4636233
|
b1396870f92135aa140bd2b86221768dea5bc11d |
|
25-May-2010 |
Elliott Hughes <enh@google.com> |
Remove the luni localized exception messages. Also fix a bug I introduced in KXmlSerializer: s.isEmpty() is not equivalent to "".equals(s) if s is allowed to be null. Bug: 1251121 Change-Id: I41a0a98ffb49f214041c9110f824d327af5c34e8
|
b64216b26ade0c4da110590b7a7c5fabcbb3f021 |
|
15-May-2010 |
Elliott Hughes <enh@google.com> |
Remove dead code. Change-Id: Ib9732c712a50a3bc9ed186464586a0f407e27287
|
8cc54e9f098c4f299d2b88bb2b9110ce44354ed7 |
|
14-May-2010 |
Elliott Hughes <enh@google.com> |
Fix getInetAddress/getPort/getLocalAddress/getLocalPort. Responsibility is split between Socket, SocketImpl, PlainSocketImpl, SocketChannel, SocketChannelImpl, and SocketChannelImpl.SocketAdapter, and we need to keep them synchronized. Our hands are somewhat tied by the fact that the RI exposed way too much. I think, now I understand the relationships a bit better, that we can probably rewrite this cluster of classes to be simpler, but I don't want to bite off more than I can chew right now, and this does fix the known problems. This patch also makes us more compatible with the RI by making getLocalAddress after the socket has been closed return the address we used. By strange coincidence, harmony addressed this at the same time I was looking at it (see http://svn.apache.org/viewvc?rev=944119&view=rev) but I feel they're going in the wrong direction and making the relationships even more complicated. I have run their new tests in addition to my own, though. Bug: 1952042 Bug: http://code.google.com/p/android/issues/detail?id=1933 Bug: http://code.google.com/p/android/issues/detail?id=3123 Change-Id: Icb7793fb5d868e0d1f1b8b3d5da88c32fb973744
|
f33eae7e84eb6d3b0f4e86b59605bb3de73009f3 |
|
13-May-2010 |
Elliott Hughes <enh@google.com> |
Remove all trailing whitespace from the dalvik team-maintained parts of libcore. Gentlemen, you may now set your editors to "strip trailing whitespace"... Change-Id: I85b2f6c80e5fbef1af6cab11789790b078c11b1b
|
fd6bb3510c2f94d636f3572dcf5f7f4dcd1a2726 |
|
13-May-2010 |
Elliott Hughes <enh@google.com> |
Remove //$NON-NLS-\d$ cruft. Mostly done by perl(1), with manual cleanup of the few misspelled instances. This makes our trailing whitespace slightly worse, but I'll fix all that with a follow-on change. Change-Id: I0b4ca98819be6f9519c4ba980d759bd1ee1a0303
|
edc2dae4345ea305f092ade00419685d77c8eee9 |
|
08-May-2010 |
Elliott Hughes <enh@google.com> |
Trivia. Remove unused parameters from NetworkInterface's native methods. Remove commented-out static initializers. Fix FileChannel.force so that force(true) doesn't do _less_ than force(false). Note that force(true) still doesn't do _more_ than force(false) because bionic doesn't implement fdatasync(2). I've raised a bug against bionic about that. Change-Id: Ia5e827638606a7919e3bcf324810747ee6bcbb9a
|
d9d263010b4b3fb039ecb88bddbc565414d82c63 |
|
16-Mar-2010 |
Elliott Hughes <enh@google.com> |
Remove dead fields, constants, and redundant pass-through methods. (This is just preliminary to what I really want to do, which is vastly reduce the number of near-duplicate methods we have: all the send/recv variants, for example.) Change-Id: Ib03653820a18f55aea6c5b876c397afd281a98dc
|
4c5cbf2953ada194c4dc9d7b387615b1c6fe3e63 |
|
20-Jan-2010 |
Elliott Hughes <enh@google.com> |
One true way to query "java.net.preferIPv6Addresses". Also stop querying and passing this boolean to code that doesn't care. (We sort our InetAddress[]s appropriately, so most code doesn't need to worry about this.) Bug: http://code.google.com/p/android/issues/detail?id=5903
|
4fefecee9d4a5d2a4510f516b4015607b19e8d09 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
7861ea9a813b337a4abd0378584baae9cc177896 |
|
12-Nov-2009 |
Elliott Hughes <enh@google.com> |
Remove OSNetworkSystem.oneTimeInitialization. Do this work at JNI registration time, as we do for almost everything else. (I did this to rule out a warning from the dalvikvm deadlock prediction code, which doesn't like the unusual lock ordering at initialization time, and although it didn't make any difference to that, I prefer to have a defined static order of initialization.)
|
051128862ae7c5c031b8ddb763848ed264a63746 |
|
26-Aug-2009 |
Lorenzo Colitti <lorenzo@google.com> |
InetAddress refactoring. 1. Refactor all protocol-specific methods from InetAddress into Inet[46]Address. 2. Move all protocol-specific constants from InetAddress into Inet[46]Address. This change should have no effect on the stack's behaviour but makes it easy to find parts of the code that still have dependencies on IPv4 so they can be examined and fixed. Change-Id: I70860ee04cf7c01bffaa35c8c64199f69d99826f
|
1f2d2815dc31bf3c464eec6d1de7e428d7f1dcf6 |
|
29-Jul-2009 |
Lorenzo Colitti <lorenzo@google.com> |
Try to connect to all the IP addresses of a host instead of just the first.
|
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
|
687f18b91f4a0a728a027579110953ee729adcb8 |
|
22-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@127436
|
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
|