summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--luni/src/main/java/android/system/OsConstants.java1
-rw-r--r--luni/src/main/java/libcore/net/MimeUtils.java1
-rw-r--r--luni/src/main/native/android_system_OsConstants.cpp1
-rw-r--r--luni/src/test/java/libcore/libcore/net/MimeUtilsTest.java3
-rw-r--r--ojluni/src/main/java/java/nio/BufferOverflowException.java6
-rw-r--r--ojluni/src/main/java/java/nio/BufferUnderflowException.java6
-rw-r--r--ojluni/src/main/java/java/nio/InvalidMarkException.java6
-rw-r--r--ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java3
-rw-r--r--ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java2
-rw-r--r--ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java12
-rw-r--r--ojluni/src/main/java/sun/nio/ch/DefaultAsynchronousChannelProvider.java26
-rw-r--r--ojluni/src/main/java/sun/nio/ch/EPoll.java7
-rw-r--r--ojluni/src/main/java/sun/nio/ch/EPollPort.java7
-rw-r--r--ojluni/src/main/java/sun/nio/ch/FileChannelImpl.java6
-rw-r--r--ojluni/src/main/java/sun/nio/ch/FileDispatcherImpl.java27
-rw-r--r--ojluni/src/main/java/sun/nio/ch/FileKey.java8
-rw-r--r--ojluni/src/main/java/sun/nio/ch/Invoker.java22
-rw-r--r--ojluni/src/main/java/sun/nio/ch/NativeThread.java11
-rw-r--r--ojluni/src/main/java/sun/nio/ch/Net.java15
-rw-r--r--ojluni/src/main/java/sun/nio/ch/PollArrayWrapper.java6
-rw-r--r--ojluni/src/main/java/sun/nio/ch/SelectionKeyImpl.java1
-rw-r--r--ojluni/src/main/java/sun/nio/ch/ServerSocketChannelImpl.java3
-rw-r--r--ojluni/src/main/java/sun/nio/ch/SocketChannelImpl.java10
-rw-r--r--ojluni/src/main/java/sun/nio/ch/SocketDispatcher.java4
-rw-r--r--ojluni/src/main/java/sun/nio/ch/ThreadPool.java32
-rw-r--r--ojluni/src/main/java/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java22
-rw-r--r--ojluni/src/main/java/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java38
-rw-r--r--ojluni/src/main/java/sun/nio/cs/ThreadLocalCoders.java2
-rw-r--r--ojluni/src/main/java/sun/nio/fs/LinuxNativeDispatcher.java8
-rw-r--r--ojluni/src/main/java/sun/nio/fs/LinuxWatchService.java18
-rw-r--r--ojluni/src/main/java/sun/nio/fs/UnixCopyFile.java12
-rw-r--r--ojluni/src/main/java/sun/nio/fs/UnixDirectoryStream.java11
-rw-r--r--ojluni/src/main/java/sun/nio/fs/UnixFileSystemProvider.java23
-rw-r--r--ojluni/src/main/java/sun/nio/fs/UnixNativeDispatcher.java8
-rw-r--r--ojluni/src/main/java/sun/nio/fs/UnixSecureDirectoryStream.java8
35 files changed, 258 insertions, 118 deletions
diff --git a/luni/src/main/java/android/system/OsConstants.java b/luni/src/main/java/android/system/OsConstants.java
index 3e1f007d0c..83a1b41a16 100644
--- a/luni/src/main/java/android/system/OsConstants.java
+++ b/luni/src/main/java/android/system/OsConstants.java
@@ -368,6 +368,7 @@ public final class OsConstants {
public static final int O_APPEND = placeholder();
public static final int O_CLOEXEC = placeholder();
public static final int O_CREAT = placeholder();
+ /** @hide */ public static final int O_DIRECT = placeholder();
public static final int O_EXCL = placeholder();
public static final int O_NOCTTY = placeholder();
public static final int O_NOFOLLOW = placeholder();
diff --git a/luni/src/main/java/libcore/net/MimeUtils.java b/luni/src/main/java/libcore/net/MimeUtils.java
index 693b6da458..3ab4300132 100644
--- a/luni/src/main/java/libcore/net/MimeUtils.java
+++ b/luni/src/main/java/libcore/net/MimeUtils.java
@@ -114,6 +114,7 @@ public final class MimeUtils {
add("application/vnd.sun.xml.writer.global", "sxg");
add("application/vnd.sun.xml.writer.template", "stw");
add("application/vnd.visio", "vsd");
+ add("application/vnd.youtube.yt", "yt");
add("application/x-abiword", "abw");
add("application/x-apple-diskimage", "dmg");
add("application/x-bcpio", "bcpio");
diff --git a/luni/src/main/native/android_system_OsConstants.cpp b/luni/src/main/native/android_system_OsConstants.cpp
index 993b1f7a78..bab6a70a39 100644
--- a/luni/src/main/native/android_system_OsConstants.cpp
+++ b/luni/src/main/native/android_system_OsConstants.cpp
@@ -394,6 +394,7 @@ static void OsConstants_initConstants(JNIEnv* env, jclass c) {
initConstant(env, c, "O_APPEND", O_APPEND);
initConstant(env, c, "O_CLOEXEC", O_CLOEXEC);
initConstant(env, c, "O_CREAT", O_CREAT);
+ initConstant(env, c, "O_DIRECT", O_DIRECT);
initConstant(env, c, "O_EXCL", O_EXCL);
initConstant(env, c, "O_NOCTTY", O_NOCTTY);
initConstant(env, c, "O_NOFOLLOW", O_NOFOLLOW);
diff --git a/luni/src/test/java/libcore/libcore/net/MimeUtilsTest.java b/luni/src/test/java/libcore/libcore/net/MimeUtilsTest.java
index 76e6336b37..f9ff9dfa08 100644
--- a/luni/src/test/java/libcore/libcore/net/MimeUtilsTest.java
+++ b/luni/src/test/java/libcore/libcore/net/MimeUtilsTest.java
@@ -87,4 +87,7 @@ public class MimeUtilsTest extends TestCase {
assertEquals("video/ogg", MimeUtils.guessMimeTypeFromExtension("ogv"));
}
+ public void test_70851634() {
+ assertEquals("application/vnd.youtube.yt", MimeUtils.guessMimeTypeFromExtension("yt"));
+ }
}
diff --git a/ojluni/src/main/java/java/nio/BufferOverflowException.java b/ojluni/src/main/java/java/nio/BufferOverflowException.java
index f359e603af..d141a82d93 100644
--- a/ojluni/src/main/java/java/nio/BufferOverflowException.java
+++ b/ojluni/src/main/java/java/nio/BufferOverflowException.java
@@ -38,14 +38,14 @@ package java.nio;
*/
public class BufferOverflowException
- extends RuntimeException {
+ extends RuntimeException
+{
private static final long serialVersionUID = -5484897634319144535L;
/**
* Constructs an instance of this class.
*/
- public BufferOverflowException() {
- }
+ public BufferOverflowException() { }
}
diff --git a/ojluni/src/main/java/java/nio/BufferUnderflowException.java b/ojluni/src/main/java/java/nio/BufferUnderflowException.java
index 8226c95e6d..d7a062a336 100644
--- a/ojluni/src/main/java/java/nio/BufferUnderflowException.java
+++ b/ojluni/src/main/java/java/nio/BufferUnderflowException.java
@@ -38,14 +38,14 @@ package java.nio;
*/
public class BufferUnderflowException
- extends RuntimeException {
+ extends RuntimeException
+{
private static final long serialVersionUID = -1713313658691622206L;
/**
* Constructs an instance of this class.
*/
- public BufferUnderflowException() {
- }
+ public BufferUnderflowException() { }
}
diff --git a/ojluni/src/main/java/java/nio/InvalidMarkException.java b/ojluni/src/main/java/java/nio/InvalidMarkException.java
index 328c02cd65..ed1a059f1e 100644
--- a/ojluni/src/main/java/java/nio/InvalidMarkException.java
+++ b/ojluni/src/main/java/java/nio/InvalidMarkException.java
@@ -38,14 +38,14 @@ package java.nio;
*/
public class InvalidMarkException
- extends IllegalStateException {
+ extends IllegalStateException
+{
private static final long serialVersionUID = 1698329710438510774L;
/**
* Constructs an instance of this class.
*/
- public InvalidMarkException() {
- }
+ public InvalidMarkException() { }
}
diff --git a/ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java b/ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java
index 08392aeb26..0f1c594fd7 100644
--- a/ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java
+++ b/ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java
@@ -25,6 +25,9 @@
package sun.nio.ch;
+import sun.misc.*;
+
+
/**
* Manipulates a native array of pollfd structs.
*
diff --git a/ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java b/ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java
index 64a505fec6..6f1f8e86f0 100644
--- a/ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java
@@ -28,6 +28,8 @@ package sun.nio.ch;
import java.io.IOException;
import java.nio.channels.*;
import java.nio.channels.spi.*;
+import java.util.*;
+import sun.misc.*;
/**
diff --git a/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
index 740ff8a6cd..1a8e56bdfc 100644
--- a/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
@@ -127,7 +127,7 @@ class DatagramChannelImpl
// -- End of fields protected by stateLock
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
public DatagramChannelImpl(SelectorProvider sp)
@@ -141,7 +141,7 @@ class DatagramChannelImpl
this.fd = Net.socket(family, false);
this.fdVal = IOUtil.fdVal(fd);
this.state = ST_UNCONNECTED;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
// Net#socket will set |fd| if it succeeds.
if (fd != null && fd.valid()) {
guard.open("close");
@@ -173,7 +173,7 @@ class DatagramChannelImpl
this.fd = Net.socket(family, false);
this.fdVal = IOUtil.fdVal(fd);
this.state = ST_UNCONNECTED;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
// Net#socket will set |fd| if it succeeds.
if (fd != null && fd.valid()) {
guard.open("close");
@@ -190,7 +190,7 @@ class DatagramChannelImpl
this.fdVal = IOUtil.fdVal(fd);
this.state = ST_UNCONNECTED;
this.localAddress = Net.localAddress(fd);
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (fd != null && fd.valid()) {
guard.open("close");
}
@@ -1052,7 +1052,7 @@ class DatagramChannelImpl
protected void implCloseSelectableChannel() throws IOException {
synchronized (stateLock) {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
if (state != ST_KILLED)
nd.preClose(fd);
@@ -1088,7 +1088,7 @@ class DatagramChannelImpl
protected void finalize() throws Throwable {
try {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (guard != null) {
guard.warnIfOpen();
}
diff --git a/ojluni/src/main/java/sun/nio/ch/DefaultAsynchronousChannelProvider.java b/ojluni/src/main/java/sun/nio/ch/DefaultAsynchronousChannelProvider.java
index 87a6992188..97caa1a8ff 100644
--- a/ojluni/src/main/java/sun/nio/ch/DefaultAsynchronousChannelProvider.java
+++ b/ojluni/src/main/java/sun/nio/ch/DefaultAsynchronousChannelProvider.java
@@ -60,17 +60,21 @@ public class DefaultAsynchronousChannelProvider {
* Returns the default AsynchronousChannelProvider.
*/
public static AsynchronousChannelProvider create() {
- // Android-changed: Android is Linux based.
- // String osname = AccessController
- // .doPrivileged(new GetPropertyAction("os.name"));
- //
- // if (osname.equals("SunOS"))
- // return new SolarisAsynchronousChannelProvider();
- // if (osname.equals("Linux"))
+ // BEGIN Android-changed: Hardcode AsynchronousChannelProvider provider.
+ /*
+ String osname = AccessController
+ .doPrivileged(new GetPropertyAction("os.name"));
+ if (osname.equals("SunOS"))
+ return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
+ if (osname.equals("Linux"))
+ return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider");
+ if (osname.contains("OS X"))
+ return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
+ if (osname.equals("AIX"))
+ return createProvider("sun.nio.ch.AixAsynchronousChannelProvider");
+ throw new InternalError("platform not recognized");
+ */
return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider");
- // if (osname.contains("OS X"))
- // return new BsdAsynchronousChannelProvider();
- // throw new InternalError("platform not recognized");
+ // END Android-changed: Hardcode AsynchronousChannelProvider provider.
}
-
}
diff --git a/ojluni/src/main/java/sun/nio/ch/EPoll.java b/ojluni/src/main/java/sun/nio/ch/EPoll.java
index dc89056e95..0e99c4f936 100644
--- a/ojluni/src/main/java/sun/nio/ch/EPoll.java
+++ b/ojluni/src/main/java/sun/nio/ch/EPoll.java
@@ -111,4 +111,11 @@ class EPoll {
static native int epollWait(int epfd, long pollAddress, int numfds)
throws IOException;
+
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ IOUtil.load();
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/ch/EPollPort.java b/ojluni/src/main/java/sun/nio/ch/EPollPort.java
index 4d0bbd3b5a..162a8baa97 100644
--- a/ojluni/src/main/java/sun/nio/ch/EPollPort.java
+++ b/ojluni/src/main/java/sun/nio/ch/EPollPort.java
@@ -316,4 +316,11 @@ final class EPollPort
private static native void drain1(int fd) throws IOException;
private static native void close0(int fd);
+
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ IOUtil.load();
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/ch/FileChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/FileChannelImpl.java
index de78c68891..758514b66a 100644
--- a/ojluni/src/main/java/sun/nio/ch/FileChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/FileChannelImpl.java
@@ -85,7 +85,7 @@ public class FileChannelImpl
// Lock for operations involving position and size
private final Object positionLock = new Object();
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
private FileChannelImpl(FileDescriptor fd, String path, boolean readable,
@@ -98,7 +98,7 @@ public class FileChannelImpl
this.parent = parent;
this.path = path;
this.nd = new FileDispatcherImpl(append);
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (fd != null && fd.valid()) {
guard.open("close");
}
@@ -129,7 +129,7 @@ public class FileChannelImpl
// -- Standard channel operations --
protected void implCloseChannel() throws IOException {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
// Release and invalidate any locks that we still hold
if (fileLockTable != null) {
diff --git a/ojluni/src/main/java/sun/nio/ch/FileDispatcherImpl.java b/ojluni/src/main/java/sun/nio/ch/FileDispatcherImpl.java
index b530b3ad12..d1d2867c5f 100644
--- a/ojluni/src/main/java/sun/nio/ch/FileDispatcherImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/FileDispatcherImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,10 +27,19 @@ package sun.nio.ch;
import dalvik.system.BlockGuard;
-import java.io.*;
+import java.io.FileDescriptor;
+import java.io.IOException;
class FileDispatcherImpl extends FileDispatcher {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ IOUtil.load();
+ init();
+ }
+ */
+
FileDispatcherImpl(boolean append) {
/* append is ignored */
}
@@ -39,6 +48,7 @@ class FileDispatcherImpl extends FileDispatcher {
}
int read(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onReadFromDisk();
return read0(fd, address, len);
}
@@ -46,16 +56,19 @@ class FileDispatcherImpl extends FileDispatcher {
int pread(FileDescriptor fd, long address, int len, long position)
throws IOException
{
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onReadFromDisk();
return pread0(fd, address, len, position);
}
long readv(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onReadFromDisk();
return readv0(fd, address, len);
}
int write(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return write0(fd, address, len);
}
@@ -63,6 +76,7 @@ class FileDispatcherImpl extends FileDispatcher {
int pwrite(FileDescriptor fd, long address, int len, long position)
throws IOException
{
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return pwrite0(fd, address, len, position);
}
@@ -70,21 +84,25 @@ class FileDispatcherImpl extends FileDispatcher {
long writev(FileDescriptor fd, long address, int len)
throws IOException
{
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return writev0(fd, address, len);
}
int force(FileDescriptor fd, boolean metaData) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return force0(fd, metaData);
}
int truncate(FileDescriptor fd, long size) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return truncate0(fd, size);
}
long size(FileDescriptor fd) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onReadFromDisk();
return size0(fd);
}
@@ -92,11 +110,13 @@ class FileDispatcherImpl extends FileDispatcher {
int lock(FileDescriptor fd, boolean blocking, long pos, long size,
boolean shared) throws IOException
{
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
return lock0(fd, blocking, pos, size, shared);
}
void release(FileDescriptor fd, long pos, long size) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onWriteToDisk();
release0(fd, pos, size);
}
@@ -163,4 +183,7 @@ class FileDispatcherImpl extends FileDispatcher {
static native void closeIntFD(int fd) throws IOException;
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ // static native void init();
+
}
diff --git a/ojluni/src/main/java/sun/nio/ch/FileKey.java b/ojluni/src/main/java/sun/nio/ch/FileKey.java
index 1adaab32b7..cb2ce53b46 100644
--- a/ojluni/src/main/java/sun/nio/ch/FileKey.java
+++ b/ojluni/src/main/java/sun/nio/ch/FileKey.java
@@ -67,4 +67,12 @@ public class FileKey {
}
private native void init(FileDescriptor fd) throws IOException;
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ private static native void initIDs();
+
+ static {
+ initIDs();
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/ch/Invoker.java b/ojluni/src/main/java/sun/nio/ch/Invoker.java
index cf925e69ac..386f7366e9 100644
--- a/ojluni/src/main/java/sun/nio/ch/Invoker.java
+++ b/ojluni/src/main/java/sun/nio/ch/Invoker.java
@@ -133,16 +133,18 @@ class Invoker {
// clear thread locals when in default thread pool
// Android-changed: System.getSecurityManager always returns null.
- // if (System.getSecurityManager() != null) {
- // Thread me = Thread.currentThread();
- // if (me instanceof sun.misc.InnocuousThread) {
- // GroupAndInvokeCount thisGroupAndInvokeCount = myGroupAndInvokeCount.get();
- // ((sun.misc.InnocuousThread)me).eraseThreadLocals();
- // if (thisGroupAndInvokeCount != null) {
- // myGroupAndInvokeCount.set(thisGroupAndInvokeCount);
- // }
- // }
- // }
+ /*
+ if (System.getSecurityManager() != null) {
+ Thread me = Thread.currentThread();
+ if (me instanceof sun.misc.InnocuousThread) {
+ GroupAndInvokeCount thisGroupAndInvokeCount = myGroupAndInvokeCount.get();
+ ((sun.misc.InnocuousThread)me).eraseThreadLocals();
+ if (thisGroupAndInvokeCount != null) {
+ myGroupAndInvokeCount.set(thisGroupAndInvokeCount);
+ }
+ }
+ }
+ */
}
/**
diff --git a/ojluni/src/main/java/sun/nio/ch/NativeThread.java b/ojluni/src/main/java/sun/nio/ch/NativeThread.java
index de3487ae95..d6e77a28fd 100644
--- a/ojluni/src/main/java/sun/nio/ch/NativeThread.java
+++ b/ojluni/src/main/java/sun/nio/ch/NativeThread.java
@@ -50,4 +50,15 @@ public class NativeThread {
// no effect.
//
public static native void signal(long nt);
+
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ private static native void init();
+
+ static {
+ IOUtil.load();
+ init();
+ }
+ */
+
}
diff --git a/ojluni/src/main/java/sun/nio/ch/Net.java b/ojluni/src/main/java/sun/nio/ch/Net.java
index d9686622da..5f10414d97 100644
--- a/ojluni/src/main/java/sun/nio/ch/Net.java
+++ b/ojluni/src/main/java/sun/nio/ch/Net.java
@@ -95,10 +95,10 @@ public class Net {
public static InetSocketAddress checkAddress(SocketAddress sa) {
if (sa == null)
- // BEGIN Android-changed
+ // BEGIN Android-changed: Throw IllegalArgumentException not NullPointerException.
//throw new NullPointerException();
throw new IllegalArgumentException("sa == null");
- // END Android-changed
+ // END Android-changed: Throw IllegalArgumentException not NullPointerException.
if (!(sa instanceof InetSocketAddress))
throw new UnsupportedAddressTypeException(); // ## needs arg
@@ -135,8 +135,8 @@ public class Net {
nx = new SocketException("Unsupported address type");
else if (x instanceof UnresolvedAddressException) {
nx = new SocketException("Unresolved address");
+ // Android-added: Handling for AlreadyConnectedException.
} else if (x instanceof AlreadyConnectedException) {
- // Android-added.
nx = new SocketException("Already connected");
}
if (nx != x)
@@ -458,6 +458,7 @@ public class Net {
static int connect(ProtocolFamily family, FileDescriptor fd, InetAddress remote, int remotePort)
throws IOException
{
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onNetwork();
boolean preferIPv6 = isIPv6Available() &&
@@ -609,6 +610,9 @@ public class Net {
static native int getInterface6(FileDescriptor fd) throws IOException;
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ // private static native void initIDs();
+
/**
* Event masks for the various poll system calls.
* They will be set platform dependant in the static initializer below.
@@ -628,6 +632,11 @@ public class Net {
static native short pollconnValue();
static {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ IOUtil.load();
+ initIDs();
+ */
POLLIN = pollinValue();
POLLOUT = polloutValue();
diff --git a/ojluni/src/main/java/sun/nio/ch/PollArrayWrapper.java b/ojluni/src/main/java/sun/nio/ch/PollArrayWrapper.java
index 49c0f51ade..bb27acf80b 100644
--- a/ojluni/src/main/java/sun/nio/ch/PollArrayWrapper.java
+++ b/ojluni/src/main/java/sun/nio/ch/PollArrayWrapper.java
@@ -124,4 +124,10 @@ public class PollArrayWrapper extends AbstractPollArrayWrapper {
private static native void interrupt(int fd);
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ IOUtil.load();
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/ch/SelectionKeyImpl.java b/ojluni/src/main/java/sun/nio/ch/SelectionKeyImpl.java
index c84c53f9e8..28102d78fc 100644
--- a/ojluni/src/main/java/sun/nio/ch/SelectionKeyImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/SelectionKeyImpl.java
@@ -25,6 +25,7 @@
package sun.nio.ch;
+import java.io.IOException;
import java.nio.channels.*;
import java.nio.channels.spi.*;
diff --git a/ojluni/src/main/java/sun/nio/ch/ServerSocketChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/ServerSocketChannelImpl.java
index 447e75d54f..e6cad717d1 100644
--- a/ojluni/src/main/java/sun/nio/ch/ServerSocketChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/ServerSocketChannelImpl.java
@@ -106,7 +106,6 @@ class ServerSocketChannelImpl
public ServerSocket socket() {
synchronized (stateLock) {
if (socket == null)
-
socket = ServerSocketAdaptor.create(this);
return socket;
}
@@ -437,6 +436,8 @@ class ServerSocketChannelImpl
private static native void initIDs();
static {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ // IOUtil.load();
initIDs();
nd = new SocketDispatcher();
}
diff --git a/ojluni/src/main/java/sun/nio/ch/SocketChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/SocketChannelImpl.java
index 25ce62640f..a997351a31 100644
--- a/ojluni/src/main/java/sun/nio/ch/SocketChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/SocketChannelImpl.java
@@ -118,7 +118,7 @@ class SocketChannelImpl
// -- End of fields protected by stateLock
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
// Constructor for normal connecting sockets
@@ -129,7 +129,7 @@ class SocketChannelImpl
this.fdVal = IOUtil.fdVal(fd);
this.state = ST_UNCONNECTED;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
// Net#socket will set |fd| if it succeeds.
if (fd != null && fd.valid()) {
guard.open("close");
@@ -146,7 +146,7 @@ class SocketChannelImpl
this.fdVal = IOUtil.fdVal(fd);
this.state = ST_UNCONNECTED;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (fd != null && fd.valid()) {
guard.open("close");
}
@@ -167,7 +167,7 @@ class SocketChannelImpl
this.state = ST_CONNECTED;
this.localAddress = Net.localAddress(fd);
this.remoteAddress = remote;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (fd != null && fd.valid()) {
guard.open("close");
}
@@ -878,7 +878,7 @@ class SocketChannelImpl
// meantime and allocated to an entirely different channel.
//
if (state != ST_KILLED) {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
nd.preClose(fd);
}
diff --git a/ojluni/src/main/java/sun/nio/ch/SocketDispatcher.java b/ojluni/src/main/java/sun/nio/ch/SocketDispatcher.java
index 8dde1f929c..2b63b97d52 100644
--- a/ojluni/src/main/java/sun/nio/ch/SocketDispatcher.java
+++ b/ojluni/src/main/java/sun/nio/ch/SocketDispatcher.java
@@ -38,21 +38,25 @@ class SocketDispatcher extends NativeDispatcher
{
int read(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onNetwork();
return FileDispatcherImpl.read0(fd, address, len);
}
long readv(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onNetwork();
return FileDispatcherImpl.readv0(fd, address, len);
}
int write(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onNetwork();
return FileDispatcherImpl.write0(fd, address, len);
}
long writev(FileDescriptor fd, long address, int len) throws IOException {
+ // Android-added: BlockGuard support.
BlockGuard.getThreadPolicy().onNetwork();
return FileDispatcherImpl.writev0(fd, address, len);
}
diff --git a/ojluni/src/main/java/sun/nio/ch/ThreadPool.java b/ojluni/src/main/java/sun/nio/ch/ThreadPool.java
index bea3c16d1a..485fbe5d2c 100644
--- a/ojluni/src/main/java/sun/nio/ch/ThreadPool.java
+++ b/ojluni/src/main/java/sun/nio/ch/ThreadPool.java
@@ -71,23 +71,31 @@ public class ThreadPool {
}
static ThreadFactory defaultThreadFactory() {
- // Android-changed: System.getSecurityManager always returns null.
- // if (System.getSecurityManager() == null) {
+ // BEGIN Android-changed: System.getSecurityManager always returns null.
+ /*
+ if (System.getSecurityManager() == null) {
+ return (Runnable r) -> {
+ Thread t = new Thread(r);
+ t.setDaemon(true);
+ return t;
+ };
+ } else {
+ return (Runnable r) -> {
+ PrivilegedAction<Thread> action = () -> {
+ Thread t = new sun.misc.InnocuousThread(r);
+ t.setDaemon(true);
+ return t;
+ };
+ return AccessController.doPrivileged(action);
+ };
+ }
+ */
return (Runnable r) -> {
Thread t = new Thread(r);
t.setDaemon(true);
return t;
};
- // } else {
- // return (Runnable r) -> {
- // PrivilegedAction<Thread> action = () -> {
- // Thread t = new sun.misc.InnocuousThread(r);
- // t.setDaemon(true);
- // return t;
- // };
- // return AccessController.doPrivileged(action);
- // };
- // }
+ // END Android-changed: System.getSecurityManager always returns null.
}
private static class DefaultThreadPoolHolder {
diff --git a/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java
index c12862f6a2..aad7cad334 100644
--- a/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java
@@ -25,20 +25,15 @@
package sun.nio.ch;
-import java.io.FileDescriptor;
+import java.nio.channels.*;
+import java.util.concurrent.*;
import java.io.IOException;
+import java.io.FileDescriptor;
import java.net.InetSocketAddress;
-import java.nio.channels.AcceptPendingException;
-import java.nio.channels.AsynchronousCloseException;
-import java.nio.channels.AsynchronousSocketChannel;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.CompletionHandler;
-import java.nio.channels.NotYetBoundException;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicBoolean;
import dalvik.system.CloseGuard;
@@ -74,7 +69,7 @@ class UnixAsynchronousServerSocketChannelImpl
// context for permission check when security manager set
private AccessControlContext acceptAcc;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
@@ -94,13 +89,13 @@ class UnixAsynchronousServerSocketChannelImpl
// add mapping from file descriptor to this channel
port.register(fdVal, this);
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.open("close");
}
@Override
void implClose() throws IOException {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
// remove the mapping
port.unregister(fdVal);
@@ -133,6 +128,7 @@ class UnixAsynchronousServerSocketChannelImpl
}
}
+ // Android-added: CloseGuard support.
protected void finalize() throws Throwable {
try {
if (guard != null) {
@@ -382,6 +378,8 @@ class UnixAsynchronousServerSocketChannelImpl
throws IOException;
static {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ // IOUtil.load();
initIDs();
}
}
diff --git a/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java
index 3df6a99e4d..ce33a8601c 100644
--- a/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java
@@ -25,27 +25,18 @@
package sun.nio.ch;
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
+import java.nio.channels.*;
import java.nio.ByteBuffer;
-import java.nio.channels.AlreadyConnectedException;
-import java.nio.channels.AsynchronousChannel;
-import java.nio.channels.AsynchronousCloseException;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.CompletionHandler;
-import java.nio.channels.ConnectionPendingException;
-import java.nio.channels.InterruptedByTimeoutException;
-import java.nio.channels.ShutdownChannelGroupException;
+import java.net.*;
+import java.util.concurrent.*;
+import java.io.IOException;
+import java.io.FileDescriptor;
import java.security.AccessController;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
-import dalvik.system.CloseGuard;
import sun.net.NetHooks;
import sun.security.action.GetPropertyAction;
+import dalvik.system.CloseGuard;
+
/**
* Unix implementation of AsynchronousSocketChannel
*/
@@ -100,7 +91,7 @@ class UnixAsynchronousSocketChannelImpl
private PendingFuture<Number,Object> writeFuture;
private Future<?> writeTimer;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
UnixAsynchronousSocketChannelImpl(Port port)
@@ -121,7 +112,7 @@ class UnixAsynchronousSocketChannelImpl
// add mapping from file descriptor to this channel
port.register(fdVal, this);
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.open("close");
}
@@ -145,6 +136,7 @@ class UnixAsynchronousSocketChannelImpl
}
this.port = port;
+ // Android-added: CloseGuard support.
guard.open("close");
}
@@ -231,7 +223,7 @@ class UnixAsynchronousSocketChannelImpl
@Override
void implClose() throws IOException {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
// remove the mapping
port.unregister(fdVal);
@@ -243,6 +235,7 @@ class UnixAsynchronousSocketChannelImpl
finish(false, true, true);
}
+ // Android-added: CloseGuard support.
protected void finalize() throws Throwable {
try {
if (guard != null) {
@@ -775,4 +768,11 @@ class UnixAsynchronousSocketChannelImpl
// -- Native methods --
private static native void checkConnect(int fdVal) throws IOException;
+
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ IOUtil.load();
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/cs/ThreadLocalCoders.java b/ojluni/src/main/java/sun/nio/cs/ThreadLocalCoders.java
index b7ecd6bf53..ca7aac0100 100644
--- a/ojluni/src/main/java/sun/nio/cs/ThreadLocalCoders.java
+++ b/ojluni/src/main/java/sun/nio/cs/ThreadLocalCoders.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
diff --git a/ojluni/src/main/java/sun/nio/fs/LinuxNativeDispatcher.java b/ojluni/src/main/java/sun/nio/fs/LinuxNativeDispatcher.java
index 8ccfb68475..a3f27d28db 100644
--- a/ojluni/src/main/java/sun/nio/fs/LinuxNativeDispatcher.java
+++ b/ojluni/src/main/java/sun/nio/fs/LinuxNativeDispatcher.java
@@ -121,6 +121,14 @@ class LinuxNativeDispatcher extends UnixNativeDispatcher {
private static native void init();
static {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("nio");
+ return null;
+ }});
+ */
init();
}
}
diff --git a/ojluni/src/main/java/sun/nio/fs/LinuxWatchService.java b/ojluni/src/main/java/sun/nio/fs/LinuxWatchService.java
index d69347af72..5c42d54ce6 100644
--- a/ojluni/src/main/java/sun/nio/fs/LinuxWatchService.java
+++ b/ojluni/src/main/java/sun/nio/fs/LinuxWatchService.java
@@ -194,7 +194,7 @@ class LinuxWatchService
// address of read buffer
private final long address;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
Poller(UnixFileSystem fs, LinuxWatchService watcher, int ifd, int[] sp) {
@@ -204,7 +204,7 @@ class LinuxWatchService
this.socketpair = sp;
this.wdToKey = new HashMap<Integer,LinuxWatchKey>();
this.address = unsafe.allocateMemory(BUFFER_SIZE);
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.open("close");
}
@@ -302,7 +302,7 @@ class LinuxWatchService
// close watch service
@Override
void implCloseAll() {
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
// invalidate all keys
for (Map.Entry<Integer,LinuxWatchKey> entry: wdToKey.entrySet()) {
@@ -317,6 +317,7 @@ class LinuxWatchService
UnixNativeDispatcher.close(ifd);
}
+ // Android-added: CloseGuard support.
protected void finalize() throws Throwable {
try {
if (guard != null) {
@@ -488,4 +489,15 @@ class LinuxWatchService
private static native void socketpair(int[] sv) throws UnixException;
private static native int poll(int fd1, int fd2) throws UnixException;
+
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("nio");
+ return null;
+ }});
+ }
+ */
}
diff --git a/ojluni/src/main/java/sun/nio/fs/UnixCopyFile.java b/ojluni/src/main/java/sun/nio/fs/UnixCopyFile.java
index f8d8600f4d..67b4695b71 100644
--- a/ojluni/src/main/java/sun/nio/fs/UnixCopyFile.java
+++ b/ojluni/src/main/java/sun/nio/fs/UnixCopyFile.java
@@ -605,4 +605,16 @@ class UnixCopyFile {
static native void transfer(int dst, int src, long addressToPollForCancel)
throws UnixException;
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ static {
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ @Override
+ public Void run() {
+ System.loadLibrary("nio");
+ return null;
+ }});
+ }
+ */
+
}
diff --git a/ojluni/src/main/java/sun/nio/fs/UnixDirectoryStream.java b/ojluni/src/main/java/sun/nio/fs/UnixDirectoryStream.java
index dd3e05ef0c..3a3c715b69 100644
--- a/ojluni/src/main/java/sun/nio/fs/UnixDirectoryStream.java
+++ b/ojluni/src/main/java/sun/nio/fs/UnixDirectoryStream.java
@@ -61,7 +61,7 @@ class UnixDirectoryStream
// directory iterator
private Iterator<Path> iterator;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
/**
@@ -72,7 +72,7 @@ class UnixDirectoryStream
this.dp = dp;
this.filter = filter;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.open("close");
}
@@ -101,7 +101,7 @@ class UnixDirectoryStream
throw new IOException(x.errorString());
}
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
return true;
} else {
@@ -234,10 +234,7 @@ class UnixDirectoryStream
}
}
- /**
- * Cleans up if the user forgets to close it.
- */
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
protected void finalize() throws IOException {
if (guard != null) {
guard.warnIfOpen();
diff --git a/ojluni/src/main/java/sun/nio/fs/UnixFileSystemProvider.java b/ojluni/src/main/java/sun/nio/fs/UnixFileSystemProvider.java
index 37249560b0..b25ccd872b 100644
--- a/ojluni/src/main/java/sun/nio/fs/UnixFileSystemProvider.java
+++ b/ojluni/src/main/java/sun/nio/fs/UnixFileSystemProvider.java
@@ -359,17 +359,20 @@ public abstract class UnixFileSystemProvider
@Override
public FileStore getFileStore(Path obj) throws IOException {
- // Android-changed: Complete information about file systems is neither available to regular
- // apps nor the system server due to SELinux policies.
- //
- // UnixPath file = UnixPath.toUnixPath(obj);
- // SecurityManager sm = System.getSecurityManager();
- // if (sm != null) {
- // sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
- // file.checkRead();
- // }
- // return getFileStore(file);
+ // BEGIN Android-changed: getFileStore(Path) always throws SecurityException.
+ // Complete information about file systems is neither available to regular apps nor the
+ // system server due to SELinux policies.
+ /*
+ UnixPath file = UnixPath.toUnixPath(obj);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
+ file.checkRead();
+ }
+ return getFileStore(file);
+ */
throw new SecurityException("getFileStore");
+ // END Android-changed: getFileStore(Path) always throws SecurityException.
}
@Override
diff --git a/ojluni/src/main/java/sun/nio/fs/UnixNativeDispatcher.java b/ojluni/src/main/java/sun/nio/fs/UnixNativeDispatcher.java
index 82e818491c..09901f3da3 100644
--- a/ojluni/src/main/java/sun/nio/fs/UnixNativeDispatcher.java
+++ b/ojluni/src/main/java/sun/nio/fs/UnixNativeDispatcher.java
@@ -568,6 +568,14 @@ class UnixNativeDispatcher {
private static native int init();
static {
+ // Android-removed: Code to load native libraries, doesn't make sense on Android.
+ /*
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("nio");
+ return null;
+ }});
+ */
capabilities = init();
}
}
diff --git a/ojluni/src/main/java/sun/nio/fs/UnixSecureDirectoryStream.java b/ojluni/src/main/java/sun/nio/fs/UnixSecureDirectoryStream.java
index 8692b6307d..321b4d0207 100644
--- a/ojluni/src/main/java/sun/nio/fs/UnixSecureDirectoryStream.java
+++ b/ojluni/src/main/java/sun/nio/fs/UnixSecureDirectoryStream.java
@@ -47,7 +47,7 @@ class UnixSecureDirectoryStream
private final UnixDirectoryStream ds;
private final int dfd;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
private final CloseGuard guard = CloseGuard.get();
UnixSecureDirectoryStream(UnixPath dir,
@@ -57,7 +57,7 @@ class UnixSecureDirectoryStream
{
this.ds = new UnixDirectoryStream(dir, dp, filter);
this.dfd = dfd;
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
if (dfd != -1) {
guard.open("close");
}
@@ -75,7 +75,7 @@ class UnixSecureDirectoryStream
} finally {
ds.writeLock().unlock();
}
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
guard.close();
}
@@ -569,7 +569,7 @@ class UnixSecureDirectoryStream
/**
* Cleans up if the user forgets to close it.
*/
- // Android-changed: Add CloseGuard support.
+ // Android-added: CloseGuard support.
protected void finalize() throws IOException {
if (guard != null) {
guard.warnIfOpen();