Add intra-core API required by conscrypt
An initial set of methods that need to be visible in
the intra-core API surface for conscrypt to compile.
There's a fix in JavaLibrary.bp to the core-current-stubs-gen
target to stop files in openjdk_mmodule_extra_files showing
up in the core.current.stubs.
Bug: 110404540
Bug: 113148576
Test: build
Change-Id: I4bade4dac925cfcb14df9335918319be897ac50d
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index ae84030..c8044fc 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -525,7 +525,9 @@
srcs: [":core_api_files"],
installable: false,
no_framework_libs: true,
- args: " --exclude-annotations",
+ args: " --exclude-annotations "
+ + "--hide-annotation libcore.api.Hide",
+ merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
}
// A library containing the parts of the public SDK API provided by the core libraries.
diff --git a/dalvik/src/main/java/dalvik/system/BlockGuard.java b/dalvik/src/main/java/dalvik/system/BlockGuard.java
index b0ffecc..549da9e 100644
--- a/dalvik/src/main/java/dalvik/system/BlockGuard.java
+++ b/dalvik/src/main/java/dalvik/system/BlockGuard.java
@@ -33,6 +33,7 @@
*
* @hide
*/
+@libcore.api.IntraCoreApi
public final class BlockGuard {
// TODO: refactor class name to something more generic, since its scope is
@@ -41,6 +42,7 @@
/**
* Per-thread interface used to implement {@code StrictMode.ThreadPolicy}.
*/
+ @libcore.api.IntraCoreApi
public interface Policy {
/**
* Called on disk writes.
@@ -55,6 +57,7 @@
/**
* Called on network operations.
*/
+ @libcore.api.IntraCoreApi
void onNetwork();
/**
@@ -182,6 +185,7 @@
* @return the current thread's policy. Will return the {@link #LAX_POLICY}
* instance if nothing else is set.
*/
+ @libcore.api.IntraCoreApi
public static @NonNull Policy getThreadPolicy() {
return threadPolicy.get();
}
diff --git a/dalvik/src/main/java/dalvik/system/CloseGuard.java b/dalvik/src/main/java/dalvik/system/CloseGuard.java
index 072959b..6b05be0 100644
--- a/dalvik/src/main/java/dalvik/system/CloseGuard.java
+++ b/dalvik/src/main/java/dalvik/system/CloseGuard.java
@@ -108,6 +108,7 @@
*
* @hide
*/
+@libcore.api.IntraCoreApi
public final class CloseGuard {
/**
@@ -134,6 +135,7 @@
* Returns a CloseGuard instance. {@code #open(String)} can be used to set
* up the instance to warn on failure to close.
*/
+ @libcore.api.IntraCoreApi
public static CloseGuard get() {
return new CloseGuard();
}
@@ -207,6 +209,7 @@
* @param closer non-null name of explicit termination method. Printed by warnIfOpen.
* @throws NullPointerException if closer is null.
*/
+ @libcore.api.IntraCoreApi
public void open(String closer) {
// always perform the check for valid API usage...
if (closer == null) {
@@ -235,6 +238,7 @@
* Marks this CloseGuard instance as closed to avoid warnings on
* finalization.
*/
+ @libcore.api.IntraCoreApi
public void close() {
Tracker tracker = currentTracker;
if (tracker != null && closerNameOrAllocationInfo instanceof Throwable) {
@@ -251,6 +255,7 @@
* the allocation to the current reporter. If it was not enabled, it just
* directly logs a brief message.
*/
+ @libcore.api.IntraCoreApi
public void warnIfOpen() {
if (closerNameOrAllocationInfo != null) {
if (closerNameOrAllocationInfo instanceof String) {
diff --git a/luni/src/main/java/android/system/ErrnoException.java b/luni/src/main/java/android/system/ErrnoException.java
index e60ac8f..472acbd 100644
--- a/luni/src/main/java/android/system/ErrnoException.java
+++ b/luni/src/main/java/android/system/ErrnoException.java
@@ -76,6 +76,7 @@
/**
* @hide - internal use only.
*/
+ @libcore.api.IntraCoreApi
public SocketException rethrowAsSocketException() throws SocketException {
throw new SocketException(getMessage(), this);
}
diff --git a/luni/src/main/java/android/system/StructTimeval.java b/luni/src/main/java/android/system/StructTimeval.java
index 91a6f2a..bf864fc 100644
--- a/luni/src/main/java/android/system/StructTimeval.java
+++ b/luni/src/main/java/android/system/StructTimeval.java
@@ -24,11 +24,14 @@
*
* @hide
*/
+@libcore.api.IntraCoreApi
public final class StructTimeval {
/** Seconds. */
+ @libcore.api.IntraCoreApi
public final long tv_sec;
/** Microseconds. */
+ @libcore.api.IntraCoreApi
public final long tv_usec;
private StructTimeval(long tv_sec, long tv_usec) {
@@ -36,17 +39,21 @@
this.tv_usec = tv_usec;
}
+ @libcore.api.IntraCoreApi
public static StructTimeval fromMillis(long millis) {
long tv_sec = millis / 1000;
long tv_usec = (millis - (tv_sec * 1000)) * 1000;
return new StructTimeval(tv_sec, tv_usec);
}
+ @libcore.api.IntraCoreApi
public long toMillis() {
return (tv_sec * 1000) + (tv_usec / 1000);
}
- @Override public String toString() {
+ @libcore.api.IntraCoreApi
+ @Override
+ public String toString() {
return Objects.toString(this);
}
}
diff --git a/luni/src/main/java/libcore/io/IoUtils.java b/luni/src/main/java/libcore/io/IoUtils.java
index 46ea573..f4853c1 100644
--- a/luni/src/main/java/libcore/io/IoUtils.java
+++ b/luni/src/main/java/libcore/io/IoUtils.java
@@ -31,6 +31,8 @@
import libcore.util.NonNull;
import static android.system.OsConstants.*;
+/** @hide */
+@libcore.api.IntraCoreApi
public final class IoUtils {
private IoUtils() {
}
@@ -151,6 +153,7 @@
/**
* Closes 'closeable', ignoring any checked exceptions. Does nothing if 'closeable' is null.
*/
+ @libcore.api.IntraCoreApi
public static void closeQuietly(AutoCloseable closeable) {
if (closeable != null) {
try {
diff --git a/luni/src/main/java/libcore/io/Libcore.java b/luni/src/main/java/libcore/io/Libcore.java
index cbc5a55..3574a64 100644
--- a/luni/src/main/java/libcore/io/Libcore.java
+++ b/luni/src/main/java/libcore/io/Libcore.java
@@ -16,6 +16,8 @@
package libcore.io;
+/** @hide */
+@libcore.api.IntraCoreApi
public final class Libcore {
private Libcore() { }
@@ -29,5 +31,6 @@
/**
* Access to syscalls with helpful checks/guards.
*/
+ @libcore.api.IntraCoreApi
public static Os os = new BlockGuardOs(rawOs);
}
diff --git a/luni/src/main/java/libcore/io/Os.java b/luni/src/main/java/libcore/io/Os.java
index 3f1c809..bdebfce 100644
--- a/luni/src/main/java/libcore/io/Os.java
+++ b/luni/src/main/java/libcore/io/Os.java
@@ -44,6 +44,8 @@
import java.net.SocketException;
import java.nio.ByteBuffer;
+/** @hide */
+@libcore.api.IntraCoreApi
public interface Os {
public FileDescriptor accept(FileDescriptor fd, SocketAddress peerAddress) throws ErrnoException, SocketException;
public boolean access(String path, int mode) throws ErrnoException;
@@ -164,6 +166,7 @@
public void setsockoptIpMreqn(FileDescriptor fd, int level, int option, int value) throws ErrnoException;
public void setsockoptGroupReq(FileDescriptor fd, int level, int option, StructGroupReq value) throws ErrnoException;
public void setsockoptLinger(FileDescriptor fd, int level, int option, StructLinger value) throws ErrnoException;
+ @libcore.api.IntraCoreApi
public void setsockoptTimeval(FileDescriptor fd, int level, int option, StructTimeval value) throws ErrnoException;
public void setuid(int uid) throws ErrnoException;
public void setxattr(String path, String name, byte[] value, int flags) throws ErrnoException;
diff --git a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
index d9c87a4..51cfdde 100644
--- a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
+++ b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
@@ -25,11 +25,15 @@
*
* <p>The policy currently consists of a single flag: whether cleartext network traffic is
* permitted. See {@link #isCleartextTrafficPermitted()}.
+ *
+ * @hide
*/
+@libcore.api.IntraCoreApi
public abstract class NetworkSecurityPolicy {
private static volatile NetworkSecurityPolicy instance = new DefaultNetworkSecurityPolicy();
+ @libcore.api.IntraCoreApi
public static NetworkSecurityPolicy getInstance() {
return instance;
}
@@ -77,6 +81,7 @@
*
* <p>See RFC6962 section 3.3 for more details.
*/
+ @libcore.api.IntraCoreApi
public abstract boolean isCertificateTransparencyVerificationRequired(String hostname);
public static final class DefaultNetworkSecurityPolicy extends NetworkSecurityPolicy {
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 0a07b23..918c3e9 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -159,7 +159,11 @@
"luni/src/main/java/libcore/api/CorePlatformApi.java",
"luni/src/main/java/libcore/api/Hide.java",
"luni/src/main/java/libcore/api/IntraCoreApi.java",
+ "luni/src/main/java/libcore/io/IoUtils.java",
+ "luni/src/main/java/libcore/io/Libcore.java",
+ "luni/src/main/java/libcore/io/Os.java",
"luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java",
+ "luni/src/main/java/libcore/net/NetworkSecurityPolicy.java",
"json/src/main/java/org/json/JSON.java",
"json/src/main/java/org/json/JSONArray.java",
"json/src/main/java/org/json/JSONException.java",
@@ -274,18 +278,14 @@
"luni/src/main/java/libcore/io/ForwardingOs.java",
"luni/src/main/java/libcore/io/IoBridge.java",
"luni/src/main/java/libcore/io/IoTracker.java",
- "luni/src/main/java/libcore/io/IoUtils.java",
- "luni/src/main/java/libcore/io/Libcore.java",
"luni/src/main/java/libcore/io/Linux.java",
"luni/src/main/java/libcore/io/Memory.java",
"luni/src/main/java/libcore/io/MemoryMappedFile.java",
"luni/src/main/java/libcore/io/NioBufferIterator.java",
- "luni/src/main/java/libcore/io/Os.java",
"luni/src/main/java/libcore/io/SizeOf.java",
"luni/src/main/java/libcore/io/Streams.java",
"luni/src/main/java/libcore/math/MathUtils.java",
"luni/src/main/java/libcore/net/MimeUtils.java",
- "luni/src/main/java/libcore/net/NetworkSecurityPolicy.java",
"luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java",
"luni/src/main/java/libcore/net/event/NetworkEventListener.java",
"luni/src/main/java/libcore/net/http/HttpDate.java",
diff --git a/ojluni/annotations/mmodule/Placheholder.annotated.java b/ojluni/annotations/mmodule/Placheholder.annotated.java
deleted file mode 100644
index 50c398f..0000000
--- a/ojluni/annotations/mmodule/Placheholder.annotated.java
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file doesn't contain any code!
-// It exists to allow the :ojluni-annotated-mmodule-stubs target to exist
-// before any real .annotated.java files have been checked in.
-
-// TODO: Delete this when the first real files go in.
diff --git a/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java b/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java
new file mode 100644
index 0000000..1307552
--- /dev/null
+++ b/ojluni/annotations/mmodule/java/sun/security/util/DerEncoder.annotated.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 1997, 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.util;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+@libcore.api.Hide
+@libcore.api.IntraCoreApi
+public interface DerEncoder {
+
+ @libcore.api.IntraCoreApi
+ public void derEncode(OutputStream out)
+ throws IOException;
+
+}
diff --git a/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java b/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java
new file mode 100644
index 0000000..20987ae
--- /dev/null
+++ b/ojluni/annotations/mmodule/java/sun/security/x509/AlgorithmId.annotated.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (c) 1996, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.security.x509;
+
+import java.io.*;
+import java.util.*;
+import java.security.*;
+
+import sun.security.util.*;
+
+@libcore.api.Hide
+@libcore.api.IntraCoreApi
+public class AlgorithmId implements Serializable, DerEncoder {
+
+ @libcore.api.IntraCoreApi
+ public String getName() {
+ throw new RuntimeException("Stub!");
+ }
+
+ @libcore.api.IntraCoreApi
+ public static AlgorithmId get(String algname) throws NoSuchAlgorithmException {
+ throw new RuntimeException("Stub!");
+ }
+}
diff --git a/ojluni/src/main/java/java/net/InetAddress.java b/ojluni/src/main/java/java/net/InetAddress.java
index 2e6b534..e58f307 100644
--- a/ojluni/src/main/java/java/net/InetAddress.java
+++ b/ojluni/src/main/java/java/net/InetAddress.java
@@ -1614,6 +1614,7 @@
*
* @hide used by frameworks/base to ensure that a getAllByName won't cause a DNS lookup.
*/
+ @libcore.api.IntraCoreApi
public static boolean isNumeric(String address) {
InetAddress inetAddress = parseNumericAddressNoThrow(address);
return inetAddress != null && disallowDeprecatedFormats(address, inetAddress) != null;
diff --git a/ojluni/src/main/java/java/net/Socket.java b/ojluni/src/main/java/java/net/Socket.java
index e36d15b..92a3b9f 100644
--- a/ojluni/src/main/java/java/net/Socket.java
+++ b/ojluni/src/main/java/java/net/Socket.java
@@ -1777,6 +1777,7 @@
/**
* @hide internal use only
*/
+ @libcore.api.IntraCoreApi
public FileDescriptor getFileDescriptor$() {
return impl.getFileDescriptor();
}
diff --git a/ojluni/src/main/java/java/security/spec/ECParameterSpec.java b/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
index 65bd027..ce27045 100644
--- a/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
+++ b/ojluni/src/main/java/java/security/spec/ECParameterSpec.java
@@ -121,6 +121,7 @@
*
* @hide
*/
+ @libcore.api.IntraCoreApi
public void setCurveName(String curveName) {
this.curveName = curveName;
}
@@ -131,6 +132,7 @@
*
* @hide
*/
+ @libcore.api.IntraCoreApi
public String getCurveName() {
return curveName;
}
diff --git a/openjdk_java_files.bp b/openjdk_java_files.bp
index c555fdc..631348e 100644
--- a/openjdk_java_files.bp
+++ b/openjdk_java_files.bp
@@ -1393,6 +1393,8 @@
name: "openjdk_mmodule_extra_files",
path: "ojluni/src/lambda/java",
srcs: [
+ "ojluni/src/main/java/sun/security/util/DerEncoder.java",
+ "ojluni/src/main/java/sun/security/x509/AlgorithmId.java",
],
}
@@ -1671,7 +1673,6 @@
"ojluni/src/main/java/sun/security/util/ByteArrayTagOrder.java",
"ojluni/src/main/java/sun/security/util/Cache.java",
"ojluni/src/main/java/sun/security/util/Debug.java",
- "ojluni/src/main/java/sun/security/util/DerEncoder.java",
"ojluni/src/main/java/sun/security/util/DerIndefLenConverter.java",
"ojluni/src/main/java/sun/security/util/DerInputBuffer.java",
"ojluni/src/main/java/sun/security/util/DerInputStream.java",
@@ -1689,7 +1690,6 @@
"ojluni/src/main/java/sun/security/util/SecurityConstants.java",
"ojluni/src/main/java/sun/security/util/SignatureFileVerifier.java",
"ojluni/src/main/java/sun/security/x509/AccessDescription.java",
- "ojluni/src/main/java/sun/security/x509/AlgorithmId.java",
"ojluni/src/main/java/sun/security/x509/AttributeNameEnumeration.java",
"ojluni/src/main/java/sun/security/x509/AuthorityInfoAccessExtension.java",
"ojluni/src/main/java/sun/security/x509/AuthorityKeyIdentifierExtension.java",