Merge ab/7633965
Bug: 169893837
Merged-in: I2cdd175793d51e42886e0b1eb31528afb2093b25
Change-Id: Id281ae04b60f6a38fba11d628a9537f986e33348
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index a6f42eb..dcbff3b 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -883,12 +883,21 @@
name: "art.module.public.api",
visibility: [
"//art/build/sdk",
+ "//libcore/mmodules/core_platform_api",
"//frameworks/base",
"//frameworks/base/api",
],
srcs: [
":core_oj_api_files",
":core_libart_api_files",
+
+ // Some source files in :core_oj_api_files and :openjdk_mmodule_extra_files are
+ // annotated by applying annotations to the .annotated.java stubs files in
+ // ojluni/annotated/mmodules and rather than in the original source. See the comments
+ // in openjdk_java_files.bp for more details.
+ ":openjdk_mmodule_extra_files",
+ ":okhttp_api_files",
+
],
libs: [
// Put framework-api-annotations into libs to avoid exposing the definition of framework's
@@ -920,8 +929,10 @@
droiddoc_options: [
rewrite_openjdk_doc_args,
"--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* ",
+ "--hide-annotation libcore.api.Hide",
],
+ merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
// Emit nullability annotations from the source to the stub files.
annotations_enabled: true,
@@ -987,6 +998,22 @@
],
}
+// Used when compiling higher-level code against art.module.public.api.stubs.module_lib.
+//
+// This is only intended for use within core libraries and must not be used
+// from outside.
+java_system_modules {
+ name: "art-module-lib-api-stubs-system-modules",
+ visibility: [
+ "//art/build/sdk",
+ "//external/conscrypt",
+ "//external/icu/android_icu4j",
+ ],
+ libs: [
+ "art.module.public.api.stubs.module_lib",
+ ],
+}
+
// A stubs target containing the parts of the public SDK API provided by the
// core library.
//
@@ -1046,6 +1073,43 @@
],
}
+// A stubs target containing the parts of the public SDK & @SystemApi(MODULE_LIBRARIES) API
+// provided by the core library.
+//
+// Don't use this directly, use "sdk_version: module_current".
+java_library {
+ name: "core.module_lib.stubs",
+ static_libs: [
+ "art.module.public.api.stubs.module_lib",
+
+ // Replace the following with the module-lib correspondence when Conscrypt or i18N module
+ // provides @SystemApi(MODULE_LIBRARIES). Currently, assume that only ART module provides
+ // @SystemApi(MODULE_LIBRARIES).
+ "conscrypt.module.public.api.stubs",
+ "i18n.module.public.api.stubs",
+ ],
+ sdk_version: "none",
+ system_modules: "none",
+ visibility: ["//visibility:private"],
+}
+
+// Used when compiling higher-level code with sdk_version "module_current"
+java_system_modules {
+ name: "core-module-lib-stubs-system-modules",
+ libs: [
+ "core.module_lib.stubs",
+ // This one is not on device but it's needed when javac compiles code
+ // containing lambdas.
+ "core-lambda-stubs-for-system-modules",
+ // This one is not on device but it's needed when javac compiles code
+ // containing @Generated annotations produced by some code generation
+ // tools.
+ // See http://b/123891440.
+ "core-generated-annotation-stubs",
+ ],
+ visibility: ["//visibility:public"],
+}
+
// Target for validating nullability annotations for correctness and
// completeness. To check that there are no nullability errors:
// m art-module-public-api-stubs-nullability-validation
diff --git a/NativeCode.bp b/NativeCode.bp
index 18a8abc..a7f18ea 100644
--- a/NativeCode.bp
+++ b/NativeCode.bp
@@ -52,6 +52,7 @@
name: "libjavacore",
visibility: [
"//art/build/apex",
+ "//art/runtime",
],
apex_available: [
"com.android.art",
diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt
index 195abb7..15741a7 100644
--- a/api/module-lib-current.txt
+++ b/api/module-lib-current.txt
@@ -1,6 +1,582 @@
// Signature format: 2.0
+package android.compat {
+
+ public final class Compatibility {
+ method public static void clearBehaviorChangeDelegate();
+ method public static void clearOverrides();
+ method public static boolean isChangeEnabled(long);
+ method public static void reportUnconditionalChange(long);
+ method public static void setBehaviorChangeDelegate(android.compat.Compatibility.BehaviorChangeDelegate);
+ method public static void setOverrides(android.compat.Compatibility.ChangeConfig);
+ }
+
+ public static interface Compatibility.BehaviorChangeDelegate {
+ method public default boolean isChangeEnabled(long);
+ method public default void onChangeReported(long);
+ }
+
+ public static final class Compatibility.ChangeConfig {
+ ctor public Compatibility.ChangeConfig(@NonNull java.util.Set<java.lang.Long>, @NonNull java.util.Set<java.lang.Long>);
+ method @NonNull public long[] getDisabledChangesArray();
+ method @NonNull public java.util.Set<java.lang.Long> getDisabledSet();
+ method @NonNull public long[] getEnabledChangesArray();
+ method @NonNull public java.util.Set<java.lang.Long> getEnabledSet();
+ method public boolean isEmpty();
+ method public boolean isForceDisabled(long);
+ method public boolean isForceEnabled(long);
+ }
+
+}
+
+package android.system {
+
+ public final class NetlinkSocketAddress extends java.net.SocketAddress {
+ ctor public NetlinkSocketAddress(int, int);
+ method public int getGroupsMask();
+ method public int getPortId();
+ }
+
+ public final class Os {
+ method @Nullable public static android.system.StructCapUserData[] capget(@NonNull android.system.StructCapUserHeader) throws android.system.ErrnoException;
+ method public static void capset(@NonNull android.system.StructCapUserHeader, @NonNull android.system.StructCapUserData[]) throws android.system.ErrnoException;
+ method public static int getpgid(int) throws android.system.ErrnoException;
+ method @Nullable public static android.system.StructRlimit getrlimit(int) throws android.system.ErrnoException;
+ method public static int getsockoptInt(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
+ method @Nullable public static android.system.StructLinger getsockoptLinger(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
+ method public static int ioctlInt(@NonNull java.io.FileDescriptor, int) throws android.system.ErrnoException;
+ method @Nullable public static java.io.FileDescriptor[] pipe2(int) throws android.system.ErrnoException;
+ method @Nullable public static String realpath(@Nullable String) throws android.system.ErrnoException;
+ method public static void setpgid(int, int) throws android.system.ErrnoException;
+ method public static void setregid(int, int) throws android.system.ErrnoException;
+ method public static void setreuid(int, int) throws android.system.ErrnoException;
+ method public static void setsockoptIfreq(@NonNull java.io.FileDescriptor, int, int, @Nullable String) throws android.system.ErrnoException;
+ method public static void setsockoptLinger(@NonNull java.io.FileDescriptor, int, int, @NonNull android.system.StructLinger) throws android.system.ErrnoException;
+ method public static long splice(@NonNull java.io.FileDescriptor, @Nullable android.system.Int64Ref, @NonNull java.io.FileDescriptor, @Nullable android.system.Int64Ref, long, int) throws android.system.ErrnoException;
+ method public static void unlink(@Nullable String) throws android.system.ErrnoException;
+ }
+
+ public final class OsConstants {
+ method public static int CAP_TO_INDEX(int);
+ method public static int CAP_TO_MASK(int);
+ field public static final int ARPHRD_LOOPBACK;
+ field public static final int EUSERS;
+ field public static final int MAP_POPULATE;
+ field public static final int O_DIRECT;
+ field public static final int PR_CAP_AMBIENT;
+ field public static final int PR_CAP_AMBIENT_RAISE;
+ field public static final int RLIMIT_NOFILE;
+ field public static final int RTMGRP_IPV4_IFADDR;
+ field public static final int SPLICE_F_MORE;
+ field public static final int SPLICE_F_MOVE;
+ field public static final int TIOCOUTQ;
+ field public static final int UDP_ENCAP;
+ field public static final int UDP_ENCAP_ESPINUDP;
+ field public static final int XATTR_CREATE;
+ field public static final int XATTR_REPLACE;
+ field public static final int _LINUX_CAPABILITY_VERSION_3;
+ }
+
+ public final class PacketSocketAddress extends java.net.SocketAddress {
+ ctor public PacketSocketAddress(int, int, byte[]);
+ }
+
+ public final class StructCapUserData {
+ ctor public StructCapUserData(int, int, int);
+ field public final int effective;
+ field public final int inheritable;
+ field public final int permitted;
+ }
+
+ public final class StructCapUserHeader {
+ ctor public StructCapUserHeader(int, int);
+ }
+
+ public final class StructLinger {
+ ctor public StructLinger(int, int);
+ method public boolean isOn();
+ field public final int l_linger;
+ }
+
+ public final class StructRlimit {
+ field public final long rlim_cur;
+ }
+
+ public final class UnixSocketAddress extends java.net.SocketAddress {
+ method public static android.system.UnixSocketAddress createFileSystem(String);
+ }
+
+ public final class VmSocketAddress extends java.net.SocketAddress {
+ ctor public VmSocketAddress(int, int);
+ method public int getSvmCid();
+ method public int getSvmPort();
+ }
+
+}
+
+package com.android.okhttp.internalandroidapi {
+
+ public final class AndroidResponseCacheAdapter {
+ ctor public AndroidResponseCacheAdapter(@NonNull com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder);
+ method public void close() throws java.io.IOException;
+ method public void delete() throws java.io.IOException;
+ method public void flush() throws java.io.IOException;
+ method @Nullable public java.net.CacheResponse get(@NonNull java.net.URI, @NonNull String, @Nullable java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ method public int getHitCount();
+ method public long getMaxSize();
+ method public int getNetworkCount();
+ method public int getRequestCount();
+ method public long getSize() throws java.io.IOException;
+ method @Nullable public java.net.CacheRequest put(@NonNull java.net.URI, @NonNull java.net.URLConnection) throws java.io.IOException;
+ }
+
+ public interface HasCacheHolder {
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ }
+
+ public static final class HasCacheHolder.CacheHolder {
+ method @NonNull public static com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder create(@NonNull java.io.File, long);
+ method public boolean isEquivalent(@NonNull java.io.File, long);
+ }
+
+}
+
+package dalvik.annotation.codegen {
+
+ @java.lang.annotation.Repeatable(CovariantReturnType.CovariantReturnTypes.class) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface CovariantReturnType {
+ method public abstract int presentAfter();
+ method public abstract Class<?> returnType();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public static @interface CovariantReturnType.CovariantReturnTypes {
+ method public abstract dalvik.annotation.codegen.CovariantReturnType[] value();
+ }
+
+}
+
+package dalvik.annotation.optimization {
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface CriticalNative {
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface FastNative {
+ }
+
+}
+
+package dalvik.system {
+
+ public final class AnnotatedStackTraceElement {
+ method @Nullable public Object getBlockedOn();
+ method @Nullable public Object[] getHeldLocks();
+ method @NonNull public StackTraceElement getStackTraceElement();
+ }
+
+ public class AppSpecializationHooks {
+ method public static void handleCompatChangesBeforeBindingApplication();
+ }
+
+ public class BaseDexClassLoader extends java.lang.ClassLoader {
+ method public void addDexPath(@Nullable String);
+ method public void addNativePath(@NonNull java.util.Collection<java.lang.String>);
+ method @NonNull public String getLdLibraryPath();
+ method public void reportClassLoaderChain();
+ method public static void setReporter(@Nullable dalvik.system.BaseDexClassLoader.Reporter);
+ }
+
+ public static interface BaseDexClassLoader.Reporter {
+ method public void report(@NonNull java.util.Map<java.lang.String,java.lang.String>);
+ }
+
+ public final class BlockGuard {
+ method @NonNull public static dalvik.system.BlockGuard.Policy getThreadPolicy();
+ method @NonNull public static dalvik.system.BlockGuard.VmPolicy getVmPolicy();
+ method public static void setThreadPolicy(@NonNull dalvik.system.BlockGuard.Policy);
+ method public static void setVmPolicy(@NonNull dalvik.system.BlockGuard.VmPolicy);
+ field public static final dalvik.system.BlockGuard.Policy LAX_POLICY;
+ field public static final dalvik.system.BlockGuard.VmPolicy LAX_VM_POLICY;
+ }
+
+ public static interface BlockGuard.Policy {
+ method public int getPolicyMask();
+ method public void onReadFromDisk();
+ method public void onUnbufferedIO();
+ method public void onWriteToDisk();
+ }
+
+ public static interface BlockGuard.VmPolicy {
+ method public void onPathAccess(@NonNull String);
+ }
+
+ public final class CloseGuard {
+ method public void close();
+ method public static dalvik.system.CloseGuard get();
+ method public static dalvik.system.CloseGuard.Reporter getReporter();
+ method public void open(String);
+ method public void openWithCallSite(String, String);
+ method public static void setEnabled(boolean);
+ method public static void setReporter(dalvik.system.CloseGuard.Reporter);
+ method public void warnIfOpen();
+ }
+
+ public static interface CloseGuard.Reporter {
+ method public void report(String, Throwable);
+ method public default void report(String);
+ }
+
+ public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
+ ctor public DelegateLastClassLoader(String, String, ClassLoader, ClassLoader[]);
+ }
+
+ @Deprecated public final class DexFile {
+ method @Deprecated @NonNull public static dalvik.system.DexFile.OptimizationInfo getDexFileOptimizationInfo(@NonNull String, @NonNull String) throws java.io.FileNotFoundException;
+ method @Deprecated @Nullable public static String[] getDexFileOutputPaths(@NonNull String, @NonNull String) throws java.io.FileNotFoundException;
+ method @Deprecated public static int getDexOptNeeded(@NonNull String, @NonNull String, @NonNull String, @Nullable String, boolean, boolean) throws java.io.FileNotFoundException, java.io.IOException;
+ method @Deprecated @NonNull public static String getSafeModeCompilerFilter(@NonNull String);
+ method @Deprecated public static boolean isProfileGuidedCompilerFilter(@NonNull String);
+ method @Deprecated public static boolean isValidCompilerFilter(@NonNull String);
+ field @Deprecated public static final int DEX2OAT_FOR_FILTER = 3; // 0x3
+ field @Deprecated public static final int NO_DEXOPT_NEEDED = 0; // 0x0
+ }
+
+ @Deprecated public static final class DexFile.OptimizationInfo {
+ method @Deprecated @NonNull public String getReason();
+ method @Deprecated @NonNull public String getStatus();
+ }
+
+ public class PathClassLoader extends dalvik.system.BaseDexClassLoader {
+ ctor public PathClassLoader(@NonNull String, @Nullable String, @Nullable ClassLoader, @Nullable ClassLoader[]);
+ }
+
+ public final class RuntimeHooks {
+ method public static void setTimeZoneIdSupplier(@NonNull java.util.function.Supplier<java.lang.String>);
+ method public static void setUncaughtExceptionPreHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
+ }
+
+ public abstract class SocketTagger {
+ ctor public SocketTagger();
+ method public static dalvik.system.SocketTagger get();
+ method public static void set(dalvik.system.SocketTagger);
+ method public abstract void tag(java.io.FileDescriptor) throws java.net.SocketException;
+ method public final void tag(java.net.Socket) throws java.net.SocketException;
+ method public final void tag(java.net.DatagramSocket) throws java.net.SocketException;
+ method public abstract void untag(java.io.FileDescriptor) throws java.net.SocketException;
+ method public final void untag(java.net.Socket) throws java.net.SocketException;
+ method public final void untag(java.net.DatagramSocket) throws java.net.SocketException;
+ }
+
+ public final class VMDebug {
+ method public static void attachAgent(String, ClassLoader) throws java.io.IOException;
+ method public static long countInstancesOfClass(Class, boolean);
+ method public static long[] countInstancesOfClasses(Class[], boolean);
+ method public static void dumpHprofData(String) throws java.io.IOException;
+ method public static void dumpHprofData(String, java.io.FileDescriptor) throws java.io.IOException;
+ method public static void dumpHprofDataDdms();
+ method public static void dumpReferenceTables();
+ method public static int getAllocCount(int);
+ method @dalvik.annotation.optimization.FastNative public static int getLoadedClassCount();
+ method public static int getMethodTracingMode();
+ method public static String getRuntimeStat(String);
+ method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
+ method public static String[] getVmFeatureList();
+ method @dalvik.annotation.optimization.FastNative public static boolean isDebuggerConnected();
+ method @dalvik.annotation.optimization.FastNative public static boolean isDebuggingEnabled();
+ method @dalvik.annotation.optimization.FastNative public static long lastDebuggerActivity();
+ method @dalvik.annotation.optimization.FastNative public static void printLoadedClasses(int);
+ method public static void resetAllocCount(int);
+ method public static void setAllocTrackerStackDepth(int);
+ method public static void startAllocCounting();
+ method public static void startMethodTracing(String, int, int, boolean, int);
+ method public static void startMethodTracing(String, java.io.FileDescriptor, int, int, boolean, int, boolean);
+ method public static void startMethodTracingDdms(int, int, boolean, int);
+ method public static void stopAllocCounting();
+ method public static void stopMethodTracing();
+ method @dalvik.annotation.optimization.FastNative public static long threadCpuTimeNanos();
+ field public static final int KIND_ALL_COUNTS = -1; // 0xffffffff
+ field public static final int KIND_GLOBAL_ALLOCATED_BYTES = 2; // 0x2
+ field public static final int KIND_GLOBAL_ALLOCATED_OBJECTS = 1; // 0x1
+ field public static final int KIND_GLOBAL_CLASS_INIT_COUNT = 32; // 0x20
+ field public static final int KIND_GLOBAL_CLASS_INIT_TIME = 64; // 0x40
+ field public static final int KIND_GLOBAL_FREED_BYTES = 8; // 0x8
+ field public static final int KIND_GLOBAL_FREED_OBJECTS = 4; // 0x4
+ field public static final int KIND_GLOBAL_GC_INVOCATIONS = 16; // 0x10
+ field public static final int KIND_THREAD_ALLOCATED_BYTES = 131072; // 0x20000
+ field public static final int KIND_THREAD_ALLOCATED_OBJECTS = 65536; // 0x10000
+ field public static final int KIND_THREAD_GC_INVOCATIONS = 1048576; // 0x100000
+ field public static final int TRACE_COUNT_ALLOCS = 1; // 0x1
+ }
+
+ public final class VMRuntime {
+ method @dalvik.annotation.optimization.FastNative public long addressOf(Object);
+ method public static void bootCompleted();
+ method public void clampGrowthLimit();
+ method public void clearGrowthLimit();
+ method public static String getCurrentInstructionSet();
+ method public static String getInstructionSet(String);
+ method public static dalvik.system.VMRuntime getRuntime();
+ method public int getTargetSdkVersion();
+ method @dalvik.annotation.optimization.FastNative public boolean is64Bit();
+ method public static boolean is64BitAbi(String);
+ method public static boolean is64BitInstructionSet(String);
+ method @dalvik.annotation.optimization.FastNative public boolean isCheckJniEnabled();
+ method @dalvik.annotation.optimization.FastNative public boolean isNativeDebuggable();
+ method public static boolean isValidClassLoaderContext(String);
+ method @dalvik.annotation.optimization.FastNative public Object newNonMovableArray(Class<?>, int);
+ method @dalvik.annotation.optimization.FastNative public Object newUnpaddedArray(Class<?>, int);
+ method public void notifyStartupCompleted();
+ method public void preloadDexCaches();
+ method public static void registerAppInfo(String, String, String, String[], int);
+ method public void registerNativeAllocation(long);
+ method @Deprecated public void registerNativeAllocation(int);
+ method public void registerNativeFree(long);
+ method @Deprecated public void registerNativeFree(int);
+ method public static void registerSensitiveThread();
+ method public void requestConcurrentGC();
+ method public static void resetJitCounters();
+ method public static void setDedupeHiddenApiWarnings(boolean);
+ method public void setDisabledCompatChanges(long[]);
+ method public void setHiddenApiAccessLogSamplingRate(int);
+ method public void setHiddenApiExemptions(String[]);
+ method public static void setHiddenApiUsageLogger(dalvik.system.VMRuntime.HiddenApiUsageLogger);
+ method public static void setNonSdkApiUsageConsumer(java.util.function.Consumer<java.lang.String>);
+ method public static void setProcessDataDirectory(String);
+ method public static void setProcessPackageName(String);
+ method public void setTargetSdkVersion(int);
+ method public void updateProcessState(int);
+ method public String vmInstructionSet();
+ method public String vmLibrary();
+ field public static final int CODE_PATH_TYPE_PRIMARY_APK = 1; // 0x1
+ field public static final int CODE_PATH_TYPE_SECONDARY_DEX = 4; // 0x4
+ field public static final int CODE_PATH_TYPE_SPLIT_APK = 2; // 0x2
+ field public static final int SDK_VERSION_CUR_DEVELOPMENT = 10000; // 0x2710
+ }
+
+ public static interface VMRuntime.HiddenApiUsageLogger {
+ method public void hiddenApiUsed(int, String, String, int, boolean);
+ field public static final int ACCESS_METHOD_JNI = 2; // 0x2
+ field public static final int ACCESS_METHOD_LINKING = 3; // 0x3
+ field public static final int ACCESS_METHOD_NONE = 0; // 0x0
+ field public static final int ACCESS_METHOD_REFLECTION = 1; // 0x1
+ }
+
+ public final class VMStack {
+ method @Nullable @dalvik.annotation.optimization.FastNative public static dalvik.system.AnnotatedStackTraceElement[] getAnnotatedThreadStackTrace(Thread);
+ }
+
+ public final class ZygoteHooks {
+ method public static void gcAndFinalize();
+ method public static boolean isIndefiniteThreadSuspensionSafe();
+ method public static void onBeginPreload();
+ method public static void onEndPreload();
+ method public static void postForkChild(int, boolean, boolean, String);
+ method public static void postForkCommon();
+ method public static void postForkSystemServer(int);
+ method public static void preFork();
+ method public static void startZygoteNoThreadCreation();
+ method public static void stopZygoteNoThreadCreation();
+ }
+
+}
+
+package java.io {
+
+ public final class FileDescriptor {
+ method public int getInt$();
+ method public void setInt$(int);
+ }
+
+ public class FileInputStream extends java.io.InputStream {
+ ctor public FileInputStream(java.io.FileDescriptor, boolean);
+ }
+
+}
+
+package java.lang {
+
+ public class Thread implements java.lang.Runnable {
+ method public static java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionPreHandler();
+ method public static void setUncaughtExceptionPreHandler(java.lang.Thread.UncaughtExceptionHandler);
+ }
+
+}
+
+package java.net {
+
+ public class DatagramSocket implements java.io.Closeable {
+ method public java.io.FileDescriptor getFileDescriptor$();
+ }
+
+ public final class Inet4Address extends java.net.InetAddress {
+ field public static final java.net.InetAddress ALL;
+ field public static final java.net.InetAddress ANY;
+ field public static final java.net.InetAddress LOOPBACK;
+ }
+
+ public final class Inet6Address extends java.net.InetAddress {
+ field public static final java.net.InetAddress ANY;
+ field public static final java.net.InetAddress LOOPBACK;
+ }
+
+ public class InetAddress implements java.io.Serializable {
+ method public static void clearDnsCache();
+ method @NonNull public static java.net.InetAddress[] getAllByNameOnNet(@Nullable String, int) throws java.net.UnknownHostException;
+ method @NonNull public static java.net.InetAddress getByNameOnNet(@Nullable String, int) throws java.net.UnknownHostException;
+ method @Deprecated public static boolean isNumeric(String);
+ method @Deprecated public static java.net.InetAddress parseNumericAddress(String);
+ }
+
+ public class InetSocketAddress extends java.net.SocketAddress {
+ ctor public InetSocketAddress();
+ }
+
+ public class ServerSocket implements java.io.Closeable {
+ method public java.net.SocketImpl getImpl() throws java.net.SocketException;
+ }
+
+ public class Socket implements java.io.Closeable {
+ method public java.io.FileDescriptor getFileDescriptor$();
+ }
+
+ public abstract class SocketImpl implements java.net.SocketOptions {
+ method public java.io.FileDescriptor getFD$();
+ }
+
+}
+
+package java.nio {
+
+ public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ByteBuffer> {
+ method public void setAccessible(boolean);
+ }
+
+ public class DirectByteBuffer extends java.nio.MappedByteBuffer {
+ ctor public DirectByteBuffer(int, long, java.io.FileDescriptor, Runnable, boolean);
+ method public final long address();
+ method public final void setAccessible(boolean);
+ }
+
+ public final class NIOAccess {
+ method public static Object getBaseArray(java.nio.Buffer);
+ method public static int getBaseArrayOffset(java.nio.Buffer);
+ }
+
+ public final class NioUtils {
+ method public static void freeDirectBuffer(java.nio.ByteBuffer);
+ method public static byte[] unsafeArray(java.nio.ByteBuffer);
+ method public static int unsafeArrayOffset(java.nio.ByteBuffer);
+ }
+
+}
+
+package java.security {
+
+ public abstract class Provider extends java.util.Properties {
+ method public void warmUpServiceProvision();
+ }
+
+ public abstract class Signature extends java.security.SignatureSpi {
+ method public java.security.SignatureSpi getCurrentSpi();
+ }
+
+}
+
+package java.text {
+
+ public abstract class DateFormat extends java.text.Format {
+ method public static final void set24HourTimePref(Boolean);
+ }
+
+}
+
+package java.util {
+
+ public class LinkedHashMap<K, V> extends java.util.HashMap<K,V> implements java.util.Map<K,V> {
+ method public java.util.Map.Entry<K,V> eldest();
+ }
+
+}
+
+package java.util.zip {
+
+ public class ZipEntry implements java.lang.Cloneable {
+ method public long getDataOffset();
+ }
+
+}
+
+package javax.crypto {
+
+ public class Cipher {
+ method public javax.crypto.CipherSpi getCurrentSpi();
+ }
+
+ public class Mac implements java.lang.Cloneable {
+ method public javax.crypto.MacSpi getCurrentSpi();
+ }
+
+}
+
+package javax.net.ssl {
+
+ public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
+ method public static javax.net.ssl.HostnameVerifier getStrictHostnameVerifier();
+ }
+
+}
+
+package libcore.content.type {
+
+ public final class MimeMap {
+ method @NonNull public libcore.content.type.MimeMap.Builder buildUpon();
+ method @NonNull public static libcore.content.type.MimeMap.Builder builder();
+ method @NonNull public java.util.Set<java.lang.String> extensions();
+ method @NonNull public static libcore.content.type.MimeMap getDefault();
+ method @Nullable public String guessExtensionFromMimeType(@Nullable String);
+ method @Nullable public String guessMimeTypeFromExtension(@Nullable String);
+ method public boolean hasExtension(@Nullable String);
+ method public boolean hasMimeType(@Nullable String);
+ method @NonNull public java.util.Set<java.lang.String> mimeTypes();
+ method public static void setDefaultSupplier(@NonNull java.util.function.Supplier<libcore.content.type.MimeMap>);
+ }
+
+ public static final class MimeMap.Builder {
+ method @NonNull public libcore.content.type.MimeMap.Builder addMimeMapping(@NonNull String, @NonNull java.util.List<java.lang.String>);
+ method @NonNull public libcore.content.type.MimeMap build();
+ }
+
+}
+
package libcore.io {
+ public class ForwardingOs implements libcore.io.Os {
+ ctor protected ForwardingOs(@NonNull libcore.io.Os);
+ method public boolean access(@Nullable String, int) throws android.system.ErrnoException;
+ method public java.io.FileDescriptor open(@Nullable String, int, int) throws android.system.ErrnoException;
+ method public void remove(@Nullable String) throws android.system.ErrnoException;
+ method public void rename(@Nullable String, @Nullable String) throws android.system.ErrnoException;
+ method @Nullable public android.system.StructStat stat(@Nullable String) throws android.system.ErrnoException;
+ method public void unlink(@Nullable String) throws android.system.ErrnoException;
+ }
+
+ public final class IoBridge {
+ method public static void closeAndSignalBlockedThreads(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+ method @NonNull public static java.io.FileDescriptor open(@NonNull String, int) throws java.io.FileNotFoundException;
+ method public static int read(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
+ method public static void write(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
+ }
+
+ public final class IoUtils {
+ method public static int acquireRawFd(@NonNull java.io.FileDescriptor);
+ method public static void close(@Nullable java.io.FileDescriptor) throws java.io.IOException;
+ method public static void closeQuietly(@Nullable AutoCloseable);
+ method public static void closeQuietly(@Nullable java.io.FileDescriptor);
+ method public static void closeQuietly(@Nullable java.net.Socket);
+ method @NonNull public static byte[] readFileAsByteArray(@NonNull String) throws java.io.IOException;
+ method @NonNull public static String readFileAsString(@NonNull String) throws java.io.IOException;
+ method public static void setBlocking(@NonNull java.io.FileDescriptor, boolean) throws java.io.IOException;
+ method public static void setFdOwner(@NonNull java.io.FileDescriptor, @NonNull Object);
+ }
+
public final class Memory {
method public static void memmove(@NonNull Object, int, @NonNull Object, int, long);
method public static int peekInt(@NonNull byte[], int, @NonNull java.nio.ByteOrder);
@@ -10,5 +586,280 @@
method public static void pokeShort(@NonNull byte[], int, short, @NonNull java.nio.ByteOrder);
}
+ public interface Os {
+ method public static boolean compareAndSetDefault(libcore.io.Os, libcore.io.Os);
+ method public static libcore.io.Os getDefault();
+ }
+
+ public final class Streams {
+ method public static int copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
+ method public static void readFully(@NonNull java.io.InputStream, @NonNull byte[]) throws java.io.IOException;
+ method @NonNull public static byte[] readFully(@NonNull java.io.InputStream) throws java.io.IOException;
+ method @NonNull public static String readFully(@NonNull java.io.Reader) throws java.io.IOException;
+ method @NonNull public static byte[] readFullyNoClose(@NonNull java.io.InputStream) throws java.io.IOException;
+ method public static int readSingleByte(@NonNull java.io.InputStream) throws java.io.IOException;
+ method public static long skipByReading(@NonNull java.io.InputStream, long) throws java.io.IOException;
+ method public static void writeSingleByte(@NonNull java.io.OutputStream, int) throws java.io.IOException;
+ }
+
+}
+
+package libcore.net {
+
+ public class InetAddressUtils {
+ method public static boolean isNumericAddress(String);
+ method public static java.net.InetAddress parseNumericAddress(String);
+ }
+
+ public abstract class NetworkSecurityPolicy {
+ ctor public NetworkSecurityPolicy();
+ method public static libcore.net.NetworkSecurityPolicy getInstance();
+ method public abstract boolean isCertificateTransparencyVerificationRequired(String);
+ method public abstract boolean isCleartextTrafficPermitted();
+ method public abstract boolean isCleartextTrafficPermitted(String);
+ method public static void setInstance(libcore.net.NetworkSecurityPolicy);
+ }
+
+}
+
+package libcore.net.event {
+
+ public final class NetworkEventDispatcher {
+ method public void dispatchNetworkConfigurationChange();
+ method public static libcore.net.event.NetworkEventDispatcher getInstance();
+ }
+
+}
+
+package libcore.net.http {
+
+ public interface Dns {
+ method @NonNull public java.util.List<java.net.InetAddress> lookup(@Nullable String) throws java.net.UnknownHostException;
+ }
+
+ public class HttpURLConnectionFactory {
+ method @NonNull public static libcore.net.http.HttpURLConnectionFactory createInstance();
+ method public java.net.URLConnection openConnection(@NonNull java.net.URL, @NonNull javax.net.SocketFactory, @NonNull java.net.Proxy) throws java.io.IOException;
+ method public void setDns(@NonNull libcore.net.http.Dns);
+ method public void setNewConnectionPool(int, long, @NonNull java.util.concurrent.TimeUnit);
+ }
+
+}
+
+package libcore.util {
+
+ public final class EmptyArray {
+ field @NonNull public static final boolean[] BOOLEAN;
+ field @NonNull public static final byte[] BYTE;
+ field @NonNull public static final float[] FLOAT;
+ field @NonNull public static final int[] INT;
+ field @NonNull public static final long[] LONG;
+ field @NonNull public static final Object[] OBJECT;
+ field @NonNull public static final String[] STRING;
+ }
+
+ public final class FP16 {
+ method public static short ceil(short);
+ method public static int compare(short, short);
+ method public static boolean equals(short, short);
+ method public static short floor(short);
+ method public static boolean greater(short, short);
+ method public static boolean greaterEquals(short, short);
+ method public static boolean isInfinite(short);
+ method public static boolean isNaN(short);
+ method public static boolean isNormalized(short);
+ method public static boolean less(short, short);
+ method public static boolean lessEquals(short, short);
+ method public static short max(short, short);
+ method public static short min(short, short);
+ method public static short rint(short);
+ method public static float toFloat(short);
+ method public static short toHalf(float);
+ method public static String toHexString(short);
+ method public static short trunc(short);
+ field public static final short EPSILON = 5120; // 0x1400
+ field public static final int EXPONENT_BIAS = 15; // 0xf
+ field public static final int EXPONENT_SHIFT = 10; // 0xa
+ field public static final int EXPONENT_SIGNIFICAND_MASK = 32767; // 0x7fff
+ field public static final short LOWEST_VALUE = -1025; // 0xfffffbff
+ field public static final int MAX_EXPONENT = 15; // 0xf
+ field public static final short MAX_VALUE = 31743; // 0x7bff
+ field public static final int MIN_EXPONENT = -14; // 0xfffffff2
+ field public static final short MIN_NORMAL = 1024; // 0x400
+ field public static final short MIN_VALUE = 1; // 0x1
+ field public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
+ field public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
+ field public static final short NaN = 32256; // 0x7e00
+ field public static final short POSITIVE_INFINITY = 31744; // 0x7c00
+ field public static final short POSITIVE_ZERO = 0; // 0x0
+ field public static final int SHIFTED_EXPONENT_MASK = 31; // 0x1f
+ field public static final int SIGNIFICAND_MASK = 1023; // 0x3ff
+ field public static final int SIGN_MASK = 32768; // 0x8000
+ field public static final int SIGN_SHIFT = 15; // 0xf
+ field public static final int SIZE = 16; // 0x10
+ }
+
+ public class HexEncoding {
+ method public static byte[] decode(String) throws java.lang.IllegalArgumentException;
+ method public static byte[] decode(String, boolean) throws java.lang.IllegalArgumentException;
+ method public static byte[] decode(char[]) throws java.lang.IllegalArgumentException;
+ method public static byte[] decode(char[], boolean) throws java.lang.IllegalArgumentException;
+ method public static char[] encode(byte[]);
+ method public static char[] encode(byte[], boolean);
+ method public static char[] encode(byte[], int, int);
+ method public static String encodeToString(byte, boolean);
+ method public static String encodeToString(byte[]);
+ method public static String encodeToString(byte[], boolean);
+ }
+
+ public class NativeAllocationRegistry {
+ ctor public NativeAllocationRegistry(@NonNull ClassLoader, long, long);
+ method public static void applyFreeFunction(long, long);
+ method public static libcore.util.NativeAllocationRegistry createMalloced(@NonNull ClassLoader, long, long);
+ method public static libcore.util.NativeAllocationRegistry createMalloced(@NonNull ClassLoader, long);
+ method public static libcore.util.NativeAllocationRegistry createNonmalloced(@NonNull ClassLoader, long, long);
+ method @NonNull public Runnable registerNativeAllocation(@NonNull Object, long);
+ }
+
+ public class SneakyThrow {
+ method public static void sneakyThrow(@NonNull Throwable);
+ }
+
+ public class XmlObjectFactory {
+ method @NonNull public static org.xml.sax.XMLReader newXMLReader();
+ method @NonNull public static org.xmlpull.v1.XmlPullParser newXmlPullParser();
+ method @NonNull public static org.xmlpull.v1.XmlSerializer newXmlSerializer();
+ }
+
+}
+
+package org.apache.harmony.dalvik.ddmc {
+
+ public class Chunk {
+ ctor public Chunk(int, byte[], int, int);
+ ctor public Chunk(int, java.nio.ByteBuffer);
+ field public int type;
+ }
+
+ public abstract class ChunkHandler {
+ ctor public ChunkHandler();
+ method public static org.apache.harmony.dalvik.ddmc.Chunk createFailChunk(int, String);
+ method public abstract org.apache.harmony.dalvik.ddmc.Chunk handleChunk(org.apache.harmony.dalvik.ddmc.Chunk);
+ method public static String name(int);
+ method public abstract void onConnected();
+ method public abstract void onDisconnected();
+ method public static int type(String);
+ method public static java.nio.ByteBuffer wrapChunk(org.apache.harmony.dalvik.ddmc.Chunk);
+ field public static final java.nio.ByteOrder CHUNK_ORDER;
+ }
+
+ public final class DdmServer {
+ method public static void registerHandler(int, org.apache.harmony.dalvik.ddmc.ChunkHandler);
+ method public static void registrationComplete();
+ method public static void sendChunk(org.apache.harmony.dalvik.ddmc.Chunk);
+ method public static org.apache.harmony.dalvik.ddmc.ChunkHandler unregisterHandler(int);
+ }
+
+ public final class DdmVmInternal {
+ method public static void setRecentAllocationsTrackingEnabled(boolean);
+ method public static void setThreadNotifyEnabled(boolean);
+ }
+
+}
+
+package org.json {
+
+ public class JSONObject {
+ method @NonNull public java.util.Set<java.lang.String> keySet();
+ }
+
+}
+
+package sun.misc {
+
+ public class Cleaner extends java.lang.ref.PhantomReference<java.lang.Object> {
+ method public void clean();
+ method public static sun.misc.Cleaner create(Object, Runnable);
+ }
+
+ public final class Unsafe {
+ method public int arrayBaseOffset(Class);
+ method public int arrayIndexScale(Class);
+ method @dalvik.annotation.optimization.FastNative public void copyMemory(long, long, long);
+ method @dalvik.annotation.optimization.FastNative public boolean getBoolean(Object, long);
+ method @dalvik.annotation.optimization.FastNative public byte getByte(Object, long);
+ method @dalvik.annotation.optimization.FastNative public byte getByte(long);
+ method @dalvik.annotation.optimization.FastNative public double getDouble(Object, long);
+ method @dalvik.annotation.optimization.FastNative public double getDouble(long);
+ method @dalvik.annotation.optimization.FastNative public float getFloat(Object, long);
+ method @dalvik.annotation.optimization.FastNative public float getFloat(long);
+ method @dalvik.annotation.optimization.FastNative public int getInt(Object, long);
+ method @dalvik.annotation.optimization.FastNative public int getInt(long);
+ method @dalvik.annotation.optimization.FastNative public long getLong(Object, long);
+ method @dalvik.annotation.optimization.FastNative public long getLong(long);
+ method @dalvik.annotation.optimization.FastNative public Object getObject(Object, long);
+ method public static sun.misc.Unsafe getUnsafe();
+ method public long objectFieldOffset(java.lang.reflect.Field);
+ method @dalvik.annotation.optimization.FastNative public void putBoolean(Object, long, boolean);
+ method @dalvik.annotation.optimization.FastNative public void putByte(Object, long, byte);
+ method @dalvik.annotation.optimization.FastNative public void putByte(long, byte);
+ method @dalvik.annotation.optimization.FastNative public void putDouble(Object, long, double);
+ method @dalvik.annotation.optimization.FastNative public void putDouble(long, double);
+ method @dalvik.annotation.optimization.FastNative public void putFloat(Object, long, float);
+ method @dalvik.annotation.optimization.FastNative public void putFloat(long, float);
+ method @dalvik.annotation.optimization.FastNative public void putInt(Object, long, int);
+ method @dalvik.annotation.optimization.FastNative public void putInt(long, int);
+ method @dalvik.annotation.optimization.FastNative public void putLong(Object, long, long);
+ method @dalvik.annotation.optimization.FastNative public void putLong(long, long);
+ method @dalvik.annotation.optimization.FastNative public void putObject(Object, long, Object);
+ }
+
+}
+
+package sun.security.jca {
+
+ public class Providers {
+ method public static Object startJarVerification();
+ method public static void stopJarVerification(Object);
+ }
+
+}
+
+package sun.security.pkcs {
+
+ public class PKCS7 {
+ ctor public PKCS7(java.io.InputStream) throws java.io.IOException, sun.security.pkcs.ParsingException;
+ ctor public PKCS7(byte[]) throws sun.security.pkcs.ParsingException;
+ method public java.security.cert.X509Certificate[] getCertificates();
+ method public sun.security.pkcs.SignerInfo[] getSignerInfos();
+ method public sun.security.pkcs.SignerInfo verify(sun.security.pkcs.SignerInfo, java.io.InputStream) throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
+ method public sun.security.pkcs.SignerInfo[] verify(byte[]) throws java.security.NoSuchAlgorithmException, java.security.SignatureException;
+ }
+
+ public class ParsingException extends java.io.IOException {
+ }
+
+ public class SignerInfo {
+ ctor public SignerInfo();
+ method public java.util.ArrayList<java.security.cert.X509Certificate> getCertificateChain(sun.security.pkcs.PKCS7) throws java.io.IOException;
+ }
+
+}
+
+package sun.security.util {
+
+ public final class ObjectIdentifier implements java.io.Serializable {
+ ctor public ObjectIdentifier(String) throws java.io.IOException;
+ }
+
+}
+
+package sun.security.x509 {
+
+ public class AlgorithmId implements java.io.Serializable {
+ ctor public AlgorithmId(sun.security.util.ObjectIdentifier);
+ method public String getName();
+ }
+
}
diff --git a/dalvik/src/main/java/dalvik/annotation/codegen/CovariantReturnType.java b/dalvik/src/main/java/dalvik/annotation/codegen/CovariantReturnType.java
index 21d3aeb..95a87af 100644
--- a/dalvik/src/main/java/dalvik/annotation/codegen/CovariantReturnType.java
+++ b/dalvik/src/main/java/dalvik/annotation/codegen/CovariantReturnType.java
@@ -16,12 +16,15 @@
package dalvik.annotation.codegen;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import libcore.api.CorePlatformApi;
/**
* Indicates to the platform toolchain that there is an upcoming public SDK API change for a method.
@@ -61,7 +64,8 @@
@Repeatable(CovariantReturnType.CovariantReturnTypes.class)
@Retention(RetentionPolicy.CLASS)
@Target({ ElementType.METHOD})
-@CorePlatformApi
+@SystemApi(client = MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public @interface CovariantReturnType {
/**
@@ -70,7 +74,8 @@
*
* @hide
*/
- @CorePlatformApi
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
Class<?> returnType();
/**
@@ -79,16 +84,19 @@
*
* @hide
*/
- @CorePlatformApi
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
int presentAfter();
/** @hide */
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.METHOD})
- @CorePlatformApi
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@interface CovariantReturnTypes {
- @CorePlatformApi
/** @hide */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
CovariantReturnType[] value();
}
}
diff --git a/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java b/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
index c05ce06..9d4d3fa 100644
--- a/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
+++ b/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
@@ -67,8 +67,8 @@
public static final int R = 30;
/**
- * The version code for Android S (API version TBD).
+ * The version code for Android S (API version 31).
*/
@IntraCoreApi
- public static final int S = CUR_DEVELOPMENT;
+ public static final int S = 31;
}
diff --git a/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java b/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java
index c64aa5f..0dac897 100644
--- a/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java
+++ b/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java
@@ -16,6 +16,10 @@
package dalvik.annotation.optimization;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -93,7 +97,8 @@
*
* @hide
*/
-@libcore.api.CorePlatformApi
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
@Retention(RetentionPolicy.CLASS) // Save memory, don't instantiate as an object at runtime.
@Target(ElementType.METHOD)
public @interface CriticalNative {}
diff --git a/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java b/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java
index 847e4df..db3efe0 100644
--- a/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java
+++ b/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java
@@ -16,6 +16,10 @@
package dalvik.annotation.optimization;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -72,7 +76,8 @@
*
* @hide
*/
-@libcore.api.CorePlatformApi
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.IntraCoreApi
@Retention(RetentionPolicy.CLASS) // Save memory, don't instantiate as an object at runtime.
@Target(ElementType.METHOD)
diff --git a/dalvik/src/main/java/dalvik/system/AppSpecializationHooks.java b/dalvik/src/main/java/dalvik/system/AppSpecializationHooks.java
index b95aa62..e311902 100644
--- a/dalvik/src/main/java/dalvik/system/AppSpecializationHooks.java
+++ b/dalvik/src/main/java/dalvik/system/AppSpecializationHooks.java
@@ -16,13 +16,16 @@
package dalvik.system;
-import libcore.api.CorePlatformApi;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
/**
* Used by frameworks to specialize libcore in an app process.
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class AppSpecializationHooks {
@@ -39,6 +42,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void handleCompatChangesBeforeBindingApplication() {
com.android.i18n.system.AppSpecializationHooks
diff --git a/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java b/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java
index 20f4c3d..60511a9 100644
--- a/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java
+++ b/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.File;
import java.io.IOException;
@@ -141,6 +144,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void reportClassLoaderChain() {
if (reporter == null) {
@@ -229,6 +233,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void addDexPath(@Nullable String dexPath) {
addDexPath(dexPath, false /*isTrusted*/);
@@ -250,6 +255,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void addNativePath(@NonNull Collection<String> libPaths) {
pathList.addNativePath(libPaths);
@@ -346,6 +352,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public @NonNull String getLdLibraryPath() {
StringBuilder result = new StringBuilder();
@@ -371,6 +378,7 @@
* @param newReporter the new Reporter. Setting {@code null} will cancel reporting.
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setReporter(@Nullable Reporter newReporter) {
reporter = newReporter;
@@ -389,6 +397,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public interface Reporter {
/**
@@ -403,6 +412,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void report(@NonNull Map<String, String> contextsMap);
}
diff --git a/dalvik/src/main/java/dalvik/system/BlockGuard.java b/dalvik/src/main/java/dalvik/system/BlockGuard.java
index 6a5e26b..3472f70 100644
--- a/dalvik/src/main/java/dalvik/system/BlockGuard.java
+++ b/dalvik/src/main/java/dalvik/system/BlockGuard.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.util.Objects;
@@ -34,6 +37,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public final class BlockGuard {
@@ -46,6 +50,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public interface Policy {
@@ -54,6 +59,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void onWriteToDisk();
@@ -63,6 +69,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void onReadFromDisk();
@@ -80,6 +87,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void onUnbufferedIO();
@@ -100,6 +108,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
int getPolicyMask();
}
@@ -108,6 +117,7 @@
* Per-process interface used to implement {@code StrictMode.VmPolicy}.
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public interface VmPolicy {
/**
@@ -131,6 +141,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void onPathAccess(@NonNull String path);
}
@@ -188,6 +199,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final Policy LAX_POLICY = new Policy() {
@Override public String toString() { return "LAX_POLICY"; }
@@ -208,6 +220,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final VmPolicy LAX_VM_POLICY = new VmPolicy() {
@Override public String toString() { return "LAX_VM_POLICY"; }
@@ -232,6 +245,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static @NonNull Policy getThreadPolicy() {
@@ -250,6 +264,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setThreadPolicy(@NonNull Policy policy) {
threadPolicy.set(Objects.requireNonNull(policy));
@@ -263,6 +278,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull VmPolicy getVmPolicy() {
return vmPolicy;
@@ -279,6 +295,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setVmPolicy(@NonNull VmPolicy policy) {
vmPolicy = Objects.requireNonNull(policy);
diff --git a/dalvik/src/main/java/dalvik/system/CloseGuard.java b/dalvik/src/main/java/dalvik/system/CloseGuard.java
index 124892b..959a5a3 100644
--- a/dalvik/src/main/java/dalvik/system/CloseGuard.java
+++ b/dalvik/src/main/java/dalvik/system/CloseGuard.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
/**
@@ -110,6 +113,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public final class CloseGuard {
@@ -146,6 +150,7 @@
* @hide
*/
@UnsupportedAppUsage(trackingBug=111170242)
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static CloseGuard get() {
@@ -164,6 +169,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setEnabled(boolean enabled) {
CloseGuard.stackAndTrackingEnabled = enabled;
@@ -187,6 +193,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setReporter(Reporter rep) {
if (rep == null) {
@@ -202,6 +209,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static Reporter getReporter() {
return reporter;
@@ -248,6 +256,7 @@
* @hide
*/
@UnsupportedAppUsage(trackingBug=111170242)
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public void open(String closer) {
@@ -266,6 +275,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void openWithCallSite(String closer, String callsite) {
// always perform the check for valid API usage...
@@ -304,6 +314,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public void close() {
@@ -325,6 +336,7 @@
* @hide
*/
@UnsupportedAppUsage(trackingBug=111170242)
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public void warnIfOpen() {
@@ -358,6 +370,7 @@
* Interface to allow customization of reporting behavior.
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public interface Reporter {
/**
@@ -365,6 +378,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
void report(String message, Throwable allocationSite);
@@ -372,6 +386,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
default void report(String message) {}
}
diff --git a/dalvik/src/main/java/dalvik/system/DelegateLastClassLoader.java b/dalvik/src/main/java/dalvik/system/DelegateLastClassLoader.java
index 9481e3f..5966139 100644
--- a/dalvik/src/main/java/dalvik/system/DelegateLastClassLoader.java
+++ b/dalvik/src/main/java/dalvik/system/DelegateLastClassLoader.java
@@ -16,6 +16,10 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import sun.misc.CompoundEnumeration;
import java.io.IOException;
@@ -104,9 +108,32 @@
}
/**
+ * Creates a {@code DelegateLastClassLoader} that operates on a given {@code dexPath}
+ * and a {@code librarySearchPath}.
+ *
+ * The {@code dexPath} should consist of one or more of the following, separated by
+ * {@code File.pathSeparator}, which is {@code ":"} on Android.
+ *
+ * <ul>
+ * <li>JAR/ZIP/APK files, possibly containing a "classes.dex" file as well as arbitrary
+ * resources.
+ * <li>Raw ".dex" files (not inside a zip file).
+ * </ul>
+ *
+ * @param dexPath the list of jar/apk files containing classes and resources, delimited by
+ * {@code File.pathSeparator}, which defaults to {@code ":"} on Android.
+ * @param librarySearchPath the list of directories containing native libraries, delimited
+ * by {@code File.pathSeparator}; may be {@code null}.
+ * @param parent the parent class loader. May be {@code null} for the boot classloader.
+ * @param sharedLibraryLoaders class loaders of Java shared libraries
+ * used by this new class loader. The shared library loaders are
+ * always checked before the {@code dexPath} when looking
+ * up classes and resources.
+ *
* @hide
*/
- @libcore.api.CorePlatformApi
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
public DelegateLastClassLoader(
String dexPath, String librarySearchPath, ClassLoader parent,
ClassLoader[] sharedLibraryLoaders) {
diff --git a/dalvik/src/main/java/dalvik/system/DexFile.java b/dalvik/src/main/java/dalvik/system/DexFile.java
index 6db4a58..f8e7f42 100644
--- a/dalvik/src/main/java/dalvik/system/DexFile.java
+++ b/dalvik/src/main/java/dalvik/system/DexFile.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.system.ErrnoException;
@@ -461,6 +464,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int NO_DEXOPT_NEEDED = 0;
@@ -491,6 +495,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int DEX2OAT_FOR_FILTER = 3;
@@ -538,6 +543,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native int getDexOptNeeded(@NonNull String fileName,
@NonNull String instructionSet, @NonNull String compilerFilter, @Nullable String classLoaderContext,
@@ -563,6 +569,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final class OptimizationInfo {
// The human readable refined optimization status of the validity of the odex file.
@@ -583,6 +590,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public @NonNull String getStatus() {
return status;
@@ -595,6 +603,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public @NonNull String getReason() {
return reason;
@@ -611,6 +620,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull OptimizationInfo getDexFileOptimizationInfo(
@NonNull String fileName, @NonNull String instructionSet) throws FileNotFoundException {
@@ -644,6 +654,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native @Nullable String[] getDexFileOutputPaths(@NonNull String fileName, @NonNull String instructionSet)
throws FileNotFoundException;
@@ -656,6 +667,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native static boolean isValidCompilerFilter(@NonNull String filter);
@@ -667,6 +679,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native static boolean isProfileGuidedCompilerFilter(@NonNull String filter);
@@ -692,6 +705,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native static @NonNull String getSafeModeCompilerFilter(@NonNull String filter);
diff --git a/dalvik/src/main/java/dalvik/system/PathClassLoader.java b/dalvik/src/main/java/dalvik/system/PathClassLoader.java
index d5d17f3..1b74cd9 100644
--- a/dalvik/src/main/java/dalvik/system/PathClassLoader.java
+++ b/dalvik/src/main/java/dalvik/system/PathClassLoader.java
@@ -16,6 +16,10 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.util.NonNull;
import libcore.util.Nullable;
@@ -95,6 +99,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public PathClassLoader(
@NonNull String dexPath, @Nullable String librarySearchPath, @Nullable ClassLoader parent,
diff --git a/dalvik/src/main/java/dalvik/system/RuntimeHooks.java b/dalvik/src/main/java/dalvik/system/RuntimeHooks.java
index 3b71d2f..d86998b 100644
--- a/dalvik/src/main/java/dalvik/system/RuntimeHooks.java
+++ b/dalvik/src/main/java/dalvik/system/RuntimeHooks.java
@@ -16,6 +16,10 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.util.Objects;
import java.util.TimeZone;
import java.util.function.Supplier;
@@ -32,6 +36,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class RuntimeHooks {
@@ -55,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setTimeZoneIdSupplier(@NonNull Supplier<String> zoneIdSupplier) {
if (RuntimeHooks.zoneIdSupplier != null) {
@@ -84,6 +90,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setUncaughtExceptionPreHandler(
@Nullable Thread.UncaughtExceptionHandler uncaughtExceptionHandler) {
diff --git a/dalvik/src/main/java/dalvik/system/SocketTagger.java b/dalvik/src/main/java/dalvik/system/SocketTagger.java
index 4cce915..62803d9 100644
--- a/dalvik/src/main/java/dalvik/system/SocketTagger.java
+++ b/dalvik/src/main/java/dalvik/system/SocketTagger.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.FileDescriptor;
import java.net.DatagramSocket;
@@ -27,6 +30,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract class SocketTagger {
@@ -39,6 +43,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public SocketTagger() {
}
@@ -53,6 +58,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract void tag(FileDescriptor socketDescriptor) throws SocketException;
@@ -69,6 +75,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract void untag(FileDescriptor socketDescriptor) throws SocketException;
@@ -83,6 +90,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final void tag(Socket socket) throws SocketException {
if (!socket.isClosed()) {
@@ -105,6 +113,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final void untag(Socket socket) throws SocketException {
if (!socket.isClosed()) {
@@ -122,6 +131,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final void tag(DatagramSocket socket) throws SocketException {
if (!socket.isClosed()) {
@@ -143,6 +153,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final void untag(DatagramSocket socket) throws SocketException {
if (!socket.isClosed()) {
@@ -157,6 +168,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static synchronized void set(SocketTagger tagger) {
if (tagger == null) {
@@ -173,6 +185,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static synchronized SocketTagger get() {
return tagger;
diff --git a/dalvik/src/main/java/dalvik/system/VMDebug.java b/dalvik/src/main/java/dalvik/system/VMDebug.java
index 5b5f3ad..512d5ab 100644
--- a/dalvik/src/main/java/dalvik/system/VMDebug.java
+++ b/dalvik/src/main/java/dalvik/system/VMDebug.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.FileDescriptor;
@@ -34,6 +37,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class VMDebug {
/**
@@ -42,6 +46,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
// Must match android.os.Debug.TRACE_COUNT_ALLOCS.
public static final int TRACE_COUNT_ALLOCS = 1;
@@ -65,6 +70,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_ALLOCATED_OBJECTS =
KIND_ALLOCATED_OBJECTS;
@@ -75,6 +81,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_ALLOCATED_BYTES =
KIND_ALLOCATED_BYTES;
@@ -85,6 +92,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_FREED_OBJECTS =
KIND_FREED_OBJECTS;
@@ -95,6 +103,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_FREED_BYTES =
KIND_FREED_BYTES;
@@ -105,6 +114,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_GC_INVOCATIONS =
KIND_GC_INVOCATIONS;
@@ -115,6 +125,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_CLASS_INIT_COUNT =
KIND_CLASS_INIT_COUNT;
@@ -125,6 +136,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_GLOBAL_CLASS_INIT_TIME =
KIND_CLASS_INIT_TIME;
@@ -135,6 +147,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_THREAD_ALLOCATED_OBJECTS =
KIND_ALLOCATED_OBJECTS << 16;
@@ -145,6 +158,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_THREAD_ALLOCATED_BYTES =
KIND_ALLOCATED_BYTES << 16;
@@ -155,6 +169,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_THREAD_GC_INVOCATIONS =
KIND_GC_INVOCATIONS << 16;
@@ -164,6 +179,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int KIND_ALL_COUNTS = 0xffffffff;
@@ -177,6 +193,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native long lastDebuggerActivity();
@@ -189,6 +206,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native boolean isDebuggingEnabled();
@@ -201,6 +219,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native boolean isDebuggerConnected();
@@ -214,6 +233,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native String[] getVmFeatureList();
@@ -241,6 +261,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void startMethodTracing(String traceFileName, int bufferSize, int flags, boolean samplingEnabled, int intervalUs) {
startMethodTracingFilename(traceFileName, checkBufferSize(bufferSize), flags, samplingEnabled, intervalUs);
@@ -267,6 +288,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void startMethodTracing(String traceFileName, FileDescriptor fd, int bufferSize,
int flags, boolean samplingEnabled, int intervalUs,
@@ -294,6 +316,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void startMethodTracingDdms(int bufferSize, int flags, boolean samplingEnabled, int intervalUs) {
startMethodTracingDdmsImpl(checkBufferSize(bufferSize), flags, samplingEnabled, intervalUs);
@@ -321,6 +344,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native int getMethodTracingMode();
@@ -329,6 +353,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void stopMethodTracing();
@@ -346,6 +371,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native long threadCpuTimeNanos();
@@ -355,6 +381,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void startAllocCounting();
@@ -363,6 +390,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void stopAllocCounting();
@@ -374,6 +402,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native int getAllocCount(int kind);
@@ -384,6 +413,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void resetAllocCount(int kinds);
@@ -446,6 +476,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native void printLoadedClasses(int flags);
@@ -457,6 +488,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public static native int getLoadedClassCount();
@@ -473,6 +505,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void dumpHprofData(String filename) throws IOException {
if (filename == null) {
@@ -489,6 +522,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void dumpHprofDataDdms();
@@ -503,6 +537,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void dumpHprofData(String fileName, FileDescriptor fd)
throws IOException {
@@ -519,6 +554,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void dumpReferenceTables();
@@ -536,6 +572,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native long countInstancesOfClass(Class klass, boolean assignable);
@@ -555,6 +592,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native long[] countInstancesOfClasses(Class[] classes, boolean assignable);
@@ -602,6 +640,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String getRuntimeStat(String statName) {
if (statName == null) {
@@ -622,6 +661,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static Map<String, String> getRuntimeStats() {
HashMap<String, String> map = new HashMap<>();
@@ -647,6 +687,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void attachAgent(String agent, ClassLoader classLoader) throws IOException {
nativeAttachAgent(agent, classLoader);
@@ -677,6 +718,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void setAllocTrackerStackDepth(int stackDepth);
}
diff --git a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
index a7b6b71..a17a257 100644
--- a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
+++ b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
@@ -16,6 +16,10 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.icu.ICU;
import java.io.File;
@@ -31,6 +35,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class ZygoteHooks {
private static long token;
@@ -46,6 +51,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void startZygoteNoThreadCreation();
@@ -54,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void onBeginPreload() {
com.android.i18n.system.ZygoteHooks.onBeginPreload();
@@ -79,6 +86,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void onEndPreload() {
com.android.i18n.system.ZygoteHooks.onEndPreload();
@@ -96,6 +104,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void gcAndFinalize() {
final VMRuntime runtime = VMRuntime.getRuntime();
@@ -114,6 +123,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void stopZygoteNoThreadCreation();
@@ -126,6 +136,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void preFork() {
Daemons.stop();
@@ -141,6 +152,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void postForkSystemServer(int runtimeFlags) {
nativePostForkSystemServer(runtimeFlags);
@@ -157,6 +169,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void postForkChild(int runtimeFlags, boolean isSystemServer,
boolean isChildZygote, String instructionSet) {
@@ -182,6 +195,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void postForkCommon() {
// Notify the runtime before creating new threads.
@@ -192,21 +206,17 @@
/**
* Is it safe to keep all ART daemon threads stopped indefinitely in the zygote?
* The answer may change from false to true dynamically, but not in the other
- * direction.
+ * direction. Only called in Zygote.
*
* @return {@code true} if it's safe to keep all ART daemon threads stopped
* indefinitely in the zygote; and {@code false} otherwise
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isIndefiniteThreadSuspensionSafe() {
- // TODO: Make this return true if we're done with JIT compilation.
- //
- // We only care about JIT compilation that affects other processes.
- // The zygote itself doesn't run appreciable amounts of Java code when
- // running single-threaded.
- return !nativeZygoteJitEnabled();
+ return nativeZygoteLongSuspendOk();
}
// Hook for SystemServer specific early initialization post-forking.
@@ -220,7 +230,7 @@
boolean isSystemServer, boolean isZygote,
String instructionSet);
- private static native boolean nativeZygoteJitEnabled();
+ private static native boolean nativeZygoteLongSuspendOk();
/**
* We must not fork until we're single-threaded again. Wait until /proc shows we're
diff --git a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/Chunk.java b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/Chunk.java
index 3eb599e..38b4113 100644
--- a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/Chunk.java
+++ b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/Chunk.java
@@ -16,6 +16,9 @@
package org.apache.harmony.dalvik.ddmc;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.nio.ByteBuffer;
@@ -28,6 +31,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class Chunk {
@@ -36,6 +40,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public int type; // chunk type
/**
@@ -69,6 +74,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public Chunk(int type, byte[] data, int offset, int length) {
this.type = type;
@@ -87,6 +93,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public Chunk(int type, ByteBuffer buf) {
this.type = type;
diff --git a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/ChunkHandler.java b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/ChunkHandler.java
index 1f51978..fe936d5 100644
--- a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/ChunkHandler.java
+++ b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/ChunkHandler.java
@@ -16,6 +16,9 @@
package org.apache.harmony.dalvik.ddmc;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -28,6 +31,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract class ChunkHandler {
@@ -37,6 +41,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final ByteOrder CHUNK_ORDER = ByteOrder.BIG_ENDIAN;
@@ -50,6 +55,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public ChunkHandler() {}
@@ -59,6 +65,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract void onConnected();
@@ -68,6 +75,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract void onDisconnected();
@@ -82,6 +90,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract Chunk handleChunk(Chunk request);
@@ -95,6 +104,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static Chunk createFailChunk(int errorCode, String msg) {
if (msg == null)
@@ -120,6 +130,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static ByteBuffer wrapChunk(Chunk request) {
ByteBuffer in;
@@ -134,6 +145,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int type(String typeName) {
if (typeName.length() != 4) {
@@ -151,6 +163,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String name(int type)
{
diff --git a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmServer.java b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmServer.java
index 6078024..1465641 100644
--- a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmServer.java
+++ b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmServer.java
@@ -16,6 +16,9 @@
package org.apache.harmony.dalvik.ddmc;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.util.Collection;
@@ -30,6 +33,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class DdmServer {
@@ -60,6 +64,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void registerHandler(int type, ChunkHandler handler) {
if (handler == null) {
@@ -81,6 +86,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static ChunkHandler unregisterHandler(int type) {
synchronized (mHandlerMap) {
@@ -94,6 +100,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void registrationComplete() {
// sync on mHandlerMap because it's convenient and makes a kind of
@@ -115,6 +122,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void sendChunk(Chunk chunk) {
nativeSendChunk(chunk.type, chunk.data, chunk.offset, chunk.length);
diff --git a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmVmInternal.java b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmVmInternal.java
index 0b20466..8aca688 100644
--- a/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmVmInternal.java
+++ b/dalvik/src/main/java/org/apache/harmony/dalvik/ddmc/DdmVmInternal.java
@@ -16,14 +16,17 @@
package org.apache.harmony.dalvik.ddmc;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
-import dalvik.annotation.optimization.FastNative;
/**
* Declarations for some VM-internal DDM stuff.
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class DdmVmInternal {
@@ -39,6 +42,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
native public static void setThreadNotifyEnabled(boolean enabled);
@@ -69,6 +73,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
native public static void setRecentAllocationsTrackingEnabled(boolean enabled);
}
diff --git a/json/src/main/java/org/json/JSONObject.java b/json/src/main/java/org/json/JSONObject.java
index 9ca3a23..c7a881d 100644
--- a/json/src/main/java/org/json/JSONObject.java
+++ b/json/src/main/java/org/json/JSONObject.java
@@ -16,6 +16,9 @@
package org.json;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.util.ArrayList;
@@ -679,6 +682,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@NonNull public Set<@NonNull String> keySet() {
return nameValuePairs.keySet();
diff --git a/libart/src/main/java/dalvik/system/AnnotatedStackTraceElement.java b/libart/src/main/java/dalvik/system/AnnotatedStackTraceElement.java
index cb7edbc..cce747d 100644
--- a/libart/src/main/java/dalvik/system/AnnotatedStackTraceElement.java
+++ b/libart/src/main/java/dalvik/system/AnnotatedStackTraceElement.java
@@ -16,6 +16,9 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import libcore.util.NonNull;
import libcore.util.Nullable;
@@ -26,6 +29,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class AnnotatedStackTraceElement {
/**
@@ -56,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@NonNull public StackTraceElement getStackTraceElement() {
return stackTraceElement;
@@ -69,6 +74,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@Nullable public Object[] getHeldLocks() {
return heldLocks;
@@ -83,6 +89,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@Nullable public Object getBlockedOn() {
return blockedOn;
diff --git a/libart/src/main/java/dalvik/system/VMRuntime.java b/libart/src/main/java/dalvik/system/VMRuntime.java
index 2ec54d9..2b5d8cd 100644
--- a/libart/src/main/java/dalvik/system/VMRuntime.java
+++ b/libart/src/main/java/dalvik/system/VMRuntime.java
@@ -16,13 +16,15 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.Disabled;
import android.compat.annotation.UnsupportedAppUsage;
import dalvik.annotation.compat.VersionCodes;
-import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.FastNative;
import libcore.api.CorePlatformApi;
@@ -40,6 +42,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public final class VMRuntime {
@@ -104,6 +107,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public interface HiddenApiUsageLogger {
@@ -115,6 +119,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int ACCESS_METHOD_NONE = 0;
@@ -123,6 +128,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int ACCESS_METHOD_REFLECTION = 1;
@@ -131,6 +137,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int ACCESS_METHOD_JNI = 2;
@@ -140,6 +147,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int ACCESS_METHOD_LINKING = 3;
@@ -159,6 +167,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void hiddenApiUsed(int sampledValue, String appPackageName,
String signature, int accessType, boolean accessDenied);
@@ -176,6 +185,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setHiddenApiUsageLogger(HiddenApiUsageLogger hiddenApiUsageLogger) {
VMRuntime.hiddenApiUsageLogger = hiddenApiUsageLogger;
@@ -200,6 +210,7 @@
* any released version in {@code android.os.Build.VERSION_CODES}.
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
// Must match android.os.Build.VERSION_CODES.CUR_DEVELOPMENT.
public static final int SDK_VERSION_CUR_DEVELOPMENT = 10000;
@@ -230,6 +241,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static VMRuntime getRuntime() {
@@ -273,6 +285,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native String vmLibrary();
@@ -284,6 +297,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native String vmInstructionSet();
@@ -295,6 +309,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@FastNative
public native boolean is64Bit();
@@ -307,6 +322,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public native boolean isCheckJniEnabled();
@@ -377,6 +393,7 @@
*/
@UnsupportedAppUsage(maxTargetSdk=0, publicAlternatives="Use the {@code targetSdkVersion}"
+" attribute in the {@code uses-sdk} manifest tag instead.")
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public synchronized void setTargetSdkVersion(int targetSdkVersion) {
this.targetSdkVersion = targetSdkVersion;
@@ -393,6 +410,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public synchronized void setDisabledCompatChanges(long[] disabledCompatChanges) {
this.disabledCompatChanges = disabledCompatChanges;
@@ -407,6 +425,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public synchronized int getTargetSdkVersion() {
return targetSdkVersion;
@@ -513,6 +532,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void setHiddenApiExemptions(String[] signaturePrefixes);
@@ -524,6 +544,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void setHiddenApiAccessLogSamplingRate(int rate);
@@ -539,6 +560,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
@FastNative
@@ -556,6 +578,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public native Object newUnpaddedArray(Class<?> componentType, int minLength);
@@ -570,6 +593,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
@FastNative
@@ -582,6 +606,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void clearGrowthLimit();
@@ -591,6 +616,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void clampGrowthLimit();
@@ -601,6 +627,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@FastNative
public native boolean isNativeDebuggable();
@@ -627,6 +654,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void registerNativeAllocation(long bytes);
@@ -641,6 +669,7 @@
*/
@UnsupportedAppUsage
@Deprecated
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void registerNativeAllocation(int bytes) {
registerNativeAllocation((long) bytes);
@@ -654,6 +683,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void registerNativeFree(long bytes);
@@ -667,6 +697,7 @@
*/
@UnsupportedAppUsage
@Deprecated
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void registerNativeFree(int bytes) {
registerNativeFree((long) bytes);
@@ -742,6 +773,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void requestConcurrentGC();
@@ -783,6 +815,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void updateProcessState(int state);
@@ -792,6 +825,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void notifyStartupCompleted();
@@ -801,6 +835,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public native void preloadDexCaches();
@@ -811,6 +846,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int CODE_PATH_TYPE_PRIMARY_APK = 1 << 0;
/**
@@ -820,6 +856,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int CODE_PATH_TYPE_SPLIT_APK = 1 << 1;
/**
@@ -829,6 +866,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int CODE_PATH_TYPE_SECONDARY_DEX = 1 << 2;
@@ -849,6 +887,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void registerAppInfo(
String packageName,
@@ -869,6 +908,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String getInstructionSet(String abi) {
final String instructionSet = ABI_TO_INSTRUCTION_SET_MAP.get(abi);
@@ -888,6 +928,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean is64BitInstructionSet(String instructionSet) {
return "arm64".equals(instructionSet) ||
@@ -905,6 +946,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean is64BitAbi(String abi) {
return is64BitInstructionSet(getInstructionSet(abi));
@@ -924,6 +966,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void bootCompleted();
@@ -934,6 +977,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void resetJitCounters();
@@ -945,6 +989,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native String getCurrentInstructionSet();
@@ -954,6 +999,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void registerSensitiveThread();
@@ -972,6 +1018,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setNonSdkApiUsageConsumer(Consumer<String> consumer) {
nonSdkApiUsageConsumer = consumer;
@@ -985,6 +1032,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void setDedupeHiddenApiWarnings(boolean dedupe);
@@ -995,6 +1043,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void setProcessPackageName(String packageName);
@@ -1005,6 +1054,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void setProcessDataDirectory(String dataDir);
@@ -1020,6 +1070,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native boolean isValidClassLoaderContext(String encodedClassLoaderContext);
}
diff --git a/libart/src/main/java/dalvik/system/VMStack.java b/libart/src/main/java/dalvik/system/VMStack.java
index 89ce215..9a84f0f 100644
--- a/libart/src/main/java/dalvik/system/VMStack.java
+++ b/libart/src/main/java/dalvik/system/VMStack.java
@@ -16,17 +16,23 @@
package dalvik.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import dalvik.annotation.optimization.FastNative;
+import libcore.util.Nullable;
+
/**
* Provides a limited interface to the Dalvik VM stack. This class is mostly
* used for implementing security checks.
*
* @hide
*/
-@libcore.api.CorePlatformApi
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
public final class VMStack {
private VMStack() {
@@ -40,6 +46,8 @@
* @deprecated Use {@code ClassLoader.getClassLoader(sun.reflect.Reflection.getCallerClass())}.
* Note that that can return {@link BootClassLoader} on Android where the RI
* would have returned null.
+ *
+ * @hide
*/
@UnsupportedAppUsage
@FastNative
@@ -51,6 +59,8 @@
*
* @return the requested class, or {@code null}.
* @deprecated Use {@link sun.reflect.Reflection#getCallerClass()}.
+ *
+ * @hide
*/
@Deprecated
public static Class<?> getStackClass1() {
@@ -61,6 +71,8 @@
* Returns the class of the caller's caller's caller.
*
* @return the requested class, or {@code null}.
+ *
+ * @hide
*/
@UnsupportedAppUsage
@FastNative
@@ -69,6 +81,8 @@
/**
* Returns the first ClassLoader on the call stack that isn't the
* bootstrap class loader.
+ *
+ * @hide
*/
@FastNative
public native static ClassLoader getClosestUserClassLoader();
@@ -80,6 +94,8 @@
* thread of interest
* @return an array of stack trace elements, or null if the thread
* doesn't have a stack trace (e.g. because it exited)
+ *
+ * @hide
*/
@UnsupportedAppUsage
@FastNative
@@ -92,10 +108,13 @@
* thread of interest
* @return an array of annotated stack frames, or null if the thread
* doesn't have a stack trace (e.g. because it exited)
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
@FastNative
- native public static AnnotatedStackTraceElement[]
+ native public static @Nullable AnnotatedStackTraceElement[]
getAnnotatedThreadStackTrace(Thread t);
/**
@@ -108,6 +127,8 @@
* preallocated array for use when only the top of stack is
* desired. Unused elements will be filled with null values.
* @return the number of elements filled
+ *
+ * @hide
*/
@UnsupportedAppUsage
@FastNative
diff --git a/luni/src/main/java/android/compat/Compatibility.java b/luni/src/main/java/android/compat/Compatibility.java
index c020a91..28147dd 100644
--- a/luni/src/main/java/android/compat/Compatibility.java
+++ b/luni/src/main/java/android/compat/Compatibility.java
@@ -16,6 +16,9 @@
package android.compat;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.ChangeId;
import libcore.api.CorePlatformApi;
@@ -34,6 +37,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@IntraCoreApi
public final class Compatibility {
@@ -56,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@IntraCoreApi
public static void reportUnconditionalChange(@ChangeId long changeId) {
@@ -79,6 +84,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@IntraCoreApi
public static boolean isChangeEnabled(@ChangeId long changeId) {
@@ -96,6 +102,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static void setBehaviorChangeDelegate(BehaviorChangeDelegate callbacks) {
sCallbacks = Objects.requireNonNull(callbacks);
@@ -106,6 +113,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static void clearBehaviorChangeDelegate() {
sCallbacks = DEFAULT_CALLBACKS;
@@ -117,6 +125,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static void setOverrides(ChangeConfig overrides) {
// Setting overrides twice in a row does not need to be supported because
@@ -135,6 +144,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static void clearOverrides() {
if (!(sCallbacks instanceof OverrideCallbacks)) {
@@ -152,6 +162,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public interface BehaviorChangeDelegate {
/**
@@ -159,6 +170,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
default void onChangeReported(long changeId) {
// Do not use String.format here (b/160912695)
@@ -170,6 +182,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
default boolean isChangeEnabled(long changeId) {
// Do not use String.format here (b/160912695)
@@ -178,12 +191,22 @@
}
}
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@IntraCoreApi
public static final class ChangeConfig {
private final Set<Long> enabled;
private final Set<Long> disabled;
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public ChangeConfig(@NonNull Set<@NonNull Long> enabled, @NonNull Set<@NonNull Long> disabled) {
this.enabled = Objects.requireNonNull(enabled);
this.disabled = Objects.requireNonNull(disabled);
@@ -201,6 +224,12 @@
}
}
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public boolean isEmpty() {
return enabled.isEmpty() && disabled.isEmpty();
}
@@ -214,30 +243,75 @@
return result;
}
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public @NonNull long[] getEnabledChangesArray() {
return toLongArray(enabled);
}
+
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public @NonNull long[] getDisabledChangesArray() {
return toLongArray(disabled);
}
+
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public @NonNull Set<@NonNull Long> getEnabledSet() {
return Collections.unmodifiableSet(enabled);
}
+
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public @NonNull Set<@NonNull Long> getDisabledSet() {
return Collections.unmodifiableSet(disabled);
}
+
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public boolean isForceEnabled(long changeId) {
return enabled.contains(changeId);
}
+
+ /**
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
+ @CorePlatformApi(status = CorePlatformApi.Status.STABLE)
+ @IntraCoreApi
public boolean isForceDisabled(long changeId) {
return disabled.contains(changeId);
}
+
+ /**
+ * @hide
+ */
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -249,11 +323,18 @@
disabled.equals(that.disabled);
}
+ /**
+ * @hide
+ */
@Override
public int hashCode() {
return Objects.hash(enabled, disabled);
}
+
+ /**
+ * @hide
+ */
@Override
public String toString() {
return "ChangeConfig{enabled=" + enabled + ", disabled=" + disabled + '}';
diff --git a/luni/src/main/java/android/system/NetlinkSocketAddress.java b/luni/src/main/java/android/system/NetlinkSocketAddress.java
index 3cdfefb..ecccfa3 100644
--- a/luni/src/main/java/android/system/NetlinkSocketAddress.java
+++ b/luni/src/main/java/android/system/NetlinkSocketAddress.java
@@ -16,6 +16,9 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.net.SocketAddress;
@@ -48,6 +51,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class NetlinkSocketAddress extends SocketAddress {
/**
@@ -88,6 +92,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public NetlinkSocketAddress(int nlPortId, int nlGroupsMask) {
this.nlPortId = nlPortId;
@@ -101,6 +106,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public int getPortId() {
return nlPortId;
@@ -113,6 +119,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public int getGroupsMask() {
return nlGroupsMask;
diff --git a/luni/src/main/java/android/system/Os.java b/luni/src/main/java/android/system/Os.java
index 437edc6..9beb8786 100755
--- a/luni/src/main/java/android/system/Os.java
+++ b/luni/src/main/java/android/system/Os.java
@@ -16,6 +16,9 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import libcore.io.Libcore;
@@ -81,6 +84,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @Nullable StructCapUserData[] capget(@NonNull StructCapUserHeader hdr) throws ErrnoException {
return Libcore.os.capget(hdr);
@@ -104,6 +108,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void capset(@NonNull StructCapUserHeader hdr, @NonNull StructCapUserData[] data)
throws ErrnoException {
@@ -253,6 +258,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int getpgid(int pid) throws ErrnoException { return Libcore.os.getpgid(pid); }
@@ -283,6 +289,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @Nullable StructRlimit getrlimit(int resource) throws ErrnoException { return Libcore.os.getrlimit(resource); }
@@ -314,6 +321,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int getsockoptInt(@NonNull FileDescriptor fd, int level, int option) throws ErrnoException { return Libcore.os.getsockoptInt(fd, level, option); }
@@ -334,6 +342,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @Nullable StructLinger getsockoptLinger(@NonNull FileDescriptor fd, int level, int option) throws ErrnoException { return Libcore.os.getsockoptLinger(fd, level, option); }
@@ -395,6 +404,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int ioctlInt(@NonNull FileDescriptor fd, int cmd) throws ErrnoException {
return Libcore.os.ioctlInt(fd, cmd);
@@ -515,6 +525,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @Nullable FileDescriptor[] pipe2(int flags) throws ErrnoException { return Libcore.os.pipe2(flags); }
@@ -591,6 +602,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static @Nullable String realpath(@Nullable String path) throws ErrnoException { return Libcore.os.realpath(path); }
@@ -706,6 +718,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setpgid(int pid, int pgid) throws ErrnoException { Libcore.os.setpgid(pid, pgid); }
@@ -722,6 +735,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setregid(int rgid, int egid) throws ErrnoException { Libcore.os.setregid(rgid, egid); }
@@ -738,6 +752,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setreuid(int ruid, int euid) throws ErrnoException { Libcore.os.setreuid(ruid, euid); }
@@ -769,6 +784,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setsockoptIfreq(@NonNull FileDescriptor fd, int level, int option, @Nullable String value) throws ErrnoException { Libcore.os.setsockoptIfreq(fd, level, option, value); }
@@ -796,6 +812,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setsockoptLinger(@NonNull FileDescriptor fd, int level, int option, @NonNull StructLinger value) throws ErrnoException { Libcore.os.setsockoptLinger(fd, level, option, value); }
@@ -892,6 +909,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static long splice(@NonNull FileDescriptor fdIn, @Nullable Int64Ref offIn, @NonNull FileDescriptor fdOut, @Nullable Int64Ref offOut, long len, int flags) throws ErrnoException { return Libcore.os.splice(fdIn, offIn, fdOut, offOut, len, flags); }
@@ -961,6 +979,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void unlink(@Nullable String pathname) throws ErrnoException { Libcore.os.unlink(pathname); }
diff --git a/luni/src/main/java/android/system/OsConstants.java b/luni/src/main/java/android/system/OsConstants.java
index dabb41a..2c09edb 100644
--- a/luni/src/main/java/android/system/OsConstants.java
+++ b/luni/src/main/java/android/system/OsConstants.java
@@ -16,6 +16,9 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
/**
@@ -36,6 +39,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int CAP_TO_INDEX(int x) { return x >>> 5; }
@@ -50,6 +54,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int CAP_TO_MASK(int x) { return 1 << (x & 31); }
@@ -185,6 +190,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int ARPHRD_LOOPBACK = placeholder();
public static final int CAP_AUDIT_CONTROL = placeholder();
@@ -325,6 +331,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int EUSERS = placeholder();
// On Linux, EWOULDBLOCK == EAGAIN. Use EAGAIN instead, to reduce confusion.
@@ -421,6 +428,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int _LINUX_CAPABILITY_VERSION_3 = placeholder();
public static final int MAP_FIXED = placeholder();
@@ -433,6 +441,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int MAP_POPULATE = placeholder();
public static final int MAP_PRIVATE = placeholder();
@@ -489,6 +498,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int O_DIRECT = placeholder();
public static final int O_EXCL = placeholder();
@@ -520,6 +530,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int PR_CAP_AMBIENT = placeholder();
/**
@@ -532,6 +543,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int PR_CAP_AMBIENT_RAISE = placeholder();
public static final int PR_GET_DUMPABLE = placeholder();
@@ -555,6 +567,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int RLIMIT_NOFILE = placeholder();
public static final int RT_SCOPE_HOST = placeholder();
@@ -571,6 +584,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int RTMGRP_IPV4_IFADDR = placeholder();
/** @hide */
@@ -719,6 +733,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SPLICE_F_MOVE = placeholder();
/** @hide */
@@ -736,6 +751,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SPLICE_F_MORE = placeholder();
public static final int STDERR_FILENO = placeholder();
@@ -785,6 +801,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int TIOCOUTQ = placeholder();
/**
@@ -793,6 +810,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int UDP_ENCAP = placeholder();
/** @hide */
@@ -800,6 +818,7 @@
public static final int UDP_ENCAP_ESPINUDP_NON_IKE = placeholder();
/** @hide */
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int UDP_ENCAP_ESPINUDP = placeholder();
/** @hide */
@@ -822,6 +841,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int XATTR_CREATE = placeholder();
/**
@@ -835,6 +855,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int XATTR_REPLACE = placeholder();
public static final int X_OK = placeholder();
diff --git a/luni/src/main/java/android/system/PacketSocketAddress.java b/luni/src/main/java/android/system/PacketSocketAddress.java
index 86afc0c..dca8d06 100644
--- a/luni/src/main/java/android/system/PacketSocketAddress.java
+++ b/luni/src/main/java/android/system/PacketSocketAddress.java
@@ -16,6 +16,9 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.net.SocketAddress;
@@ -30,6 +33,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class PacketSocketAddress extends SocketAddress {
/**
@@ -94,6 +98,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public PacketSocketAddress(int sll_protocol, int sll_ifindex, byte[] sll_addr) {
this.sll_protocol = sll_protocol;
diff --git a/luni/src/main/java/android/system/StructCapUserData.java b/luni/src/main/java/android/system/StructCapUserData.java
index c31e615..a4aa87c 100644
--- a/luni/src/main/java/android/system/StructCapUserData.java
+++ b/luni/src/main/java/android/system/StructCapUserData.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.util.Objects;
/**
@@ -27,6 +31,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class StructCapUserData {
/**
@@ -34,6 +39,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final int effective; /* __u32 */
@@ -42,6 +48,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final int permitted; /* __u32 */
@@ -50,6 +57,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final int inheritable; /* __u32 */
@@ -62,6 +70,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public StructCapUserData(int effective, int permitted, int inheritable) {
this.effective = effective;
diff --git a/luni/src/main/java/android/system/StructCapUserHeader.java b/luni/src/main/java/android/system/StructCapUserHeader.java
index c773a47..249313a 100644
--- a/luni/src/main/java/android/system/StructCapUserHeader.java
+++ b/luni/src/main/java/android/system/StructCapUserHeader.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.util.Objects;
/**
@@ -26,6 +30,7 @@
* Capabilities defined in <a href="https://man7.org/linux/man-pages/man7/capabilities.7.html">capabilities(7)</a>
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class StructCapUserHeader {
/**
@@ -55,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public StructCapUserHeader(int version, int pid) {
this.version = version;
diff --git a/luni/src/main/java/android/system/StructLinger.java b/luni/src/main/java/android/system/StructLinger.java
index 6726d59..52f4f8e 100644
--- a/luni/src/main/java/android/system/StructLinger.java
+++ b/luni/src/main/java/android/system/StructLinger.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.util.Objects;
/**
@@ -31,17 +35,27 @@
* See <a href="https://man7.org/linux/man-pages/man7/socket.7.html">socket(7)</a>
* for linger struct description.
*
- * @see {@link Os.getsockoptLinger(java.io.FileDescriptor, int, int)}.
- * @see {@link OsConstants.SO_LINGER}.
+ * @see Os#getsockoptLinger(java.io.FileDescriptor, int, int).
+ * @see OsConstants#SO_LINGER
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class StructLinger {
- /** Whether or not linger is enabled. Non-zero is on. */
+ /**
+ * Whether or not linger is enabled. Non-zero is on.
+ *
+ * @hide
+ */
public final int l_onoff;
- /** Linger time in seconds. */
+ /**
+ * Linger time in seconds.
+ *
+ * @hide
+ */
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final int l_linger;
@@ -50,7 +64,10 @@
*
* @param l_onoff whether or not linger is enabled, non-zero is on
* @param l_linger linger time, in seconds
+ *
+ * @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public StructLinger(int l_onoff, int l_linger) {
this.l_onoff = l_onoff;
@@ -61,13 +78,20 @@
* Returns whether linger is on or not.
*
* @return {@code true} if linger is enabled, and {@code false} otherwise
+ *
+ * @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public boolean isOn() {
return l_onoff != 0;
}
- @Override public String toString() {
+ /**
+ * @hide
+ */
+ @Override
+ public String toString() {
return Objects.toString(this);
}
}
diff --git a/luni/src/main/java/android/system/StructRlimit.java b/luni/src/main/java/android/system/StructRlimit.java
index 6287e4c..b35c075 100644
--- a/luni/src/main/java/android/system/StructRlimit.java
+++ b/luni/src/main/java/android/system/StructRlimit.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.util.Objects;
/**
@@ -26,6 +30,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class StructRlimit {
@@ -34,6 +39,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final long rlim_cur;
/**
diff --git a/luni/src/main/java/android/system/UnixSocketAddress.java b/luni/src/main/java/android/system/UnixSocketAddress.java
index 7ccc594..3a7c822 100644
--- a/luni/src/main/java/android/system/UnixSocketAddress.java
+++ b/luni/src/main/java/android/system/UnixSocketAddress.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.net.SocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
@@ -29,6 +33,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class UnixSocketAddress extends SocketAddress {
@@ -86,6 +91,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static UnixSocketAddress createFileSystem(String pathName) {
byte[] pathNameBytes = pathName.getBytes(StandardCharsets.UTF_8);
diff --git a/luni/src/main/java/android/system/VmSocketAddress.java b/luni/src/main/java/android/system/VmSocketAddress.java
index e31ce23..1ff85bd 100644
--- a/luni/src/main/java/android/system/VmSocketAddress.java
+++ b/luni/src/main/java/android/system/VmSocketAddress.java
@@ -16,6 +16,10 @@
package android.system;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.net.SocketAddress;
import libcore.api.CorePlatformApi;
import libcore.util.Objects;
@@ -37,6 +41,7 @@
* @see <a href="https://man7.org/linux/man-pages/man7/vsock.7.html">vsock(7)</a>
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final class VmSocketAddress extends SocketAddress {
/**
@@ -61,6 +66,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public VmSocketAddress(int svmPort, int svmCid) {
this.svmPort = svmPort;
@@ -72,6 +78,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public int getSvmPort() {
return svmPort;
@@ -82,6 +89,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public int getSvmCid() {
return svmCid;
diff --git a/luni/src/main/java/java/nio/NIOAccess.java b/luni/src/main/java/java/nio/NIOAccess.java
index 842aa6d..13968fb 100644
--- a/luni/src/main/java/java/nio/NIOAccess.java
+++ b/luni/src/main/java/java/nio/NIOAccess.java
@@ -16,6 +16,10 @@
package java.nio;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import android.compat.annotation.UnsupportedAppUsage;
/**
@@ -24,6 +28,7 @@
* @hide
*/
// @VisibleForTesting : was default
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class NIOAccess {
@@ -55,6 +60,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static Object getBaseArray(Buffer b) {
return b.hasArray() ? b.array() : null;
@@ -73,6 +79,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int getBaseArrayOffset(Buffer b) {
return b.hasArray() ? ((b.arrayOffset() + b.position) << b._elementSizeShift) : 0;
diff --git a/luni/src/main/java/java/nio/NioUtils.java b/luni/src/main/java/java/nio/NioUtils.java
index 34c269b..cfac508 100644
--- a/luni/src/main/java/java/nio/NioUtils.java
+++ b/luni/src/main/java/java/nio/NioUtils.java
@@ -16,6 +16,9 @@
package java.nio;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.Closeable;
@@ -32,6 +35,7 @@
/**
* @hide internal use only
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class NioUtils {
private NioUtils() {
@@ -45,6 +49,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void freeDirectBuffer(ByteBuffer buffer) {
if (buffer == null) {
@@ -92,6 +97,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static byte[] unsafeArray(ByteBuffer b) {
return b.array();
@@ -107,6 +113,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int unsafeArrayOffset(ByteBuffer b) {
return b.arrayOffset();
diff --git a/luni/src/main/java/libcore/content/type/MimeMap.java b/luni/src/main/java/libcore/content/type/MimeMap.java
index 2ef1217..fcd08ec 100644
--- a/luni/src/main/java/libcore/content/type/MimeMap.java
+++ b/luni/src/main/java/libcore/content/type/MimeMap.java
@@ -16,6 +16,10 @@
package libcore.content.type;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -34,6 +38,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final class MimeMap {
@@ -46,6 +51,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static @NonNull Builder builder() {
return new Builder();
@@ -61,6 +67,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public @NonNull Builder buildUpon() {
return new Builder(mimeToExt, extToMime);
@@ -107,6 +114,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static @NonNull MimeMap getDefault() {
return Objects.requireNonNull(instanceSupplier.get());
@@ -125,6 +133,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static void setDefaultSupplier(@NonNull Supplier<@NonNull MimeMap> mimeMapSupplier) {
instanceSupplier = new MemoizingSupplier<>(Objects.requireNonNull(mimeMapSupplier));
@@ -139,6 +148,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final boolean hasExtension(@Nullable String extension) {
return guessMimeTypeFromExtension(extension) != null;
@@ -154,6 +164,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final @Nullable String guessMimeTypeFromExtension(@Nullable String extension) {
if (extension == null) {
@@ -172,6 +183,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final boolean hasMimeType(@Nullable String mimeType) {
return guessExtensionFromMimeType(mimeType) != null;
@@ -187,6 +199,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public final @Nullable String guessExtensionFromMimeType(@Nullable String mimeType) {
if (mimeType == null) {
@@ -205,6 +218,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public @NonNull Set<String> mimeTypes() {
return Collections.unmodifiableSet(mimeToExt.keySet());
@@ -220,6 +234,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public @NonNull Set<String> extensions() {
return Collections.unmodifiableSet(extToMime.keySet());
@@ -278,6 +293,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public static final class Builder {
private final Map<String, String> mimeToExt;
@@ -382,6 +398,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public @NonNull Builder addMimeMapping(@NonNull String mimeSpec, @NonNull List<@NonNull String> extensionSpecs)
{
@@ -415,6 +432,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public @NonNull MimeMap build() {
return new MimeMap(mimeToExt, extToMime);
diff --git a/luni/src/main/java/libcore/io/ForwardingOs.java b/luni/src/main/java/libcore/io/ForwardingOs.java
index 02b0ca9..8320be0 100755
--- a/luni/src/main/java/libcore/io/ForwardingOs.java
+++ b/luni/src/main/java/libcore/io/ForwardingOs.java
@@ -16,6 +16,8 @@
package libcore.io;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
import android.system.ErrnoException;
import android.system.GaiException;
import android.system.Int32Ref;
@@ -36,6 +38,7 @@
import android.system.StructUcred;
import android.system.StructUtsname;
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.FileDescriptor;
import java.io.InterruptedIOException;
@@ -54,6 +57,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class ForwardingOs implements Os {
@UnsupportedAppUsage
@@ -67,6 +71,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
protected ForwardingOs(@NonNull Os os) {
this.os = Objects.requireNonNull(os);
@@ -117,6 +122,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
/**
@@ -556,6 +562,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public FileDescriptor open(@Nullable String path, int flags, int mode) throws ErrnoException { return os.open(path, flags, mode); }
@@ -666,6 +673,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void remove(@Nullable String path) throws ErrnoException { os.remove(path); }
@@ -691,6 +699,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void rename(@Nullable String oldPath, @Nullable String newPath) throws ErrnoException { os.rename(oldPath, newPath); }
@@ -839,6 +848,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public @Nullable StructStat stat(@Nullable String path) throws ErrnoException { return os.stat(path); }
@@ -916,6 +926,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void unlink(@Nullable String pathname) throws ErrnoException { os.unlink(pathname); }
diff --git a/luni/src/main/java/libcore/io/IoBridge.java b/luni/src/main/java/libcore/io/IoBridge.java
index 7d4ca81..2fb6d58 100644
--- a/luni/src/main/java/libcore/io/IoBridge.java
+++ b/luni/src/main/java/libcore/io/IoBridge.java
@@ -16,6 +16,7 @@
package libcore.io;
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.system.ErrnoException;
import android.system.StructGroupReq;
@@ -36,6 +37,7 @@
import java.net.NetworkInterface;
import java.net.NoRouteToHostException;
import java.net.PortUnreachableException;
+import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.SocketOptions;
@@ -43,21 +45,63 @@
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.concurrent.TimeUnit;
-import libcore.util.ArrayUtils;
+import libcore.util.ArrayUtils;
+import libcore.util.NonNull;
+import libcore.util.Nullable;
+
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
import static android.system.OsConstants.*;
/**
- * Implements java.io/java.net/java.nio semantics in terms of the underlying POSIX system calls.
+ * Collection of utility methods to work with blocking and non-blocking I/O that wrap raw POSIX
+ * system calls, e.g. {@link android.system.Os}. These wrappers are to signal other blocked I/O
+ * threads and avoid boilerplate code of routine error checks when using raw system calls.
+ *
+ * <p>
+ * For example, when using {@link Os#read(FileDescriptor, byte[], int, int)}, return value can
+ * contain:
+ * <ul>
+ * <li>{@code 0} which means EOF</li>
+ * <li>{@code N > 0} which means number of bytes read</li>
+ * <li>{@code -1} which means error, and {@link ErrnoException} is thrown</li>
+ * </ul>
+ *
+ * <p>
+ * {@link ErrnoException} in its turn can be one of:
+ * <ul>
+ * <li>{@link android.system.OsConstants#EAGAIN} which means the file descriptor refers to a file
+ * or a socket, which has been marked nonblocking
+ * ({@link android.system.OsConstants#O_NONBLOCK}), and the read would block</li>
+ * <li>{@link android.system.OsConstants#EBADF} which means the file descriptor is not a valid
+ * file descriptor or is not open for reading</li>
+ * <li>{@link android.system.OsConstants#EFAULT} which means given buffer is outside accessible
+ * address space</li>
+ * <li>{@link android.system.OsConstants#EINTR} which means the call was interrupted by a signal
+ * before any data was read</li>
+ * <li>{@link android.system.OsConstants#EINVAL} which means the file descriptor is attached to
+ * an object which is unsuitable for reading; or the file was opened with the
+ * {@link android.system.OsConstants#O_DIRECT} flag, and either the address specified in
+ * {@code buffer}, the value specified in {@code count}, or the file {@code offset} is not
+ * suitably aligned</li>
+ * <li>{@link android.system.OsConstants#EIO} which means I/O error happened</li>
+ * <li>{@link android.system.OsConstants#EISDIR} which means the file descriptor refers to a
+ * directory</li>
+ * </ul>
+ *
+ * All these errors require handling, and this class contains some wrapper methods that handle most
+ * common cases, making usage of system calls more user friendly.
*
* @hide
*/
-@libcore.api.CorePlatformApi
+@SystemApi(client = MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class IoBridge {
private IoBridge() {
}
+ /** @hide */
public static int available(FileDescriptor fd) throws IOException {
try {
int available = Libcore.os.ioctlInt(fd, FIONREAD);
@@ -80,7 +124,7 @@
}
}
-
+ /** @hide */
public static void bind(FileDescriptor fd, InetAddress address, int port) throws SocketException {
if (address instanceof Inet6Address) {
Inet6Address inet6Address = (Inet6Address) address;
@@ -114,6 +158,8 @@
/**
* Connects socket 'fd' to 'inetAddress' on 'port', with no timeout. The lack of a timeout
* means this method won't throw SocketTimeoutException.
+ *
+ * @hide
*/
public static void connect(FileDescriptor fd, InetAddress inetAddress, int port) throws SocketException {
try {
@@ -126,6 +172,8 @@
/**
* Connects socket 'fd' to 'inetAddress' on 'port', with a the given 'timeoutMs'.
* Use timeoutMs == 0 for a blocking connect with no timeout.
+ *
+ * @hide
*/
public static void connect(FileDescriptor fd, InetAddress inetAddress, int port, int timeoutMs) throws SocketException, SocketTimeoutException {
try {
@@ -193,6 +241,8 @@
/**
* Constructs the message for an exception that the caller is about to throw.
+ *
+ * @hide
*/
private static String createMessageForException(FileDescriptor fd, InetAddress inetAddress,
int port, int timeoutMs, Exception causeOrNull) {
@@ -233,13 +283,19 @@
* Closes the Unix file descriptor associated with the supplied file descriptor, resets the
* internal int to -1, and sends a signal to any threads are currently blocking. In order for
* the signal to be sent the blocked threads must have registered with the
- * AsynchronousCloseMonitor before they entered the blocking operation. {@code fd} will be
+ * {@link AsynchronousCloseMonitor} before they entered the blocking operation. {@code fd} will be
* invalid after this call.
*
* <p>This method is a no-op if passed a {@code null} or already-closed file descriptor.
+ *
+ * @param fd file descriptor to be closed
+ * @throws IOException if underlying system call fails with {@link ErrnoException}
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
- public static void closeAndSignalBlockedThreads(FileDescriptor fd) throws IOException {
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ public static void closeAndSignalBlockedThreads(@NonNull FileDescriptor fd) throws IOException {
if (fd == null) {
return;
}
@@ -260,6 +316,7 @@
}
}
+ /** @hide */
@UnsupportedAppUsage
public static boolean isConnected(FileDescriptor fd, InetAddress inetAddress, int port,
int timeoutMs, int remainingTimeoutMs) throws IOException {
@@ -293,14 +350,19 @@
}
// Socket options used by java.net but not exposed in SocketOptions.
+ /** @hide */
public static final int JAVA_MCAST_JOIN_GROUP = 19;
+ /** @hide */
public static final int JAVA_MCAST_LEAVE_GROUP = 20;
+ /** @hide */
public static final int JAVA_IP_MULTICAST_TTL = 17;
+ /** @hide */
public static final int JAVA_IP_TTL = 25;
/**
* java.net has its own socket options similar to the underlying Unix ones. We paper over the
* differences here.
+ * @hide
*/
public static Object getSocketOption(FileDescriptor fd, int option) throws SocketException {
try {
@@ -373,6 +435,8 @@
/**
* java.net has its own socket options similar to the underlying Unix ones. We paper over the
* differences here.
+ *
+ * @hide
*/
public static void setSocketOption(FileDescriptor fd, int option, Object value) throws SocketException {
try {
@@ -472,17 +536,31 @@
}
/**
- * java.io only throws FileNotFoundException when opening files, regardless of what actually
- * went wrong. Additionally, java.io is more restrictive than POSIX when it comes to opening
- * directories: POSIX says read-only is okay, but java.io doesn't even allow that.
+ * Wrapper for {@link Os#open(String, int, int)} that behaves similar to {@link java.io.File}.
+ * When a {@link java.io.File} is opened and there is an error, it throws
+ * {@link java.io.FileNotFoundException} regardless of what went wrong, when POSIX
+ * {@link Os#open(String, int, int)} throws more grained exceptions of what went wrong.
+ *
+ * <p>Additionally, attempt to open directory using {@link java.io.File} is also error, however
+ * POSIX {@link Os#open(String, int, int)} for read-only directories is not error.
+ *
+ * @see <a href="https://man7.org/linux/man-pages/man2/open.2.html">open(2)</a>.
+ *
+ * @param path path of the file to be opened
+ * @param flags bitmask of the access, file creation and file status flags
+ * @return {@link FileDescriptor} of an opened file
+ * @throws FileNotFoundException if there was error opening file under {@code path}
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
- public static FileDescriptor open(String path, int flags) throws FileNotFoundException {
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ public static @NonNull FileDescriptor open(@NonNull String path, int flags) throws FileNotFoundException {
FileDescriptor fd = null;
try {
fd = Libcore.os.open(path, flags, 0666);
// Posix open(2) fails with EISDIR only if you ask for write permission.
- // Java disallows reading directories too.
+ // Java disallows reading directories too.f
if (S_ISDIR(Libcore.os.fstat(fd).st_mode)) {
throw new ErrnoException("open", EISDIR);
}
@@ -501,11 +579,25 @@
}
/**
- * java.io thinks that a read at EOF is an error and should return -1, contrary to traditional
- * Unix practice where you'd read until you got 0 bytes (and any future read would return -1).
+ * Wrapper for {@link Os#read(FileDescriptor, byte[], int, int)} that behaves similar to
+ * {@link java.io.FileInputStream#read(byte[], int, int)} and
+ * {@link java.io.FileReader#read(char[], int, int)} which interpret reading at {@code EOF} as
+ * error, when POSIX system call returns {@code 0} (and future reads return {@code -1}).
+ *
+ * <p>@see <a href="https://man7.org/linux/man-pages/man2/read.2.html">read(2)</a>.
+ *
+ * @param fd file descriptor to read from
+ * @param bytes buffer to put data read from {@code fd}
+ * @param byteOffset offset in {@code bytes} buffer to put read data at
+ * @param byteCount number of bytes to read from {@code fd}
+ * @return number of bytes read, if read operation was successful
+ * @throws IOException if underlying system call returned error
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
- public static int read(FileDescriptor fd, byte[] bytes, int byteOffset, int byteCount) throws IOException {
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ public static int read(@NonNull FileDescriptor fd, @NonNull byte[] bytes, int byteOffset, int byteCount) throws IOException {
ArrayUtils.throwsIfOutOfBounds(bytes.length, byteOffset, byteCount);
if (byteCount == 0) {
return 0;
@@ -526,11 +618,28 @@
}
/**
- * java.io always writes every byte it's asked to, or fails with an error. (That is, unlike
- * Unix it never just writes as many bytes as happens to be convenient.)
+ * Wrapper for {@link Os#write(FileDescriptor, byte[], int, int)} that behaves similar to
+ * {@link java.io.FileOutputStream#write(byte[], int, int)} and
+ * {@link java.io.FileWriter#write(char[], int, int)} which always either write all requested
+ * bytes, or fail with error; as opposed to POSIX write, when the number of bytes written may
+ * be less than {@code bytes}. This may happen, for example, if there is insufficient space on
+ * the underlying physical medium, or the {@code RLIMIT_FSIZE} resource limit is encountered,
+ * or the call was interrupted by a signal handler after having written less than {@code bytes}
+ * bytes.
+ *
+ * <p>@see <a href="https://man7.org/linux/man-pages/man2/write.2.html">write(2)</a>.
+ *
+ * @param fd file descriptor to write to
+ * @param bytes buffer containing the data to be written
+ * @param byteOffset offset in {@code bytes} buffer to read written data from
+ * @param byteCount number of bytes to write to {@code fd}
+ * @throws IOException if underlying system call returned error
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
- public static void write(FileDescriptor fd, byte[] bytes, int byteOffset, int byteCount) throws IOException {
+ @SystemApi(client = MODULE_LIBRARIES)
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ public static void write(@NonNull FileDescriptor fd,@NonNull byte[] bytes, int byteOffset, int byteCount) throws IOException {
ArrayUtils.throwsIfOutOfBounds(bytes.length, byteOffset, byteCount);
if (byteCount == 0) {
return;
@@ -546,8 +655,31 @@
}
}
- @libcore.api.CorePlatformApi
- public static int sendto(FileDescriptor fd, byte[] bytes, int byteOffset, int byteCount, int flags, InetAddress inetAddress, int port) throws IOException {
+ /**
+ * Wrapper around {@link Os#sendto(FileDescriptor, byte[], int, int, int, InetAddress, int)}
+ * that allows sending data over both TCP and UDP socket; handles
+ * {@link android.system.OsConstants#EAGAIN} and {@link android.system.OsConstants#ECONNREFUSED}
+ * and behaves similar to and behaves similar to
+ * {@link java.net.DatagramSocket#send(DatagramPacket)} and
+ * {@link Socket#getOutputStream()#write(FileDescriptor, byte[], int, int)}.
+ *
+ * <p>See {@link android.system.OsConstants} for available flags.
+ *
+ * <p>@see <a href="https://man7.org/linux/man-pages/man2/send.2.html">send(2)</a>.
+ *
+ * @param fd {@link FileDescriptor} of the socket to send data over
+ * @param bytes byte buffer containing the data to be sent
+ * @param byteOffset offset in {@code bytes} at which data to be sent starts
+ * @param byteCount number of bytes to be sent
+ * @param flags bitwise OR of zero or more of flags, like {@link android.system.OsConstants#MSG_DONTROUTE}
+ * @param inetAddress destination address
+ * @param port destination port
+ * @return number of bytes sent on success
+ * @throws IOException if underlying system call returned error
+ *
+ * @hide
+ */
+ public static int sendto(@NonNull FileDescriptor fd, @NonNull byte[] bytes, int byteOffset, int byteCount, int flags, @Nullable InetAddress inetAddress, int port) throws IOException {
boolean isDatagram = (inetAddress != null);
if (!isDatagram && byteCount <= 0) {
return 0;
@@ -561,6 +693,7 @@
return result;
}
+ /** @hide */
public static int sendto(FileDescriptor fd, ByteBuffer buffer, int flags, InetAddress inetAddress, int port) throws IOException {
boolean isDatagram = (inetAddress != null);
if (!isDatagram && buffer.remaining() == 0) {
@@ -591,8 +724,32 @@
throw errnoException.rethrowAsIOException();
}
- @libcore.api.CorePlatformApi
- public static int recvfrom(boolean isRead, FileDescriptor fd, byte[] bytes, int byteOffset, int byteCount, int flags, DatagramPacket packet, boolean isConnected) throws IOException {
+ /**
+ * Wrapper around {@link Os#recvfrom(FileDescriptor, byte[], int, int, int, InetSocketAddress)}
+ * that receives a message from both TCP and UDP socket; handles
+ * {@link android.system.OsConstants#EAGAIN} and {@link android.system.OsConstants#ECONNREFUSED}
+ * and behaves similar to {@link java.net.DatagramSocket#receive(DatagramPacket)} and
+ * {@link Socket#getInputStream()#recvfrom(boolean, FileDescriptor, byte[], int, int, int, DatagramPacket, boolean)}.
+ *
+ * <p>If {@code packet} is not {@code null}, and the underlying protocol provides the source
+ * address of the message, that source address is placed in the {@code packet}.
+ *
+ * @see <a href="https://man7.org/linux/man-pages/man2/recv.2.html">recv(2)</a>.
+ *
+ * @param isRead {@code true} if some data been read already from {@code fd}
+ * @param fd socket to receive data from
+ * @param bytes buffer to put data read from {@code fd}
+ * @param byteOffset offset in {@code bytes} buffer to put read data at
+ * @param byteCount number of bytes to read from {@code fd}
+ * @param flags bitwise OR of zero or more of flags, like {@link android.system.OsConstants#MSG_DONTROUTE}
+ * @param packet {@link DatagramPacket} to fill with source address
+ * @param isConnected {@code true} if socket {@code fd} is connected
+ * @return number of bytes read, if read operation was successful
+ * @throws IOException if underlying system call returned error
+ *
+ * @hide
+ */
+ public static int recvfrom(boolean isRead, @NonNull FileDescriptor fd, @NonNull byte[] bytes, int byteOffset, int byteCount, int flags, @Nullable DatagramPacket packet, boolean isConnected) throws IOException {
int result;
try {
InetSocketAddress srcAddress = packet != null ? new InetSocketAddress() : null;
@@ -604,6 +761,7 @@
return result;
}
+ /** @hide */
public static int recvfrom(boolean isRead, FileDescriptor fd, ByteBuffer buffer, int flags, DatagramPacket packet, boolean isConnected) throws IOException {
int result;
try {
@@ -652,8 +810,34 @@
}
}
- @libcore.api.CorePlatformApi
- public static FileDescriptor socket(int domain, int type, int protocol) throws SocketException {
+ /**
+ * Creates an endpoint for communication and returns a file descriptor that refers
+ * to that endpoint.
+ *
+ * <p>The {@code domain} specifies a communication domain; this selects the protocol
+ * family which will be used for communication, e.g. {@link android.system.OsConstants#AF_UNIX}
+ * {@link android.system.OsConstants#AF_INET}.
+ *
+ * <p>The socket has the indicated type, which specifies the communication semantics,
+ * e.g. {@link android.system.OsConstants#SOCK_STREAM} or
+ * {@link android.system.OsConstants#SOCK_DGRAM}.
+ *
+ * <p>The protocol specifies a particular protocol to be used with the
+ * socket. Normally only a single protocol exists to support a
+ * particular socket type within a given protocol family, in which
+ * case protocol can be specified as {@code 0}.
+ *
+ * @see <a href="https://man7.org/linux/man-pages/man2/socket.2.html">socket(2)</a>.
+ *
+ * @param domain socket domain
+ * @param type socket type
+ * @param protocol socket protocol
+ * @return {@link FileDescriptor} of an opened socket
+ * @throws SocketException if underlying system call returned error
+ *
+ * @hide
+ */
+ public static @NonNull FileDescriptor socket(int domain, int type, int protocol) throws SocketException {
FileDescriptor fd;
try {
fd = Libcore.os.socket(domain, type, protocol);
@@ -670,6 +854,8 @@
*
* @throws SocketException if poll(2) fails.
* @throws SocketTimeoutException if the event has not happened before timeout period has passed.
+ *
+ * @hide
*/
public static void poll(FileDescriptor fd, int events, int timeout)
throws SocketException, SocketTimeoutException {
@@ -688,10 +874,17 @@
}
/**
- * @throws SocketException if fd is not currently bound to an InetSocketAddress
+ * Returns the current address to which the socket {@code fd} is bound.
+ *
+ * @see <a href="https://man7.org/linux/man-pages/man2/getsockname.2.html">getsockname(2)</a>.
+ *
+ * @param fd socket to get the bounded address of
+ * @return current address to which the socket {@code fd} is bound
+ * @throws SocketException if {@code fd} is not currently bound to an {@link InetSocketAddress}
+ *
+ * @hide
*/
- @libcore.api.CorePlatformApi
- public static InetSocketAddress getLocalInetSocketAddress(FileDescriptor fd)
+ public static @NonNull InetSocketAddress getLocalInetSocketAddress(@NonNull FileDescriptor fd)
throws SocketException {
try {
SocketAddress socketAddress = Libcore.os.getsockname(fd);
diff --git a/luni/src/main/java/libcore/io/IoUtils.java b/luni/src/main/java/libcore/io/IoUtils.java
index 7b7d778..6820868 100644
--- a/luni/src/main/java/libcore/io/IoUtils.java
+++ b/luni/src/main/java/libcore/io/IoUtils.java
@@ -16,6 +16,9 @@
package libcore.io;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.system.ErrnoException;
import android.system.StructStat;
@@ -39,6 +42,7 @@
import static android.system.OsConstants.O_RDONLY;
/** @hide */
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class IoUtils {
private IoUtils() {
@@ -60,6 +64,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int acquireRawFd(@NonNull FileDescriptor fd) {
Objects.requireNonNull(fd);
@@ -145,6 +150,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setFdOwner(@NonNull FileDescriptor fd, @NonNull Object owner) {
Objects.requireNonNull(fd);
@@ -172,6 +178,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void close(@Nullable FileDescriptor fd) throws IOException {
IoBridge.closeAndSignalBlockedThreads(fd);
@@ -185,6 +192,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void closeQuietly(@Nullable AutoCloseable closeable) {
if (closeable != null) {
@@ -205,6 +213,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void closeQuietly(@Nullable FileDescriptor fd) {
try {
@@ -221,6 +230,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void closeQuietly(@Nullable Socket socket) {
if (socket != null) {
@@ -243,6 +253,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setBlocking(@NonNull FileDescriptor fd, boolean blocking) throws IOException {
try {
@@ -268,6 +279,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull byte[] readFileAsByteArray(@NonNull String absolutePath) throws IOException {
return new FileReader(absolutePath).readFully().toByteArray();
@@ -283,6 +295,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull String readFileAsString(@NonNull String absolutePath) throws IOException {
return new FileReader(absolutePath).readFully().toString(StandardCharsets.UTF_8);
@@ -299,9 +312,7 @@
*
* @hide
*/
- @libcore.api.CorePlatformApi
- @Deprecated
- public static void deleteContents(File dir) throws IOException {
+ public static void deleteContents(@NonNull File dir) throws IOException {
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
diff --git a/luni/src/main/java/libcore/io/Os.java b/luni/src/main/java/libcore/io/Os.java
index bc96133..0c58455 100755
--- a/luni/src/main/java/libcore/io/Os.java
+++ b/luni/src/main/java/libcore/io/Os.java
@@ -16,6 +16,8 @@
package libcore.io;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
import android.system.ErrnoException;
import android.system.GaiException;
import android.system.Int32Ref;
@@ -36,6 +38,7 @@
import android.system.StructUcred;
import android.system.StructUtsname;
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.FileDescriptor;
import java.io.InterruptedIOException;
@@ -55,6 +58,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public interface Os {
@@ -785,6 +789,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean compareAndSetDefault(Os expect, Os update) {
return Libcore.compareAndSetOs(expect, update);
@@ -795,6 +800,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static Os getDefault() {
return Libcore.getOs();
diff --git a/luni/src/main/java/libcore/io/Streams.java b/luni/src/main/java/libcore/io/Streams.java
index 809c84d..6002118 100644
--- a/luni/src/main/java/libcore/io/Streams.java
+++ b/luni/src/main/java/libcore/io/Streams.java
@@ -16,6 +16,9 @@
package libcore.io;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.ByteArrayOutputStream;
@@ -35,6 +38,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class Streams {
private static AtomicReference<byte[]> skipBuffer = new AtomicReference<byte[]>();
@@ -53,6 +57,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int readSingleByte(@NonNull InputStream in) throws IOException {
byte[] buffer = new byte[1];
@@ -72,6 +77,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void writeSingleByte(@NonNull OutputStream out, int b) throws IOException {
byte[] buffer = new byte[1];
@@ -90,6 +96,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void readFully(@NonNull InputStream in, @NonNull byte[] dst) throws IOException {
readFully(in, dst, 0, dst.length);
@@ -135,6 +142,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull byte[] readFully(@NonNull InputStream in) throws IOException {
try {
@@ -154,6 +162,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull byte[] readFullyNoClose(@NonNull InputStream in) throws IOException {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
@@ -174,6 +183,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull String readFully(@NonNull Reader reader) throws IOException {
try {
@@ -218,6 +228,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static long skipByReading(@NonNull InputStream in, long byteCount) throws IOException {
// acquire the shared skip buffer.
@@ -257,6 +268,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int copy(@NonNull InputStream in, @NonNull OutputStream out) throws IOException {
int total = 0;
diff --git a/luni/src/main/java/libcore/net/InetAddressUtils.java b/luni/src/main/java/libcore/net/InetAddressUtils.java
index de0c832..a3860b5 100644
--- a/luni/src/main/java/libcore/net/InetAddressUtils.java
+++ b/luni/src/main/java/libcore/net/InetAddressUtils.java
@@ -15,6 +15,10 @@
*/
package libcore.net;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import android.system.GaiException;
import android.system.StructAddrinfo;
import java.net.Inet4Address;
@@ -30,6 +34,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class InetAddressUtils {
@@ -53,6 +58,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isNumericAddress(String address) {
return parseNumericAddressNoThrow(address) != null;
@@ -73,6 +79,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static InetAddress parseNumericAddress(String address) {
InetAddress result = parseNumericAddressNoThrow(address);
diff --git a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
index 44e918e..ab4678e 100644
--- a/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
+++ b/luni/src/main/java/libcore/net/NetworkSecurityPolicy.java
@@ -16,6 +16,9 @@
package libcore.net;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
/**
@@ -31,6 +34,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public abstract class NetworkSecurityPolicy {
@@ -44,6 +48,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public NetworkSecurityPolicy() {
@@ -56,6 +61,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static NetworkSecurityPolicy getInstance() {
@@ -69,6 +75,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setInstance(NetworkSecurityPolicy policy) {
if (policy == null) {
@@ -101,6 +108,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract boolean isCleartextTrafficPermitted();
@@ -116,6 +124,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public abstract boolean isCleartextTrafficPermitted(String hostname);
@@ -132,6 +141,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public abstract boolean isCertificateTransparencyVerificationRequired(String hostname);
diff --git a/luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java b/luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java
index 4009a7e..4324a61 100644
--- a/luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java
+++ b/luni/src/main/java/libcore/net/event/NetworkEventDispatcher.java
@@ -16,6 +16,9 @@
package libcore.net.event;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -25,6 +28,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class NetworkEventDispatcher {
@@ -41,6 +45,7 @@
* @hide
*/
@UnsupportedAppUsage
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static NetworkEventDispatcher getInstance() {
return instance;
@@ -84,6 +89,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void dispatchNetworkConfigurationChange() {
for (NetworkEventListener listener : listeners) {
diff --git a/luni/src/main/java/libcore/net/http/Dns.java b/luni/src/main/java/libcore/net/http/Dns.java
index 6ef96fe..a5bb423 100644
--- a/luni/src/main/java/libcore/net/http/Dns.java
+++ b/luni/src/main/java/libcore/net/http/Dns.java
@@ -16,6 +16,10 @@
package libcore.net.http;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.api.CorePlatformApi;
import java.net.InetAddress;
@@ -28,6 +32,7 @@
* A domain name service that resolves IP addresses for host names.
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public interface Dns extends com.android.okhttp.internalandroidapi.Dns {
/**
@@ -38,6 +43,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@NonNull List<@NonNull InetAddress> lookup(@Nullable String hostname) throws UnknownHostException;
}
\ No newline at end of file
diff --git a/luni/src/main/java/libcore/net/http/HttpURLConnectionFactory.java b/luni/src/main/java/libcore/net/http/HttpURLConnectionFactory.java
index d5874bc..9a713bd 100644
--- a/luni/src/main/java/libcore/net/http/HttpURLConnectionFactory.java
+++ b/luni/src/main/java/libcore/net/http/HttpURLConnectionFactory.java
@@ -16,6 +16,10 @@
package libcore.net.http;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import libcore.api.CorePlatformApi;
import java.io.IOException;
@@ -34,6 +38,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public class HttpURLConnectionFactory {
private final com.android.okhttp.internalandroidapi.HttpURLConnectionFactory mFactory;
@@ -43,6 +48,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
@NonNull public static HttpURLConnectionFactory createInstance() {
return new HttpURLConnectionFactory();
@@ -62,6 +68,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public void setNewConnectionPool(int maxIdleConnections, long keepAliveDuration,
@NonNull TimeUnit timeUnit) {
@@ -75,6 +82,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public void setDns(@NonNull Dns dns) {
mFactory.setDns(dns);
@@ -93,6 +101,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@CorePlatformApi(status = CorePlatformApi.Status.STABLE)
public URLConnection openConnection(@NonNull URL url, @NonNull SocketFactory socketFactory,
@NonNull Proxy proxy) throws IOException {
diff --git a/luni/src/main/java/libcore/util/EmptyArray.java b/luni/src/main/java/libcore/util/EmptyArray.java
index 0d1e321..f34fe02 100644
--- a/luni/src/main/java/libcore/util/EmptyArray.java
+++ b/luni/src/main/java/libcore/util/EmptyArray.java
@@ -16,43 +16,84 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import dalvik.annotation.compat.VersionCodes;
-/** @hide */
-@libcore.api.CorePlatformApi
+/**
+ * Empty array is immutable. Use a shared empty array to avoid allocation.
+ *
+ * @hide
+ */
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
public final class EmptyArray {
private EmptyArray() {}
- @libcore.api.CorePlatformApi
- public static final boolean[] BOOLEAN = new boolean[0];
+ /** @hide */
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull boolean[] BOOLEAN = new boolean[0];
+
+ /** @hide */
@UnsupportedAppUsage(maxTargetSdk=VersionCodes.Q,
publicAlternatives="Use {@code new byte[0]} instead.")
- @libcore.api.CorePlatformApi
- public static final byte[] BYTE = new byte[0];
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull byte[] BYTE = new byte[0];
+
+ /** @hide */
public static final char[] CHAR = new char[0];
+
+ /** @hide */
public static final double[] DOUBLE = new double[0];
- @libcore.api.CorePlatformApi
- public static final float[] FLOAT = new float[0];
+
+ /** @hide */
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull float[] FLOAT = new float[0];
+
+ /** @hide */
@UnsupportedAppUsage(maxTargetSdk=VersionCodes.Q,
publicAlternatives="Use {@code new int[0]} instead.")
- @libcore.api.CorePlatformApi
- public static final int[] INT = new int[0];
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull int[] INT = new int[0];
+
+ /** @hide */
@UnsupportedAppUsage(maxTargetSdk=VersionCodes.Q,
publicAlternatives="Use {@code new long[0]} instead.")
- @libcore.api.CorePlatformApi
- public static final long[] LONG = new long[0];
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull long[] LONG = new long[0];
+ /** @hide */
public static final Class<?>[] CLASS = new Class[0];
+
+ /** @hide */
@UnsupportedAppUsage(maxTargetSdk=VersionCodes.Q,
publicAlternatives="Use {@code new Object[0]} instead.")
- @libcore.api.CorePlatformApi
- public static final Object[] OBJECT = new Object[0];
- @libcore.api.CorePlatformApi
- public static final String[] STRING = new String[0];
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull Object[] OBJECT = new Object[0];
+
+ /** @hide */
+ @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+ @SystemApi(client = MODULE_LIBRARIES)
+ public static final @NonNull String[] STRING = new String[0];
+
+ /** @hide */
public static final Throwable[] THROWABLE = new Throwable[0];
+
+ /** @hide */
public static final StackTraceElement[] STACK_TRACE_ELEMENT = new StackTraceElement[0];
+
+ /** @hide */
public static final java.lang.reflect.Type[] TYPE = new java.lang.reflect.Type[0];
+
+ /** @hide */
public static final java.lang.reflect.TypeVariable[] TYPE_VARIABLE =
new java.lang.reflect.TypeVariable[0];
}
diff --git a/luni/src/main/java/libcore/util/FP16.java b/luni/src/main/java/libcore/util/FP16.java
index 575a214..d5a78ed 100644
--- a/luni/src/main/java/libcore/util/FP16.java
+++ b/luni/src/main/java/libcore/util/FP16.java
@@ -16,6 +16,10 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
/**
* <p>The {@code FP16} class is a wrapper and a utility class to manipulate half-precision 16-bit
* <a href="https://en.wikipedia.org/wiki/Half-precision_floating-point_format">IEEE 754</a>
@@ -86,6 +90,7 @@
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final class FP16 {
/**
@@ -93,6 +98,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SIZE = 16;
@@ -102,6 +108,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short EPSILON = (short) 0x1400;
@@ -110,6 +117,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int MAX_EXPONENT = 15;
/**
@@ -117,6 +125,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int MIN_EXPONENT = -14;
@@ -125,6 +134,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short LOWEST_VALUE = (short) 0xfbff;
/**
@@ -132,6 +142,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short MAX_VALUE = (short) 0x7bff;
/**
@@ -139,6 +150,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short MIN_NORMAL = (short) 0x0400;
/**
@@ -146,6 +158,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short MIN_VALUE = (short) 0x0001;
/**
@@ -153,6 +166,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short NaN = (short) 0x7e00;
/**
@@ -160,6 +174,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short NEGATIVE_INFINITY = (short) 0xfc00;
/**
@@ -167,6 +182,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short NEGATIVE_ZERO = (short) 0x8000;
/**
@@ -174,6 +190,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short POSITIVE_INFINITY = (short) 0x7c00;
/**
@@ -181,6 +198,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final short POSITIVE_ZERO = (short) 0x0000;
@@ -189,6 +207,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SIGN_SHIFT = 15;
@@ -197,6 +216,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int EXPONENT_SHIFT = 10;
@@ -205,6 +225,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SIGN_MASK = 0x8000;
@@ -213,6 +234,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SHIFTED_EXPONENT_MASK = 0x1f;
@@ -221,6 +243,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int SIGNIFICAND_MASK = 0x3ff;
@@ -229,6 +252,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int EXPONENT_SIGNIFICAND_MASK = 0x7fff;
@@ -237,6 +261,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final int EXPONENT_BIAS = 15;
@@ -273,6 +298,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static int compare(short x, short y) {
if (less(x, y)) return -1;
@@ -305,6 +331,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short rint(short h) {
int bits = h & 0xffff;
@@ -350,6 +377,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short ceil(short h) {
int bits = h & 0xffff;
@@ -393,6 +421,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short floor(short h) {
int bits = h & 0xffff;
@@ -434,6 +463,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short trunc(short h) {
int bits = h & 0xffff;
@@ -465,6 +495,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short min(short x, short y) {
if (isNaN(x)) return NaN;
@@ -493,6 +524,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short max(short x, short y) {
if (isNaN(x)) return NaN;
@@ -518,6 +550,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean less(short x, short y) {
if (isNaN(x)) return false;
@@ -539,6 +572,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean lessEquals(short x, short y) {
if (isNaN(x)) return false;
@@ -560,6 +594,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean greater(short x, short y) {
if (isNaN(x)) return false;
@@ -581,6 +616,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean greaterEquals(short x, short y) {
if (isNaN(x)) return false;
@@ -602,6 +638,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean equals(short x, short y) {
if (isNaN(x)) return false;
@@ -620,6 +657,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isInfinite(short h) {
return (h & EXPONENT_SIGNIFICAND_MASK) == POSITIVE_INFINITY;
@@ -634,6 +672,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isNaN(short h) {
return (h & EXPONENT_SIGNIFICAND_MASK) > POSITIVE_INFINITY;
@@ -651,6 +690,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isNormalized(short h) {
return (h & POSITIVE_INFINITY) != 0 && (h & POSITIVE_INFINITY) != POSITIVE_INFINITY;
@@ -673,6 +713,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static float toFloat(short h) {
int bits = h & 0xffff;
@@ -730,6 +771,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static short toHalf(float f) {
int bits = Float.floatToRawIntBits(f);
@@ -812,6 +854,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String toHexString(short h) {
StringBuilder o = new StringBuilder();
diff --git a/luni/src/main/java/libcore/util/HexEncoding.java b/luni/src/main/java/libcore/util/HexEncoding.java
index 02d1110..5edcb20 100644
--- a/luni/src/main/java/libcore/util/HexEncoding.java
+++ b/luni/src/main/java/libcore/util/HexEncoding.java
@@ -16,10 +16,15 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
/**
* Hexadecimal encoding where each byte is represented by two hexadecimal digits.
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class HexEncoding {
@@ -44,6 +49,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String encodeToString(byte b, boolean upperCase) {
char[] digits = upperCase ? UPPER_CASE_DIGITS : LOWER_CASE_DIGITS;
@@ -61,6 +67,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static char[] encode(byte[] data) {
return encode(data, 0, data.length, true /* upperCase */);
@@ -76,6 +83,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static char[] encode(byte[] data, boolean upperCase) {
return encode(data, 0, data.length, upperCase);
@@ -91,6 +99,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static char[] encode(byte[] data, int offset, int len) {
return encode(data, offset, len, true /* upperCase */);
@@ -120,6 +129,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String encodeToString(byte[] data) {
return encodeToString(data, true /* upperCase */);
@@ -135,6 +145,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static String encodeToString(byte[] data, boolean upperCase) {
return new String(encode(data, upperCase));
@@ -151,6 +162,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static byte[] decode(String encoded) throws IllegalArgumentException {
return decode(encoded.toCharArray());
@@ -169,6 +181,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static byte[] decode(String encoded, boolean allowSingleChar)
throws IllegalArgumentException {
@@ -186,6 +199,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static byte[] decode(char[] encoded) throws IllegalArgumentException {
return decode(encoded, false);
@@ -204,6 +218,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static byte[] decode(char[] encoded, boolean allowSingleChar)
throws IllegalArgumentException {
diff --git a/luni/src/main/java/libcore/util/NativeAllocationRegistry.java b/luni/src/main/java/libcore/util/NativeAllocationRegistry.java
index 387a1db..e336525 100644
--- a/luni/src/main/java/libcore/util/NativeAllocationRegistry.java
+++ b/luni/src/main/java/libcore/util/NativeAllocationRegistry.java
@@ -16,6 +16,10 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import dalvik.system.VMRuntime;
import sun.misc.Cleaner;
@@ -42,6 +46,7 @@
* used to register any number of native allocations of that kind.
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public class NativeAllocationRegistry {
@@ -80,6 +85,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static NativeAllocationRegistry createNonmalloced(
@NonNull ClassLoader classLoader, long freeFunction, long size) {
@@ -110,6 +116,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static NativeAllocationRegistry createMalloced(
@NonNull ClassLoader classLoader, long freeFunction, long size) {
@@ -129,6 +136,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public static NativeAllocationRegistry createMalloced(
@@ -202,6 +210,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public NativeAllocationRegistry(@NonNull ClassLoader classLoader, long freeFunction, long size) {
this(classLoader, freeFunction, size, size == 0);
@@ -241,6 +250,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public @NonNull Runnable registerNativeAllocation(@NonNull Object referent, long nativePtr) {
@@ -335,6 +345,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static native void applyFreeFunction(long freeFunction, long nativePtr);
}
diff --git a/luni/src/main/java/libcore/util/SneakyThrow.java b/luni/src/main/java/libcore/util/SneakyThrow.java
index 46f2e87..5a347d9 100644
--- a/luni/src/main/java/libcore/util/SneakyThrow.java
+++ b/luni/src/main/java/libcore/util/SneakyThrow.java
@@ -16,6 +16,10 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
/**
* Provides a hacky method that always throws {@code t} even if {@code t} is a checked exception.
* and is not declared to be thrown.
@@ -25,6 +29,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class SneakyThrow {
@@ -39,6 +44,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void sneakyThrow(@NonNull Throwable t) {
SneakyThrow.<RuntimeException>sneakyThrow_(t);
diff --git a/luni/src/main/java/libcore/util/XmlObjectFactory.java b/luni/src/main/java/libcore/util/XmlObjectFactory.java
index 8be04ae..7a1d7ec 100644
--- a/luni/src/main/java/libcore/util/XmlObjectFactory.java
+++ b/luni/src/main/java/libcore/util/XmlObjectFactory.java
@@ -16,6 +16,10 @@
package libcore.util;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import com.android.org.kxml2.io.KXmlParser;
import com.android.org.kxml2.io.KXmlSerializer;
import org.apache.harmony.xml.ExpatReader;
@@ -28,6 +32,7 @@
*
* @hide
*/
+@SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public class XmlObjectFactory {
@@ -41,6 +46,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull XmlSerializer newXmlSerializer() {
return new KXmlSerializer();
@@ -54,6 +60,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull XmlPullParser newXmlPullParser() {
return new KXmlParser();
@@ -66,6 +73,7 @@
*
* @hide
*/
+ @SystemApi(client = MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static @NonNull XMLReader newXMLReader() {
return new ExpatReader();
diff --git a/mmodules/core_platform_api/Android.bp b/mmodules/core_platform_api/Android.bp
index d7988ea..7036aba 100644
--- a/mmodules/core_platform_api/Android.bp
+++ b/mmodules/core_platform_api/Android.bp
@@ -41,133 +41,6 @@
default_applicable_licenses: ["libcore_license"],
}
-java_defaults {
- name: "art-module-platform-api-defaults",
- srcs: [
- ":art_module_api_files",
- ],
- api_only: true,
- droiddoc_options: [
- "--hide HiddenSuperclass",
- "--hide-annotation libcore.api.Hide",
- "--skip-annotation-instance-methods=false",
- "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* ",
- ],
- merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
-
- // Emit nullability annotations from the source to the stub files.
- annotations_enabled: true,
-
- merge_annotations_dirs: [
- "metalava-manual",
- "ojluni-annotated-sdk-stubs",
- ],
-
- sdk_version: "none",
- system_modules: "none",
- patch_module: "java.base",
- dist_group: "android",
- unsafe_ignore_missing_latest_api: true,
-}
-
-// Referenced implicitly from legacy.art.module.platform.api.
-filegroup {
- name: "legacy.art.module.platform.api.api.public.latest",
- srcs: [
- "api/legacy_platform/last-api.txt",
- ],
-}
-
-// Referenced implicitly from legacy.art.module.platform.api.
-filegroup {
- name: "legacy.art.module.platform.api-removed.api.public.latest",
- srcs: [
- "api/legacy_platform/last-removed.txt",
- ],
-}
-
-// Referenced implicitly from legacy.art.module.platform.api.
-filegroup {
- name: "legacy.art.module.platform.api-incompatibilities.api.public.latest",
- srcs: [
- "api/legacy_platform/last-incompatibilities.txt",
- ],
-}
-
-java_sdk_library {
- name: "legacy.art.module.platform.api",
- defaults: ["art-module-platform-api-defaults"],
- api_dir: "api/legacy_platform",
- droiddoc_options: [
- "--show-single-annotation libcore.api.CorePlatformApi",
- ],
-
- // Make dex jars for the stubs available for use by hiddenapi processing.
- compile_dex: true,
- dist_stem: "art-coreplatform-legacy",
-}
-
-// Referenced implicitly from stable.art.module.platform.api.
-filegroup {
- name: "stable.art.module.platform.api.api.public.latest",
- srcs: [
- "api/stable_platform/last-api.txt",
- ],
-}
-
-// Referenced implicitly from stable.art.module.platform.api.
-filegroup {
- name: "stable.art.module.platform.api-removed.api.public.latest",
- srcs: [
- "api/stable_platform/last-removed.txt",
- ],
-}
-
-// Referenced implicitly from stable.art.module.platform.api.
-filegroup {
- name: "stable.art.module.platform.api-incompatibilities.api.public.latest",
- srcs: [
- "api/stable_platform/last-incompatibilities.txt",
- ],
-}
-
-java_sdk_library {
- name: "stable.art.module.platform.api",
- defaults: ["art-module-platform-api-defaults"],
- api_dir: "api/stable_platform",
- droiddoc_options: [
- "--show-single-annotation libcore.api.CorePlatformApi\\(status=libcore.api.CorePlatformApi.Status.STABLE\\)",
- ],
- dist_stem: "art-coreplatform-stable",
-}
-
-// Used when compiling higher-level code against *.core.platform.api.stubs.
-java_system_modules {
- name: "legacy-art-module-platform-api-stubs-system-modules",
- visibility: [
- "//art/build/sdk",
- "//external/conscrypt",
- "//external/icu/android_icu4j",
- "//external/wycheproof",
- ],
- libs: [
- "legacy.art.module.platform.api.stubs",
- ],
-}
-
-java_system_modules {
- name: "stable-art-module-platform-api-stubs-system-modules",
- visibility: [
- "//art/build/sdk",
- "//external/conscrypt",
- "//external/icu/android_icu4j",
- "//external/wycheproof",
- ],
- libs: [
- "stable.art.module.platform.api.stubs",
- ],
-}
-
// Ideally this should be a restricted allowlist but there are hundreds of modules that depend on
// this.
// TODO(http://b/134561230) - limit the number of dependents on this.
@@ -188,7 +61,7 @@
sdk_version: "none",
system_modules: "none",
static_libs: [
- "legacy.art.module.platform.api.stubs",
+ "art.module.public.api.stubs.module_lib",
"conscrypt.module.platform.api.stubs",
"legacy.i18n.module.platform.api.stubs",
],
@@ -204,7 +77,7 @@
sdk_version: "none",
system_modules: "none",
static_libs: [
- "stable.art.module.platform.api.stubs",
+ "art.module.public.api.stubs.module_lib",
// conscrypt only has a stable version, so it is okay to depend on it here:
"conscrypt.module.platform.api.stubs",
"stable.i18n.module.platform.api.stubs",
diff --git a/mmodules/core_platform_api/api/legacy_platform/current.txt b/mmodules/core_platform_api/api/legacy_platform/current.txt
index 28a8915..15741a7 100644
--- a/mmodules/core_platform_api/api/legacy_platform/current.txt
+++ b/mmodules/core_platform_api/api/legacy_platform/current.txt
@@ -116,38 +116,27 @@
package com.android.okhttp.internalandroidapi {
public final class AndroidResponseCacheAdapter {
- ctor public AndroidResponseCacheAdapter(com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder);
+ ctor public AndroidResponseCacheAdapter(@NonNull com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder);
method public void close() throws java.io.IOException;
method public void delete() throws java.io.IOException;
method public void flush() throws java.io.IOException;
- method public java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
- method public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ method @Nullable public java.net.CacheResponse get(@NonNull java.net.URI, @NonNull String, @Nullable java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
method public int getHitCount();
method public long getMaxSize();
method public int getNetworkCount();
method public int getRequestCount();
method public long getSize() throws java.io.IOException;
- method public java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
- }
-
- public interface Dns {
- method public java.util.List<java.net.InetAddress> lookup(String) throws java.net.UnknownHostException;
+ method @Nullable public java.net.CacheRequest put(@NonNull java.net.URI, @NonNull java.net.URLConnection) throws java.io.IOException;
}
public interface HasCacheHolder {
- method public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
}
public static final class HasCacheHolder.CacheHolder {
- method public static com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder create(java.io.File, long);
- method public boolean isEquivalent(java.io.File, long);
- }
-
- public final class HttpURLConnectionFactory {
- ctor public HttpURLConnectionFactory();
- method public java.net.URLConnection openConnection(java.net.URL, javax.net.SocketFactory, java.net.Proxy) throws java.io.IOException;
- method public void setDns(com.android.okhttp.internalandroidapi.Dns);
- method public void setNewConnectionPool(int, long, java.util.concurrent.TimeUnit);
+ method @NonNull public static com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder create(@NonNull java.io.File, long);
+ method public boolean isEquivalent(@NonNull java.io.File, long);
}
}
@@ -371,7 +360,7 @@
}
public final class VMStack {
- method @dalvik.annotation.optimization.FastNative public static dalvik.system.AnnotatedStackTraceElement[] getAnnotatedThreadStackTrace(Thread);
+ method @Nullable @dalvik.annotation.optimization.FastNative public static dalvik.system.AnnotatedStackTraceElement[] getAnnotatedThreadStackTrace(Thread);
}
public final class ZygoteHooks {
@@ -404,10 +393,6 @@
package java.lang {
- public final class Math {
- method public static long randomLongInternal();
- }
-
public class Thread implements java.lang.Runnable {
method public static java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionPreHandler();
method public static void setUncaughtExceptionPreHandler(java.lang.Thread.UncaughtExceptionHandler);
@@ -574,14 +559,10 @@
}
public final class IoBridge {
- method public static void closeAndSignalBlockedThreads(java.io.FileDescriptor) throws java.io.IOException;
- method public static java.net.InetSocketAddress getLocalInetSocketAddress(java.io.FileDescriptor) throws java.net.SocketException;
- method public static java.io.FileDescriptor open(String, int) throws java.io.FileNotFoundException;
- method public static int read(java.io.FileDescriptor, byte[], int, int) throws java.io.IOException;
- method public static int recvfrom(boolean, java.io.FileDescriptor, byte[], int, int, int, java.net.DatagramPacket, boolean) throws java.io.IOException;
- method public static int sendto(java.io.FileDescriptor, byte[], int, int, int, java.net.InetAddress, int) throws java.io.IOException;
- method public static java.io.FileDescriptor socket(int, int, int) throws java.net.SocketException;
- method public static void write(java.io.FileDescriptor, byte[], int, int) throws java.io.IOException;
+ method public static void closeAndSignalBlockedThreads(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+ method @NonNull public static java.io.FileDescriptor open(@NonNull String, int) throws java.io.FileNotFoundException;
+ method public static int read(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
+ method public static void write(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
}
public final class IoUtils {
@@ -590,7 +571,6 @@
method public static void closeQuietly(@Nullable AutoCloseable);
method public static void closeQuietly(@Nullable java.io.FileDescriptor);
method public static void closeQuietly(@Nullable java.net.Socket);
- method @Deprecated public static void deleteContents(java.io.File) throws java.io.IOException;
method @NonNull public static byte[] readFileAsByteArray(@NonNull String) throws java.io.IOException;
method @NonNull public static String readFileAsString(@NonNull String) throws java.io.IOException;
method public static void setBlocking(@NonNull java.io.FileDescriptor, boolean) throws java.io.IOException;
@@ -653,7 +633,8 @@
package libcore.net.http {
- public interface Dns extends com.android.okhttp.internalandroidapi.Dns {
+ public interface Dns {
+ method @NonNull public java.util.List<java.net.InetAddress> lookup(@Nullable String) throws java.net.UnknownHostException;
}
public class HttpURLConnectionFactory {
@@ -668,13 +649,13 @@
package libcore.util {
public final class EmptyArray {
- field public static final boolean[] BOOLEAN;
- field public static final byte[] BYTE;
- field public static final float[] FLOAT;
- field public static final int[] INT;
- field public static final long[] LONG;
- field public static final Object[] OBJECT;
- field public static final String[] STRING;
+ field @NonNull public static final boolean[] BOOLEAN;
+ field @NonNull public static final byte[] BYTE;
+ field @NonNull public static final float[] FLOAT;
+ field @NonNull public static final int[] INT;
+ field @NonNull public static final long[] LONG;
+ field @NonNull public static final Object[] OBJECT;
+ field @NonNull public static final String[] STRING;
}
public final class FP16 {
diff --git a/mmodules/core_platform_api/api/stable_platform/current.txt b/mmodules/core_platform_api/api/stable_platform/current.txt
index c7ee205..15741a7 100644
--- a/mmodules/core_platform_api/api/stable_platform/current.txt
+++ b/mmodules/core_platform_api/api/stable_platform/current.txt
@@ -113,6 +113,57 @@
}
+package com.android.okhttp.internalandroidapi {
+
+ public final class AndroidResponseCacheAdapter {
+ ctor public AndroidResponseCacheAdapter(@NonNull com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder);
+ method public void close() throws java.io.IOException;
+ method public void delete() throws java.io.IOException;
+ method public void flush() throws java.io.IOException;
+ method @Nullable public java.net.CacheResponse get(@NonNull java.net.URI, @NonNull String, @Nullable java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ method public int getHitCount();
+ method public long getMaxSize();
+ method public int getNetworkCount();
+ method public int getRequestCount();
+ method public long getSize() throws java.io.IOException;
+ method @Nullable public java.net.CacheRequest put(@NonNull java.net.URI, @NonNull java.net.URLConnection) throws java.io.IOException;
+ }
+
+ public interface HasCacheHolder {
+ method @NonNull public com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder getCacheHolder();
+ }
+
+ public static final class HasCacheHolder.CacheHolder {
+ method @NonNull public static com.android.okhttp.internalandroidapi.HasCacheHolder.CacheHolder create(@NonNull java.io.File, long);
+ method public boolean isEquivalent(@NonNull java.io.File, long);
+ }
+
+}
+
+package dalvik.annotation.codegen {
+
+ @java.lang.annotation.Repeatable(CovariantReturnType.CovariantReturnTypes.class) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface CovariantReturnType {
+ method public abstract int presentAfter();
+ method public abstract Class<?> returnType();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public static @interface CovariantReturnType.CovariantReturnTypes {
+ method public abstract dalvik.annotation.codegen.CovariantReturnType[] value();
+ }
+
+}
+
+package dalvik.annotation.optimization {
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface CriticalNative {
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface FastNative {
+ }
+
+}
+
package dalvik.system {
public final class AnnotatedStackTraceElement {
@@ -173,6 +224,10 @@
method public default void report(String);
}
+ public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
+ ctor public DelegateLastClassLoader(String, String, ClassLoader, ClassLoader[]);
+ }
+
@Deprecated public final class DexFile {
method @Deprecated @NonNull public static dalvik.system.DexFile.OptimizationInfo getDexFileOptimizationInfo(@NonNull String, @NonNull String) throws java.io.FileNotFoundException;
method @Deprecated @Nullable public static String[] getDexFileOutputPaths(@NonNull String, @NonNull String) throws java.io.FileNotFoundException;
@@ -219,15 +274,15 @@
method public static void dumpHprofDataDdms();
method public static void dumpReferenceTables();
method public static int getAllocCount(int);
- method public static int getLoadedClassCount();
+ method @dalvik.annotation.optimization.FastNative public static int getLoadedClassCount();
method public static int getMethodTracingMode();
method public static String getRuntimeStat(String);
method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
method public static String[] getVmFeatureList();
- method public static boolean isDebuggerConnected();
- method public static boolean isDebuggingEnabled();
- method public static long lastDebuggerActivity();
- method public static void printLoadedClasses(int);
+ method @dalvik.annotation.optimization.FastNative public static boolean isDebuggerConnected();
+ method @dalvik.annotation.optimization.FastNative public static boolean isDebuggingEnabled();
+ method @dalvik.annotation.optimization.FastNative public static long lastDebuggerActivity();
+ method @dalvik.annotation.optimization.FastNative public static void printLoadedClasses(int);
method public static void resetAllocCount(int);
method public static void setAllocTrackerStackDepth(int);
method public static void startAllocCounting();
@@ -236,7 +291,7 @@
method public static void startMethodTracingDdms(int, int, boolean, int);
method public static void stopAllocCounting();
method public static void stopMethodTracing();
- method public static long threadCpuTimeNanos();
+ method @dalvik.annotation.optimization.FastNative public static long threadCpuTimeNanos();
field public static final int KIND_ALL_COUNTS = -1; // 0xffffffff
field public static final int KIND_GLOBAL_ALLOCATED_BYTES = 2; // 0x2
field public static final int KIND_GLOBAL_ALLOCATED_OBJECTS = 1; // 0x1
@@ -252,7 +307,7 @@
}
public final class VMRuntime {
- method public long addressOf(Object);
+ method @dalvik.annotation.optimization.FastNative public long addressOf(Object);
method public static void bootCompleted();
method public void clampGrowthLimit();
method public void clearGrowthLimit();
@@ -260,14 +315,14 @@
method public static String getInstructionSet(String);
method public static dalvik.system.VMRuntime getRuntime();
method public int getTargetSdkVersion();
- method public boolean is64Bit();
+ method @dalvik.annotation.optimization.FastNative public boolean is64Bit();
method public static boolean is64BitAbi(String);
method public static boolean is64BitInstructionSet(String);
- method public boolean isCheckJniEnabled();
- method public boolean isNativeDebuggable();
+ method @dalvik.annotation.optimization.FastNative public boolean isCheckJniEnabled();
+ method @dalvik.annotation.optimization.FastNative public boolean isNativeDebuggable();
method public static boolean isValidClassLoaderContext(String);
- method public Object newNonMovableArray(Class<?>, int);
- method public Object newUnpaddedArray(Class<?>, int);
+ method @dalvik.annotation.optimization.FastNative public Object newNonMovableArray(Class<?>, int);
+ method @dalvik.annotation.optimization.FastNative public Object newUnpaddedArray(Class<?>, int);
method public void notifyStartupCompleted();
method public void preloadDexCaches();
method public static void registerAppInfo(String, String, String, String[], int);
@@ -304,6 +359,10 @@
field public static final int ACCESS_METHOD_REFLECTION = 1; // 0x1
}
+ public final class VMStack {
+ method @Nullable @dalvik.annotation.optimization.FastNative public static dalvik.system.AnnotatedStackTraceElement[] getAnnotatedThreadStackTrace(Thread);
+ }
+
public final class ZygoteHooks {
method public static void gcAndFinalize();
method public static boolean isIndefiniteThreadSuspensionSafe();
@@ -366,6 +425,14 @@
method @Deprecated public static java.net.InetAddress parseNumericAddress(String);
}
+ public class InetSocketAddress extends java.net.SocketAddress {
+ ctor public InetSocketAddress();
+ }
+
+ public class ServerSocket implements java.io.Closeable {
+ method public java.net.SocketImpl getImpl() throws java.net.SocketException;
+ }
+
public class Socket implements java.io.Closeable {
method public java.io.FileDescriptor getFileDescriptor$();
}
@@ -437,6 +504,18 @@
}
+package javax.crypto {
+
+ public class Cipher {
+ method public javax.crypto.CipherSpi getCurrentSpi();
+ }
+
+ public class Mac implements java.lang.Cloneable {
+ method public javax.crypto.MacSpi getCurrentSpi();
+ }
+
+}
+
package javax.net.ssl {
public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
@@ -479,6 +558,13 @@
method public void unlink(@Nullable String) throws android.system.ErrnoException;
}
+ public final class IoBridge {
+ method public static void closeAndSignalBlockedThreads(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+ method @NonNull public static java.io.FileDescriptor open(@NonNull String, int) throws java.io.FileNotFoundException;
+ method public static int read(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
+ method public static void write(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int) throws java.io.IOException;
+ }
+
public final class IoUtils {
method public static int acquireRawFd(@NonNull java.io.FileDescriptor);
method public static void close(@Nullable java.io.FileDescriptor) throws java.io.IOException;
@@ -562,6 +648,16 @@
package libcore.util {
+ public final class EmptyArray {
+ field @NonNull public static final boolean[] BOOLEAN;
+ field @NonNull public static final byte[] BYTE;
+ field @NonNull public static final float[] FLOAT;
+ field @NonNull public static final int[] INT;
+ field @NonNull public static final long[] LONG;
+ field @NonNull public static final Object[] OBJECT;
+ field @NonNull public static final String[] STRING;
+ }
+
public final class FP16 {
method public static short ceil(short);
method public static int compare(short, short);
@@ -689,33 +785,33 @@
public final class Unsafe {
method public int arrayBaseOffset(Class);
method public int arrayIndexScale(Class);
- method public void copyMemory(long, long, long);
- method public boolean getBoolean(Object, long);
- method public byte getByte(Object, long);
- method public byte getByte(long);
- method public double getDouble(Object, long);
- method public double getDouble(long);
- method public float getFloat(Object, long);
- method public float getFloat(long);
- method public int getInt(Object, long);
- method public int getInt(long);
- method public long getLong(Object, long);
- method public long getLong(long);
- method public Object getObject(Object, long);
+ method @dalvik.annotation.optimization.FastNative public void copyMemory(long, long, long);
+ method @dalvik.annotation.optimization.FastNative public boolean getBoolean(Object, long);
+ method @dalvik.annotation.optimization.FastNative public byte getByte(Object, long);
+ method @dalvik.annotation.optimization.FastNative public byte getByte(long);
+ method @dalvik.annotation.optimization.FastNative public double getDouble(Object, long);
+ method @dalvik.annotation.optimization.FastNative public double getDouble(long);
+ method @dalvik.annotation.optimization.FastNative public float getFloat(Object, long);
+ method @dalvik.annotation.optimization.FastNative public float getFloat(long);
+ method @dalvik.annotation.optimization.FastNative public int getInt(Object, long);
+ method @dalvik.annotation.optimization.FastNative public int getInt(long);
+ method @dalvik.annotation.optimization.FastNative public long getLong(Object, long);
+ method @dalvik.annotation.optimization.FastNative public long getLong(long);
+ method @dalvik.annotation.optimization.FastNative public Object getObject(Object, long);
method public static sun.misc.Unsafe getUnsafe();
method public long objectFieldOffset(java.lang.reflect.Field);
- method public void putBoolean(Object, long, boolean);
- method public void putByte(Object, long, byte);
- method public void putByte(long, byte);
- method public void putDouble(Object, long, double);
- method public void putDouble(long, double);
- method public void putFloat(Object, long, float);
- method public void putFloat(long, float);
- method public void putInt(Object, long, int);
- method public void putInt(long, int);
- method public void putLong(Object, long, long);
- method public void putLong(long, long);
- method public void putObject(Object, long, Object);
+ method @dalvik.annotation.optimization.FastNative public void putBoolean(Object, long, boolean);
+ method @dalvik.annotation.optimization.FastNative public void putByte(Object, long, byte);
+ method @dalvik.annotation.optimization.FastNative public void putByte(long, byte);
+ method @dalvik.annotation.optimization.FastNative public void putDouble(Object, long, double);
+ method @dalvik.annotation.optimization.FastNative public void putDouble(long, double);
+ method @dalvik.annotation.optimization.FastNative public void putFloat(Object, long, float);
+ method @dalvik.annotation.optimization.FastNative public void putFloat(long, float);
+ method @dalvik.annotation.optimization.FastNative public void putInt(Object, long, int);
+ method @dalvik.annotation.optimization.FastNative public void putInt(long, int);
+ method @dalvik.annotation.optimization.FastNative public void putLong(Object, long, long);
+ method @dalvik.annotation.optimization.FastNative public void putLong(long, long);
+ method @dalvik.annotation.optimization.FastNative public void putObject(Object, long, Object);
}
}
diff --git a/mmodules/intracoreapi/api/intra/current.txt b/mmodules/intracoreapi/api/intra/current.txt
index 3b9b746..7e813f9 100644
--- a/mmodules/intracoreapi/api/intra/current.txt
+++ b/mmodules/intracoreapi/api/intra/current.txt
@@ -7,14 +7,14 @@
}
@libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public static final class Compatibility.ChangeConfig {
- ctor public Compatibility.ChangeConfig(@NonNull java.util.Set<java.lang.Long>, @NonNull java.util.Set<java.lang.Long>);
- method @NonNull public long[] getDisabledChangesArray();
- method @NonNull public java.util.Set<java.lang.Long> getDisabledSet();
- method @NonNull public long[] getEnabledChangesArray();
- method @NonNull public java.util.Set<java.lang.Long> getEnabledSet();
- method public boolean isEmpty();
- method public boolean isForceDisabled(long);
- method public boolean isForceEnabled(long);
+ ctor @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public Compatibility.ChangeConfig(@NonNull java.util.Set<java.lang.Long>, @NonNull java.util.Set<java.lang.Long>);
+ method @NonNull @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public long[] getDisabledChangesArray();
+ method @NonNull @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public java.util.Set<java.lang.Long> getDisabledSet();
+ method @NonNull @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public long[] getEnabledChangesArray();
+ method @NonNull @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public java.util.Set<java.lang.Long> getEnabledSet();
+ method @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public boolean isEmpty();
+ method @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public boolean isForceDisabled(long);
+ method @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public boolean isForceEnabled(long);
}
}
@@ -35,14 +35,14 @@
field @libcore.api.IntraCoreApi public static final int P = 28; // 0x1c
field @libcore.api.IntraCoreApi public static final int Q = 29; // 0x1d
field @libcore.api.IntraCoreApi public static final int R = 30; // 0x1e
- field @libcore.api.IntraCoreApi public static final int S = 10000; // 0x2710
+ field @libcore.api.IntraCoreApi public static final int S = 31; // 0x1f
}
}
package dalvik.annotation.optimization {
- @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public @interface FastNative {
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) @libcore.api.CorePlatformApi(status=libcore.api.CorePlatformApi.Status.STABLE) @libcore.api.IntraCoreApi public @interface FastNative {
}
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) @libcore.api.IntraCoreApi public @interface ReachabilitySensitive {
diff --git a/ojluni/annotations/README b/ojluni/annotations/README
index e88e233..15d9738 100644
--- a/ojluni/annotations/README
+++ b/ojluni/annotations/README
@@ -31,8 +31,8 @@
check in this change, it will have undesirable consequences until you
reach step 4, below.
2. make openjdk-mmodule-stubs-no-javadoc
- 3. FILES="your/package/and/Class.java another/package/AnotherClass.java"; for FILE in $FILES; do mkdir -p libcore/ojluni/annotations/mmodule/$(dirname ${FILE}) && cp out/soong/.intermediates/libcore/openjdk-mmodule-stubs-no-javadoc/android_common/stubsDir/${FILE} libcore/ojluni/annotations/mmodule/${FILE/%.java/.annotated.java}; done
- 4. Add @libcore.api.Hide to each top-level class in the new files. This will prevent it from being added to the public API. A JavaDoc @hide tag will not work as metalava will ignore javadoc from the stub files.
+ 3. FILES="your/package/and/Class.java another/package/AnotherClass.java"; for FILE in $FILES; do mkdir -p libcore/ojluni/annotations/mmodule/$(dirname ${FILE}) && unzip out/soong/.intermediates/libcore/openjdk-mmodule-stubs-no-javadoc/android_common/metalava/openjdk-mmodule-stubs-no-javadoc-stubs.srcjar ${FILE} && mv ${FILE} libcore/ojluni/annotations/mmodule/${FILE/%.java/.annotated.java}; done
+ 4. Add @libcore.api.Hide to each class, methods and fields in the new files. This will prevent it from being added to the public API. A JavaDoc @hide tag will not work as metalava will ignore javadoc from the stub files.
5. Add @libcore.api.CorePlatformApi and @libcore.api.IntraCoreApi as desired
to the classes and members.
- To see the effect of the files under this directory:
diff --git a/ojluni/annotations/mmodule/java/io/FileDescriptor.annotated.java b/ojluni/annotations/mmodule/java/io/FileDescriptor.annotated.java
index 915d410..cc16cd6 100644
--- a/ojluni/annotations/mmodule/java/io/FileDescriptor.annotated.java
+++ b/ojluni/annotations/mmodule/java/io/FileDescriptor.annotated.java
@@ -36,9 +36,11 @@
public native void sync() throws java.io.SyncFailedException;
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public int getInt$() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void setInt$(int fd) { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/io/FileInputStream.annotated.java b/ojluni/annotations/mmodule/java/io/FileInputStream.annotated.java
index 8978137..ac26aeb 100644
--- a/ojluni/annotations/mmodule/java/io/FileInputStream.annotated.java
+++ b/ojluni/annotations/mmodule/java/io/FileInputStream.annotated.java
@@ -38,6 +38,7 @@
public FileInputStream(java.io.FileDescriptor fdObj) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public FileInputStream(java.io.FileDescriptor fdObj, boolean isFdOwner) { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/lang/Math.annotated.java b/ojluni/annotations/mmodule/java/lang/Math.annotated.java
deleted file mode 100644
index 46fae4e..0000000
--- a/ojluni/annotations/mmodule/java/lang/Math.annotated.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * Copyright (c) 1994, 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 java.lang;
-
-import java.util.Random;
-
-@SuppressWarnings({"unchecked", "deprecation", "all"})
-public final class Math {
-
-Math() { throw new RuntimeException("Stub!"); }
-
-public static native double sin(double a);
-
-public static native double cos(double a);
-
-public static native double tan(double a);
-
-public static native double asin(double a);
-
-public static native double acos(double a);
-
-public static native double atan(double a);
-
-public static double toRadians(double angdeg) { throw new RuntimeException("Stub!"); }
-
-public static double toDegrees(double angrad) { throw new RuntimeException("Stub!"); }
-
-public static native double exp(double a);
-
-public static native double log(double a);
-
-public static native double log10(double a);
-
-public static native double sqrt(double a);
-
-public static native double cbrt(double a);
-
-public static native double IEEEremainder(double f1, double f2);
-
-public static native double ceil(double a);
-
-public static native double floor(double a);
-
-public static native double rint(double a);
-
-public static native double atan2(double y, double x);
-
-public static native double pow(double a, double b);
-
-public static int round(float a) { throw new RuntimeException("Stub!"); }
-
-public static long round(double a) { throw new RuntimeException("Stub!"); }
-
-public static double random() { throw new RuntimeException("Stub!"); }
-
-@libcore.api.CorePlatformApi
-public static long randomLongInternal() { throw new RuntimeException("Stub!"); }
-
-public static int addExact(int x, int y) { throw new RuntimeException("Stub!"); }
-
-public static long addExact(long x, long y) { throw new RuntimeException("Stub!"); }
-
-public static int subtractExact(int x, int y) { throw new RuntimeException("Stub!"); }
-
-public static long subtractExact(long x, long y) { throw new RuntimeException("Stub!"); }
-
-public static int multiplyExact(int x, int y) { throw new RuntimeException("Stub!"); }
-
-public static long multiplyExact(long x, long y) { throw new RuntimeException("Stub!"); }
-
-public static int incrementExact(int a) { throw new RuntimeException("Stub!"); }
-
-public static long incrementExact(long a) { throw new RuntimeException("Stub!"); }
-
-public static int decrementExact(int a) { throw new RuntimeException("Stub!"); }
-
-public static long decrementExact(long a) { throw new RuntimeException("Stub!"); }
-
-public static int negateExact(int a) { throw new RuntimeException("Stub!"); }
-
-public static long negateExact(long a) { throw new RuntimeException("Stub!"); }
-
-public static int toIntExact(long value) { throw new RuntimeException("Stub!"); }
-
-public static int floorDiv(int x, int y) { throw new RuntimeException("Stub!"); }
-
-public static long floorDiv(long x, long y) { throw new RuntimeException("Stub!"); }
-
-public static int floorMod(int x, int y) { throw new RuntimeException("Stub!"); }
-
-public static long floorMod(long x, long y) { throw new RuntimeException("Stub!"); }
-
-public static int abs(int a) { throw new RuntimeException("Stub!"); }
-
-public static long abs(long a) { throw new RuntimeException("Stub!"); }
-
-public static float abs(float a) { throw new RuntimeException("Stub!"); }
-
-public static double abs(double a) { throw new RuntimeException("Stub!"); }
-
-public static int max(int a, int b) { throw new RuntimeException("Stub!"); }
-
-public static long max(long a, long b) { throw new RuntimeException("Stub!"); }
-
-public static float max(float a, float b) { throw new RuntimeException("Stub!"); }
-
-public static double max(double a, double b) { throw new RuntimeException("Stub!"); }
-
-public static int min(int a, int b) { throw new RuntimeException("Stub!"); }
-
-public static long min(long a, long b) { throw new RuntimeException("Stub!"); }
-
-public static float min(float a, float b) { throw new RuntimeException("Stub!"); }
-
-public static double min(double a, double b) { throw new RuntimeException("Stub!"); }
-
-public static double ulp(double d) { throw new RuntimeException("Stub!"); }
-
-public static float ulp(float f) { throw new RuntimeException("Stub!"); }
-
-public static double signum(double d) { throw new RuntimeException("Stub!"); }
-
-public static float signum(float f) { throw new RuntimeException("Stub!"); }
-
-public static native double sinh(double x);
-
-public static native double cosh(double x);
-
-public static native double tanh(double x);
-
-public static native double hypot(double x, double y);
-
-public static native double expm1(double x);
-
-public static native double log1p(double x);
-
-public static double copySign(double magnitude, double sign) { throw new RuntimeException("Stub!"); }
-
-public static float copySign(float magnitude, float sign) { throw new RuntimeException("Stub!"); }
-
-public static int getExponent(float f) { throw new RuntimeException("Stub!"); }
-
-public static int getExponent(double d) { throw new RuntimeException("Stub!"); }
-
-public static double nextAfter(double start, double direction) { throw new RuntimeException("Stub!"); }
-
-public static float nextAfter(float start, double direction) { throw new RuntimeException("Stub!"); }
-
-public static double nextUp(double d) { throw new RuntimeException("Stub!"); }
-
-public static float nextUp(float f) { throw new RuntimeException("Stub!"); }
-
-public static double nextDown(double d) { throw new RuntimeException("Stub!"); }
-
-public static float nextDown(float f) { throw new RuntimeException("Stub!"); }
-
-public static double scalb(double d, int scaleFactor) { throw new RuntimeException("Stub!"); }
-
-public static float scalb(float f, int scaleFactor) { throw new RuntimeException("Stub!"); }
-
-public static final double E = 2.718281828459045;
-
-public static final double PI = 3.141592653589793;
-}
-
diff --git a/ojluni/annotations/mmodule/java/lang/Thread.annotated.java b/ojluni/annotations/mmodule/java/lang/Thread.annotated.java
index 7682796..8308a99 100644
--- a/ojluni/annotations/mmodule/java/lang/Thread.annotated.java
+++ b/ojluni/annotations/mmodule/java/lang/Thread.annotated.java
@@ -141,9 +141,11 @@
public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void setUncaughtExceptionPreHandler(UncaughtExceptionHandler eh) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static UncaughtExceptionHandler getUncaughtExceptionPreHandler() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/net/DatagramSocket.annotated.java b/ojluni/annotations/mmodule/java/net/DatagramSocket.annotated.java
index 8f7ddf7..52b5bff 100644
--- a/ojluni/annotations/mmodule/java/net/DatagramSocket.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/DatagramSocket.annotated.java
@@ -103,6 +103,7 @@
public static synchronized void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory fac) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public java.io.FileDescriptor getFileDescriptor$() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/java/net/Inet4Address.annotated.java b/ojluni/annotations/mmodule/java/net/Inet4Address.annotated.java
index b3f6c4c..4692b1f 100644
--- a/ojluni/annotations/mmodule/java/net/Inet4Address.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/Inet4Address.annotated.java
@@ -62,14 +62,17 @@
public boolean equals(java.lang.Object obj) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final java.net.InetAddress ALL;
static { ALL = null; }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final java.net.InetAddress ANY;
static { ANY = null; }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final java.net.InetAddress LOOPBACK;
static { LOOPBACK = null; }
diff --git a/ojluni/annotations/mmodule/java/net/Inet6Address.annotated.java b/ojluni/annotations/mmodule/java/net/Inet6Address.annotated.java
index 2a465e5..567d877 100644
--- a/ojluni/annotations/mmodule/java/net/Inet6Address.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/Inet6Address.annotated.java
@@ -71,10 +71,12 @@
public boolean isIPv4CompatibleAddress() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final java.net.InetAddress ANY;
static { ANY = null; }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final java.net.InetAddress LOOPBACK;
static { LOOPBACK = null; }
diff --git a/ojluni/annotations/mmodule/java/net/InetAddress.annotated.java b/ojluni/annotations/mmodule/java/net/InetAddress.annotated.java
index 3ec88f4..6229cc9 100644
--- a/ojluni/annotations/mmodule/java/net/InetAddress.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/InetAddress.annotated.java
@@ -87,18 +87,23 @@
public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static boolean isNumeric(java.lang.String address) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static java.net.InetAddress parseNumericAddress(java.lang.String numericAddress) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static void clearDnsCache() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static java.net.InetAddress getByNameOnNet(java.lang.String host, int netId) throws java.net.UnknownHostException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static java.net.InetAddress[] getAllByNameOnNet(java.lang.String host, int netId) throws java.net.UnknownHostException { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/java/net/InetSocketAddress.annotated.java b/ojluni/annotations/mmodule/java/net/InetSocketAddress.annotated.java
index 554b8e3..b2bf439 100644
--- a/ojluni/annotations/mmodule/java/net/InetSocketAddress.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/InetSocketAddress.annotated.java
@@ -30,7 +30,8 @@
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class InetSocketAddress extends java.net.SocketAddress {
-@libcore.api.CorePlatformApi
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public InetSocketAddress() { throw new RuntimeException("Stub!"); }
public InetSocketAddress(int port) { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/net/ServerSocket.annotated.java b/ojluni/annotations/mmodule/java/net/ServerSocket.annotated.java
index 1fcd05f..0bf1fe7 100644
--- a/ojluni/annotations/mmodule/java/net/ServerSocket.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/ServerSocket.annotated.java
@@ -52,7 +52,8 @@
public java.net.Socket accept() throws java.io.IOException { throw new RuntimeException("Stub!"); }
-@libcore.api.CorePlatformApi
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public SocketImpl getImpl() throws SocketException { throw new RuntimeException("Stub!"); }
protected final void implAccept(java.net.Socket s) throws java.io.IOException { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/net/Socket.annotated.java b/ojluni/annotations/mmodule/java/net/Socket.annotated.java
index 2123660..61014de 100644
--- a/ojluni/annotations/mmodule/java/net/Socket.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/Socket.annotated.java
@@ -139,6 +139,7 @@
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
public java.io.FileDescriptor getFileDescriptor$() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/net/SocketImpl.annotated.java b/ojluni/annotations/mmodule/java/net/SocketImpl.annotated.java
index 46c201f..a29ed76 100644
--- a/ojluni/annotations/mmodule/java/net/SocketImpl.annotated.java
+++ b/ojluni/annotations/mmodule/java/net/SocketImpl.annotated.java
@@ -62,6 +62,7 @@
protected java.io.FileDescriptor getFileDescriptor() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public java.io.FileDescriptor getFD$() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/nio/ByteBuffer.annotated.java b/ojluni/annotations/mmodule/java/nio/ByteBuffer.annotated.java
index c2d01c5..369d0a5 100644
--- a/ojluni/annotations/mmodule/java/nio/ByteBuffer.annotated.java
+++ b/ojluni/annotations/mmodule/java/nio/ByteBuffer.annotated.java
@@ -151,6 +151,7 @@
public boolean isAccessible() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void setAccessible(boolean value) { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/java/nio/DirectByteBuffer.annotated.java b/ojluni/annotations/mmodule/java/nio/DirectByteBuffer.annotated.java
index 6612539..8031e93 100644
--- a/ojluni/annotations/mmodule/java/nio/DirectByteBuffer.annotated.java
+++ b/ojluni/annotations/mmodule/java/nio/DirectByteBuffer.annotated.java
@@ -28,108 +28,162 @@
package java.nio;
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class DirectByteBuffer extends java.nio.MappedByteBuffer implements sun.nio.ch.DirectBuffer {
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public DirectByteBuffer(int cap, long addr, java.io.FileDescriptor fd, java.lang.Runnable unmapper, boolean isReadOnly) { super(0, 0, 0, 0); throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.lang.Object attachment() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final sun.misc.Cleaner cleaner() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer slice() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer duplicate() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer asReadOnlyBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final long address() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final byte get() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final byte get(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.nio.ByteBuffer get(byte[] dst, int dstOffset, int length) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.nio.ByteBuffer put(java.nio.ByteBuffer src) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer put(byte x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer put(int i, byte x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.nio.ByteBuffer put(byte[] src, int srcOffset, int length) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer compact() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final boolean isDirect() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final boolean isReadOnly() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final char getChar() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final char getChar(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putChar(char x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putChar(int i, char x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.CharBuffer asCharBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final short getShort() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final short getShort(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putShort(short x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putShort(int i, short x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ShortBuffer asShortBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public int getInt() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public int getInt(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putInt(int x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putInt(int i, int x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.IntBuffer asIntBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final long getLong() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final long getLong(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putLong(long x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putLong(int i, long x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.LongBuffer asLongBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final float getFloat() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final float getFloat(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putFloat(float x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putFloat(int i, float x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.FloatBuffer asFloatBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final double getDouble() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final double getDouble(int i) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putDouble(double x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.ByteBuffer putDouble(int i, double x) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final java.nio.DoubleBuffer asDoubleBuffer() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public final boolean isAccessible() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public final void setAccessible(boolean value) { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/java/security/Provider.annotated.java b/ojluni/annotations/mmodule/java/security/Provider.annotated.java
index 1d6652a..3ffe654 100644
--- a/ojluni/annotations/mmodule/java/security/Provider.annotated.java
+++ b/ojluni/annotations/mmodule/java/security/Provider.annotated.java
@@ -106,6 +106,7 @@
public boolean isRegistered() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public synchronized void warmUpServiceProvision() { throw new RuntimeException("Stub!"); }
@SuppressWarnings({"unchecked", "deprecation", "all"})
diff --git a/ojluni/annotations/mmodule/java/security/Signature.annotated.java b/ojluni/annotations/mmodule/java/security/Signature.annotated.java
index 4ac3abd..8aaf5c4 100644
--- a/ojluni/annotations/mmodule/java/security/Signature.annotated.java
+++ b/ojluni/annotations/mmodule/java/security/Signature.annotated.java
@@ -86,6 +86,7 @@
public java.lang.Object clone() throws java.lang.CloneNotSupportedException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public java.security.SignatureSpi getCurrentSpi() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/text/DateFormat.annotated.java b/ojluni/annotations/mmodule/java/text/DateFormat.annotated.java
index 6456c83..12a850e 100644
--- a/ojluni/annotations/mmodule/java/text/DateFormat.annotated.java
+++ b/ojluni/annotations/mmodule/java/text/DateFormat.annotated.java
@@ -83,6 +83,7 @@
public static final java.text.DateFormat getInstance() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static final void set24HourTimePref(java.lang.Boolean is24Hour) { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/util/LinkedHashMap.annotated.java b/ojluni/annotations/mmodule/java/util/LinkedHashMap.annotated.java
index 0354493..ada21b1 100644
--- a/ojluni/annotations/mmodule/java/util/LinkedHashMap.annotated.java
+++ b/ojluni/annotations/mmodule/java/util/LinkedHashMap.annotated.java
@@ -48,6 +48,7 @@
public void clear() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public java.util.Map.Entry<K,V> eldest() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/java/util/zip/ZipEntry.annotated.java b/ojluni/annotations/mmodule/java/util/zip/ZipEntry.annotated.java
index 519cb13..6c840f7 100644
--- a/ojluni/annotations/mmodule/java/util/zip/ZipEntry.annotated.java
+++ b/ojluni/annotations/mmodule/java/util/zip/ZipEntry.annotated.java
@@ -38,6 +38,7 @@
public ZipEntry(java.util.zip.ZipEntry e) { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public long getDataOffset() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/javax/crypto/Cipher.annotated.java b/ojluni/annotations/mmodule/javax/crypto/Cipher.annotated.java
index bafd946..220eef6 100644
--- a/ojluni/annotations/mmodule/javax/crypto/Cipher.annotated.java
+++ b/ojluni/annotations/mmodule/javax/crypto/Cipher.annotated.java
@@ -27,6 +27,10 @@
package javax.crypto;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.util.*;
import java.util.regex.*;
import java.security.*;
@@ -116,7 +120,8 @@
public final void updateAAD(java.nio.ByteBuffer src) { throw new RuntimeException("Stub!"); }
-@libcore.api.CorePlatformApi
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
public javax.crypto.CipherSpi getCurrentSpi() { throw new RuntimeException("Stub!"); }
public static final int DECRYPT_MODE = 2; // 0x2
diff --git a/ojluni/annotations/mmodule/javax/crypto/Mac.annotated.java b/ojluni/annotations/mmodule/javax/crypto/Mac.annotated.java
index a7e1995..26bbeff 100644
--- a/ojluni/annotations/mmodule/javax/crypto/Mac.annotated.java
+++ b/ojluni/annotations/mmodule/javax/crypto/Mac.annotated.java
@@ -27,6 +27,10 @@
package javax.crypto;
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
+
import java.util.*;
import java.security.*;
import sun.security.jca.*;
@@ -72,7 +76,8 @@
public final java.lang.Object clone() throws java.lang.CloneNotSupportedException { throw new RuntimeException("Stub!"); }
-@libcore.api.CorePlatformApi
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@SystemApi(client = MODULE_LIBRARIES)
public javax.crypto.MacSpi getCurrentSpi() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/javax/net/ssl/HttpsURLConnection.annotated.java b/ojluni/annotations/mmodule/javax/net/ssl/HttpsURLConnection.annotated.java
index 8379981..5177ba3 100644
--- a/ojluni/annotations/mmodule/javax/net/ssl/HttpsURLConnection.annotated.java
+++ b/ojluni/annotations/mmodule/javax/net/ssl/HttpsURLConnection.annotated.java
@@ -43,6 +43,7 @@
public void setHostnameVerifier(javax.net.ssl.HostnameVerifier v) { throw new RuntimeException("Stub!"); }
+ @android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static javax.net.ssl.HostnameVerifier getStrictHostnameVerifier() { throw new RuntimeException("Stub!"); }
diff --git a/ojluni/annotations/mmodule/sun/misc/Cleaner.annotated.java b/ojluni/annotations/mmodule/sun/misc/Cleaner.annotated.java
index 3c2531c..06dddd4 100644
--- a/ojluni/annotations/mmodule/sun/misc/Cleaner.annotated.java
+++ b/ojluni/annotations/mmodule/sun/misc/Cleaner.annotated.java
@@ -28,16 +28,22 @@
import java.lang.ref.*;
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class Cleaner extends java.lang.ref.PhantomReference<java.lang.Object> {
+@libcore.api.Hide
Cleaner(java.lang.Object referent, java.lang.Runnable thunk) { super(null, null); throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public static sun.misc.Cleaner create(java.lang.Object ob, java.lang.Runnable thunk) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public void clean() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/sun/misc/Unsafe.annotated.java b/ojluni/annotations/mmodule/sun/misc/Unsafe.annotated.java
index 9407d1a..f6e755e 100644
--- a/ojluni/annotations/mmodule/sun/misc/Unsafe.annotated.java
+++ b/ojluni/annotations/mmodule/sun/misc/Unsafe.annotated.java
@@ -23,107 +23,278 @@
* questions.
*/
+
package sun.misc;
-// sun.misc.Unsafe is part of the Core Platform API as platform uses protobuf and protobuf uses
-// this API for fast structure updates from native code (b/144502743).
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public final class Unsafe {
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public static sun.misc.Unsafe getUnsafe() {
- throw new RuntimeException("Stub!");
- }
+private Unsafe() { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public int arrayBaseOffset(Class clazz) {
- throw new RuntimeException("Stub!");
- }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public static sun.misc.Unsafe getUnsafe() { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public int arrayIndexScale(Class clazz) {
- throw new RuntimeException("Stub!");
- }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public long objectFieldOffset(java.lang.reflect.Field field) { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void copyMemory(long srcAddr, long destAddr, long bytes);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public int arrayBaseOffset(java.lang.Class clazz) { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native boolean getBoolean(Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native byte getByte(long address);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public int arrayIndexScale(java.lang.Class clazz) { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native byte getByte(Object obj, long offset);
+@libcore.api.Hide
+public native boolean compareAndSwapInt(java.lang.Object obj, long offset, int expectedValue, int newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native double getDouble(Object obj, long offset);
+@libcore.api.Hide
+public native boolean compareAndSwapLong(java.lang.Object obj, long offset, long expectedValue, long newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native double getDouble(long address);
+@libcore.api.Hide
+public native boolean compareAndSwapObject(java.lang.Object obj, long offset, java.lang.Object expectedValue, java.lang.Object newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native float getFloat(Object obj, long offset);
+@libcore.api.Hide
+public native int getIntVolatile(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native float getFloat(long address);
+@libcore.api.Hide
+public native void putIntVolatile(java.lang.Object obj, long offset, int newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native int getInt(long address);
+@libcore.api.Hide
+public native long getLongVolatile(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native int getInt(Object obj, long offset);
+@libcore.api.Hide
+public native void putLongVolatile(java.lang.Object obj, long offset, long newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native long getLong(long address);
+@libcore.api.Hide
+public native void putObjectVolatile(java.lang.Object obj, long offset, java.lang.Object newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native long getLong(Object obj, long offset);
+@libcore.api.Hide
+public native java.lang.Object getObjectVolatile(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native Object getObject(Object obj, long offset);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native int getInt(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public long objectFieldOffset(java.lang.reflect.Field field) {
- throw new RuntimeException("Stub!");
- }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putInt(java.lang.Object obj, long offset, int newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putBoolean(Object obj, long offset, boolean newValue);
+@libcore.api.Hide
+public native void putOrderedInt(java.lang.Object obj, long offset, int newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putByte(long address, byte newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native long getLong(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putByte(Object obj, long offset, byte newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putLong(java.lang.Object obj, long offset, long newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putDouble(Object obj, long offset, double newValue);
+@libcore.api.Hide
+public native void putOrderedLong(java.lang.Object obj, long offset, long newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putDouble(long address, double newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native java.lang.Object getObject(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putFloat(Object obj, long offset, float newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putObject(java.lang.Object obj, long offset, java.lang.Object newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putFloat(long address, float newValue);
+@libcore.api.Hide
+public native void putOrderedObject(java.lang.Object obj, long offset, java.lang.Object newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putInt(long address, int newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native boolean getBoolean(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putInt(Object obj, long offset, int newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putBoolean(java.lang.Object obj, long offset, boolean newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putLong(long address, long newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native byte getByte(java.lang.Object obj, long offset);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putLong(Object obj, long offset, long newValue);
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putByte(java.lang.Object obj, long offset, byte newValue);
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public native void putObject(Object obj, long offset, Object newValue);
+@libcore.api.Hide
+public native char getChar(java.lang.Object obj, long offset);
+
+@libcore.api.Hide
+public native void putChar(java.lang.Object obj, long offset, char newValue);
+
+@libcore.api.Hide
+public native short getShort(java.lang.Object obj, long offset);
+
+@libcore.api.Hide
+public native void putShort(java.lang.Object obj, long offset, short newValue);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native float getFloat(java.lang.Object obj, long offset);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putFloat(java.lang.Object obj, long offset, float newValue);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native double getDouble(java.lang.Object obj, long offset);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putDouble(java.lang.Object obj, long offset, double newValue);
+
+@libcore.api.Hide
+public native void park(boolean absolute, long time);
+
+@libcore.api.Hide
+public native void unpark(java.lang.Object obj);
+
+@libcore.api.Hide
+public native java.lang.Object allocateInstance(java.lang.Class<?> c);
+
+@libcore.api.Hide
+public native int addressSize();
+
+@libcore.api.Hide
+public native int pageSize();
+
+@libcore.api.Hide
+public native long allocateMemory(long bytes);
+
+@libcore.api.Hide
+public native void freeMemory(long address);
+
+@libcore.api.Hide
+public native void setMemory(long address, long bytes, byte value);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native byte getByte(long address);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putByte(long address, byte x);
+
+@libcore.api.Hide
+public native short getShort(long address);
+
+@libcore.api.Hide
+public native void putShort(long address, short x);
+
+@libcore.api.Hide
+public native char getChar(long address);
+
+@libcore.api.Hide
+public native void putChar(long address, char x);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native int getInt(long address);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putInt(long address, int x);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native long getLong(long address);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putLong(long address, long x);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native float getFloat(long address);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putFloat(long address, float x);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native double getDouble(long address);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void putDouble(long address, double x);
+
+@libcore.api.Hide
+public native void copyMemoryToPrimitiveArray(long srcAddr, java.lang.Object dst, long dstOffset, long bytes);
+
+@libcore.api.Hide
+public native void copyMemoryFromPrimitiveArray(java.lang.Object src, long srcOffset, long dstAddr, long bytes);
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public native void copyMemory(long srcAddr, long dstAddr, long bytes);
+
+@libcore.api.Hide
+public int getAndAddInt(java.lang.Object o, long offset, int delta) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public long getAndAddLong(java.lang.Object o, long offset, long delta) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public int getAndSetInt(java.lang.Object o, long offset, int newValue) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public long getAndSetLong(java.lang.Object o, long offset, long newValue) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public java.lang.Object getAndSetObject(java.lang.Object o, long offset, java.lang.Object newValue) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public native void loadFence();
+
+@libcore.api.Hide
+public native void storeFence();
+
+@libcore.api.Hide
+public native void fullFence();
+
+@libcore.api.Hide
+public static final int INVALID_FIELD_OFFSET = -1; // 0xffffffff
}
+
diff --git a/ojluni/annotations/mmodule/sun/security/jca/Providers.annotated.java b/ojluni/annotations/mmodule/sun/security/jca/Providers.annotated.java
index 03bbc4e..476ebb5 100644
--- a/ojluni/annotations/mmodule/sun/security/jca/Providers.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/jca/Providers.annotated.java
@@ -31,41 +31,58 @@
import java.util.Set;
import java.security.NoSuchAlgorithmException;
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class Providers {
+@libcore.api.Hide
Providers() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static java.security.Provider getSunProvider() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public static java.lang.Object startJarVerification() { throw new RuntimeException("Stub!"); }
-
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public static void stopJarVerification(java.lang.Object obj) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static sun.security.jca.ProviderList getProviderList() { throw new RuntimeException("Stub!"); }
-public static void setProviderList(sun.security.jca.ProviderList newList) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public static void setProviderList(ProviderList newList) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static sun.security.jca.ProviderList getFullProviderList() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static sun.security.jca.ProviderList getThreadProviderList() { throw new RuntimeException("Stub!"); }
-public static synchronized sun.security.jca.ProviderList beginThreadProviderList(sun.security.jca.ProviderList list) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public static synchronized sun.security.jca.ProviderList beginThreadProviderList(ProviderList list) { throw new RuntimeException("Stub!"); }
-public static synchronized void endThreadProviderList(sun.security.jca.ProviderList list) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public static synchronized void endThreadProviderList(ProviderList list) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static void setMaximumAllowableApiLevelForBcDeprecation(int targetApiLevel) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static int getMaximumAllowableApiLevelForBcDeprecation() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static synchronized void checkBouncyCastleDeprecation(java.lang.String provider, java.lang.String service, java.lang.String algorithm) throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static synchronized void checkBouncyCastleDeprecation(java.security.Provider provider, java.lang.String service, java.lang.String algorithm) throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static final int DEFAULT_MAXIMUM_ALLOWABLE_TARGET_API_LEVEL_FOR_BC_DEPRECATION = 27; // 0x1b
}
diff --git a/ojluni/annotations/mmodule/sun/security/pkcs/PKCS7.annotated.java b/ojluni/annotations/mmodule/sun/security/pkcs/PKCS7.annotated.java
index c6bc489..3bb1a66 100644
--- a/ojluni/annotations/mmodule/sun/security/pkcs/PKCS7.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/pkcs/PKCS7.annotated.java
@@ -30,58 +30,86 @@
import java.io.*;
import java.util.*;
import java.security.*;
+import java.security.cert.X509Certificate;
import sun.security.util.*;
import sun.security.x509.AlgorithmId;
import sun.security.x509.X500Name;
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class PKCS7 {
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public PKCS7(java.io.InputStream in) throws java.io.IOException, sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
-public PKCS7(sun.security.util.DerInputStream derin) throws sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public PKCS7(DerInputStream derin) throws sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public PKCS7(byte[] bytes) throws sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public PKCS7(sun.security.x509.AlgorithmId[] digestAlgorithmIds, sun.security.pkcs.ContentInfo contentInfo, java.security.cert.X509Certificate[] certificates, java.security.cert.X509CRL[] crls, sun.security.pkcs.SignerInfo[] signerInfos) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public PKCS7(sun.security.x509.AlgorithmId[] digestAlgorithmIds, sun.security.pkcs.ContentInfo contentInfo, java.security.cert.X509Certificate[] certificates, sun.security.pkcs.SignerInfo[] signerInfos) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public void encodeSignedData(java.io.OutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
-public void encodeSignedData(sun.security.util.DerOutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public void encodeSignedData(DerOutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.SignerInfo verify(sun.security.pkcs.SignerInfo info, byte[] bytes) throws java.security.NoSuchAlgorithmException, java.security.SignatureException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public sun.security.pkcs.SignerInfo verify(sun.security.pkcs.SignerInfo info, java.io.InputStream dataInputStream) throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.SignatureException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public sun.security.pkcs.SignerInfo[] verify(byte[] bytes) throws java.security.NoSuchAlgorithmException, java.security.SignatureException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.SignerInfo[] verify() throws java.security.NoSuchAlgorithmException, java.security.SignatureException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.math.BigInteger getVersion() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.x509.AlgorithmId[] getDigestAlgorithmIds() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.ContentInfo getContentInfo() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
public java.security.cert.X509Certificate[] getCertificates() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.security.cert.X509CRL[] getCRLs() { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public sun.security.pkcs.SignerInfo[] getSignerInfos() { throw new RuntimeException("Stub!"); }
-public java.security.cert.X509Certificate getCertificate(java.math.BigInteger serial, sun.security.x509.X500Name issuerName) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public X509Certificate getCertificate(java.math.BigInteger serial, X500Name issuerName) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.lang.String toString() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public boolean isOldStyle() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/sun/security/pkcs/ParsingException.annotated.java b/ojluni/annotations/mmodule/sun/security/pkcs/ParsingException.annotated.java
index 854f394..bdc70dc 100644
--- a/ojluni/annotations/mmodule/sun/security/pkcs/ParsingException.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/pkcs/ParsingException.annotated.java
@@ -32,12 +32,15 @@
package sun.security.pkcs;
-@libcore.api.Hide
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class ParsingException extends java.io.IOException {
+@libcore.api.Hide
public ParsingException() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public ParsingException(java.lang.String s) { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/sun/security/pkcs/SignerInfo.annotated.java b/ojluni/annotations/mmodule/sun/security/pkcs/SignerInfo.annotated.java
index 787b295..6a85427 100644
--- a/ojluni/annotations/mmodule/sun/security/pkcs/SignerInfo.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/pkcs/SignerInfo.annotated.java
@@ -28,52 +28,77 @@
package sun.security.pkcs;
import sun.security.util.DerEncoder;
+import sun.security.util.DerInputStream;
+import sun.security.x509.X500Name;
import java.io.IOException;
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public class SignerInfo implements sun.security.util.DerEncoder {
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public SignerInfo() { throw new RuntimeException("Stub!"); }
-public SignerInfo(sun.security.x509.X500Name issuerName, java.math.BigInteger serial, sun.security.x509.AlgorithmId digestAlgorithmId, sun.security.x509.AlgorithmId digestEncryptionAlgorithmId, byte[] encryptedDigest) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public SignerInfo(X500Name issuerName, java.math.BigInteger serial, sun.security.x509.AlgorithmId digestAlgorithmId, sun.security.x509.AlgorithmId digestEncryptionAlgorithmId, byte[] encryptedDigest) { throw new RuntimeException("Stub!"); }
-public SignerInfo(sun.security.x509.X500Name issuerName, java.math.BigInteger serial, sun.security.x509.AlgorithmId digestAlgorithmId, sun.security.pkcs.PKCS9Attributes authenticatedAttributes, sun.security.x509.AlgorithmId digestEncryptionAlgorithmId, byte[] encryptedDigest, sun.security.pkcs.PKCS9Attributes unauthenticatedAttributes) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public SignerInfo(X500Name issuerName, java.math.BigInteger serial, sun.security.x509.AlgorithmId digestAlgorithmId, PKCS9Attributes authenticatedAttributes, sun.security.x509.AlgorithmId digestEncryptionAlgorithmId, byte[] encryptedDigest, PKCS9Attributes unauthenticatedAttributes) { throw new RuntimeException("Stub!"); }
-public SignerInfo(sun.security.util.DerInputStream derin) throws java.io.IOException, sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public SignerInfo(DerInputStream derin) throws java.io.IOException, sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
-public SignerInfo(sun.security.util.DerInputStream derin, boolean oldStyle) throws java.io.IOException, sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public SignerInfo(DerInputStream derin, boolean oldStyle) throws java.io.IOException, sun.security.pkcs.ParsingException { throw new RuntimeException("Stub!"); }
-public void encode(sun.security.util.DerOutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public void encode(DerOutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public void derEncode(java.io.OutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.security.cert.X509Certificate getCertificate(sun.security.pkcs.PKCS7 block) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public java.util.ArrayList<java.security.cert.X509Certificate> getCertificateChain(sun.security.pkcs.PKCS7 block) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.math.BigInteger getVersion() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.x509.X500Name getIssuerName() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.math.BigInteger getCertificateSerialNumber() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.x509.AlgorithmId getDigestAlgorithmId() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.PKCS9Attributes getAuthenticatedAttributes() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.x509.AlgorithmId getDigestEncryptionAlgorithmId() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public byte[] getEncryptedDigest() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.PKCS9Attributes getUnauthenticatedAttributes() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public sun.security.pkcs.PKCS7 getTsToken() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.security.Timestamp getTimestamp() throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException, java.security.SignatureException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.lang.String toString() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/sun/security/util/ObjectIdentifier.annotated.java b/ojluni/annotations/mmodule/sun/security/util/ObjectIdentifier.annotated.java
index 90a4dc4..2892b72 100644
--- a/ojluni/annotations/mmodule/sun/security/util/ObjectIdentifier.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/util/ObjectIdentifier.annotated.java
@@ -26,32 +26,40 @@
package sun.security.util;
-import java.io.*;
-import java.math.BigInteger;
-
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.Hide
@SuppressWarnings({"unchecked", "deprecation", "all"})
public final class ObjectIdentifier implements java.io.Serializable {
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
public ObjectIdentifier(java.lang.String oid) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public ObjectIdentifier(int[] values) throws java.io.IOException { throw new RuntimeException("Stub!"); }
-public ObjectIdentifier(sun.security.util.DerInputStream in) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
+public ObjectIdentifier(DerInputStream in) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public static sun.security.util.ObjectIdentifier newInternal(int[] values) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
@Deprecated
public boolean equals(sun.security.util.ObjectIdentifier other) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public boolean equals(java.lang.Object obj) { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public int hashCode() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public int[] toIntArray() { throw new RuntimeException("Stub!"); }
+@libcore.api.Hide
public java.lang.String toString() { throw new RuntimeException("Stub!"); }
}
diff --git a/ojluni/annotations/mmodule/sun/security/x509/AlgorithmId.annotated.java b/ojluni/annotations/mmodule/sun/security/x509/AlgorithmId.annotated.java
index 1fc8d82..0399caa 100644
--- a/ojluni/annotations/mmodule/sun/security/x509/AlgorithmId.annotated.java
+++ b/ojluni/annotations/mmodule/sun/security/x509/AlgorithmId.annotated.java
@@ -24,31 +24,260 @@
* questions.
*/
+
package sun.security.x509;
-import java.io.Serializable;
-import java.security.NoSuchAlgorithmException;
-import sun.security.util.DerEncoder;
-import sun.security.util.ObjectIdentifier;
-
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
@libcore.api.IntraCoreApi
@libcore.api.Hide
-public class AlgorithmId implements Serializable, DerEncoder {
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class AlgorithmId implements java.io.Serializable {
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- public AlgorithmId(ObjectIdentifier oid) {
- throw new RuntimeException("Stub!");
- }
+@libcore.api.Hide
+@Deprecated
+public AlgorithmId() { throw new RuntimeException("Stub!"); }
- @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
- @libcore.api.IntraCoreApi
- public String getName() {
- throw new RuntimeException("Stub!");
- }
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.Hide
+public AlgorithmId(sun.security.util.ObjectIdentifier oid) { throw new RuntimeException("Stub!"); }
- @libcore.api.IntraCoreApi
- public static AlgorithmId get(String algname) throws NoSuchAlgorithmException {
- throw new RuntimeException("Stub!");
- }
+@libcore.api.Hide
+public AlgorithmId(sun.security.util.ObjectIdentifier oid, java.security.AlgorithmParameters algparams) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+protected void decodeParams() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public final void encode(DerOutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.IntraCoreApi
+@libcore.api.Hide
+public void derEncode(java.io.OutputStream out) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public final byte[] encode() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public final sun.security.util.ObjectIdentifier getOID() { throw new RuntimeException("Stub!"); }
+
+@android.annotation.SystemApi(client = android.annotation.SystemApi.Client.MODULE_LIBRARIES)
+@libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
+@libcore.api.IntraCoreApi
+@libcore.api.Hide
+public java.lang.String getName() { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public java.security.AlgorithmParameters getParameters() { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public byte[] getEncodedParams() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public boolean equals(sun.security.x509.AlgorithmId other) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public boolean equals(java.lang.Object other) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public final boolean equals(sun.security.util.ObjectIdentifier id) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public int hashCode() { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+protected java.lang.String paramsToString() { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public java.lang.String toString() { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static sun.security.x509.AlgorithmId parse(DerValue val) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+@Deprecated
+public static sun.security.x509.AlgorithmId getAlgorithmId(java.lang.String algname) throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.IntraCoreApi
+@libcore.api.Hide
+public static sun.security.x509.AlgorithmId get(java.lang.String algname) throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static sun.security.x509.AlgorithmId get(java.security.AlgorithmParameters algparams) throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static java.lang.String makeSigAlg(java.lang.String digAlg, java.lang.String encAlg) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static java.lang.String getEncAlgFromSigAlg(java.lang.String signatureAlgorithm) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static java.lang.String getDigAlgFromSigAlg(java.lang.String signatureAlgorithm) { throw new RuntimeException("Stub!"); }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier AES_oid;
+static { AES_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier DH_PKIX_oid;
+static { DH_PKIX_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier DH_oid;
+static { DH_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier DSA_OIW_oid;
+static { DSA_OIW_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier DSA_oid;
+static { DSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier ECDH_oid;
+static { ECDH_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier EC_oid;
+static { EC_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier MD2_oid;
+static { MD2_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier MD5_oid;
+static { MD5_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier RSAEncryption_oid;
+static { RSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier RSA_oid;
+static { RSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier SHA224_oid;
+static { SHA224_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier SHA256_oid;
+static { SHA256_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier SHA384_oid;
+static { SHA384_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier SHA512_oid;
+static { SHA512_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier SHA_oid;
+static { SHA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier md2WithRSAEncryption_oid;
+static { md2WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier md5WithRSAEncryption_oid;
+static { md5WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+protected DerValue params;
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier pbeWithMD5AndDES_oid;
+static { pbeWithMD5AndDES_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier pbeWithMD5AndRC2_oid;
+static { pbeWithMD5AndRC2_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier pbeWithSHA1AndDES_oid;
+static { pbeWithSHA1AndDES_oid = null; }
+
+@libcore.api.Hide
+public static sun.security.util.ObjectIdentifier pbeWithSHA1AndDESede_oid;
+
+@libcore.api.Hide
+public static sun.security.util.ObjectIdentifier pbeWithSHA1AndRC2_40_oid;
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier pbeWithSHA1AndRC2_oid;
+static { pbeWithSHA1AndRC2_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha1WithDSA_OIW_oid;
+static { sha1WithDSA_OIW_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha1WithDSA_oid;
+static { sha1WithDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha1WithECDSA_oid;
+static { sha1WithECDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha1WithRSAEncryption_OIW_oid;
+static { sha1WithRSAEncryption_OIW_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha1WithRSAEncryption_oid;
+static { sha1WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha224WithDSA_oid;
+static { sha224WithDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha224WithECDSA_oid;
+static { sha224WithECDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha224WithRSAEncryption_oid;
+static { sha224WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha256WithDSA_oid;
+static { sha256WithDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha256WithECDSA_oid;
+static { sha256WithECDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha256WithRSAEncryption_oid;
+static { sha256WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha384WithECDSA_oid;
+static { sha384WithECDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha384WithRSAEncryption_oid;
+static { sha384WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha512WithECDSA_oid;
+static { sha512WithECDSA_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier sha512WithRSAEncryption_oid;
+static { sha512WithRSAEncryption_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier shaWithDSA_OIW_oid;
+static { shaWithDSA_OIW_oid = null; }
+
+@libcore.api.Hide
+public static final sun.security.util.ObjectIdentifier specifiedWithECDSA_oid;
+static { specifiedWithECDSA_oid = null; }
}
+
diff --git a/ojluni/src/main/java/java/lang/Comparable.java b/ojluni/src/main/java/java/lang/Comparable.java
index a88cf16..f0e4b38 100644
--- a/ojluni/src/main/java/java/lang/Comparable.java
+++ b/ojluni/src/main/java/java/lang/Comparable.java
@@ -84,7 +84,7 @@
* {(x, y) such that x.equals(y)}. </pre><p>
*
* This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <T> the type of objects that this object may be compared to
diff --git a/ojluni/src/main/java/java/lang/Iterable.java b/ojluni/src/main/java/java/lang/Iterable.java
index eed3938..0928c81 100644
--- a/ojluni/src/main/java/java/lang/Iterable.java
+++ b/ojluni/src/main/java/java/lang/Iterable.java
@@ -34,7 +34,7 @@
* Implementing this interface allows an object to be the target of
* the "for-each loop" statement. See
* <strong>
- * <a href="{@docRoot}/../technotes/guides/language/foreach.html">For-each Loop</a>
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html">For-each Loop</a>
* </strong>
*
* @param <T> the type of elements returned by the iterator
diff --git a/ojluni/src/main/java/java/lang/String.java b/ojluni/src/main/java/java/lang/String.java
index 2ba7b1f..58207eb 100644
--- a/ojluni/src/main/java/java/lang/String.java
+++ b/ojluni/src/main/java/java/lang/String.java
@@ -144,7 +144,7 @@
* Class String is special cased within the Serialization Stream Protocol.
*
* A String instance is written into an ObjectOutputStream according to
- * <a href="{@docRoot}/../platform/serialization/spec/output.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/platform/serialization/spec/output.html">
* Object Serialization Specification, Section 6.2, "Stream Elements"</a>
*/
private static final ObjectStreamField[] serialPersistentFields =
diff --git a/ojluni/src/main/java/java/lang/Thread.java b/ojluni/src/main/java/java/lang/Thread.java
index 3ca106e..ca66ef3 100644
--- a/ojluni/src/main/java/java/lang/Thread.java
+++ b/ojluni/src/main/java/java/lang/Thread.java
@@ -962,7 +962,7 @@
* for example), the <code>interrupt</code> method should be used to
* interrupt the wait.
* For more information, see
- * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
* are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
*/
@Deprecated
@@ -998,7 +998,7 @@
* could be used to generate exceptions that the target thread was
* not prepared to handle.
* For more information, see
- * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
* are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
*/
@Deprecated
@@ -1137,7 +1137,7 @@
* If another thread ever attempted to lock this resource, deadlock
* would result. Such deadlocks typically manifest themselves as
* "frozen" processes. For more information, see
- * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html">
* Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
* @throws UnsupportedOperationException always
*/
@@ -1171,7 +1171,7 @@
* monitor prior to calling <code>resume</code>, deadlock results. Such
* deadlocks typically manifest themselves as "frozen" processes.
* For more information, see
- * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
* are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
* @throws UnsupportedOperationException always
*/
@@ -1191,7 +1191,7 @@
* @deprecated This method exists solely for use with {@link #suspend},
* which has been deprecated because it is deadlock-prone.
* For more information, see
- * <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html">Why
* are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
* @throws UnsupportedOperationException always
*/
diff --git a/ojluni/src/main/java/java/lang/UnsupportedOperationException.java b/ojluni/src/main/java/java/lang/UnsupportedOperationException.java
index fcb355c..1de2508 100644
--- a/ojluni/src/main/java/java/lang/UnsupportedOperationException.java
+++ b/ojluni/src/main/java/java/lang/UnsupportedOperationException.java
@@ -29,7 +29,7 @@
* Thrown to indicate that the requested operation is not supported.<p>
*
* This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
index 7222b44..4cab0c3 100644
--- a/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameterGenerator.java
@@ -99,7 +99,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
* AlgorithmParameterGenerator section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -164,7 +164,7 @@
* @param algorithm the name of the algorithm this
* parameter generator is associated with.
* See the AlgorithmParameterGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -206,7 +206,7 @@
* @param algorithm the name of the algorithm this
* parameter generator is associated with.
* See the AlgorithmParameterGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -252,7 +252,7 @@
* @param algorithm the string name of the algorithm this
* parameter generator is associated with.
* See the AlgorithmParameterGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/AlgorithmParameters.java b/ojluni/src/main/java/java/security/AlgorithmParameters.java
index fd1966f1..989159e 100644
--- a/ojluni/src/main/java/java/security/AlgorithmParameters.java
+++ b/ojluni/src/main/java/java/security/AlgorithmParameters.java
@@ -153,7 +153,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameters">
* AlgorithmParameters section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -223,7 +223,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the AlgorithmParameters section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameters">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -265,7 +265,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the AlgorithmParameters section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameters">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -314,7 +314,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the AlgorithmParameters section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#AlgorithmParameters">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/KeyFactory.java b/ojluni/src/main/java/java/security/KeyFactory.java
index 716f62d..f687d61 100644
--- a/ojluni/src/main/java/java/security/KeyFactory.java
+++ b/ojluni/src/main/java/java/security/KeyFactory.java
@@ -100,7 +100,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyFactory">
* KeyFactory section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -178,7 +178,7 @@
*
* @param algorithm the name of the requested key algorithm.
* See the KeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -209,7 +209,7 @@
*
* @param algorithm the name of the requested key algorithm.
* See the KeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -250,7 +250,7 @@
*
* @param algorithm the name of the requested key algorithm.
* See the KeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/KeyPairGenerator.java b/ojluni/src/main/java/java/security/KeyPairGenerator.java
index 7c6cdb5..1c4c2cb 100644
--- a/ojluni/src/main/java/java/security/KeyPairGenerator.java
+++ b/ojluni/src/main/java/java/security/KeyPairGenerator.java
@@ -133,7 +133,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* KeyPairGenerator section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -162,7 +162,7 @@
*
* @param algorithm the standard string name of the algorithm.
* See the KeyPairGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*/
@@ -173,7 +173,7 @@
/**
* Returns the standard name of the algorithm for this key pair generator.
* See the KeyPairGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -220,7 +220,7 @@
*
* @param algorithm the standard string name of the algorithm.
* See the KeyPairGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -276,7 +276,7 @@
*
* @param algorithm the standard string name of the algorithm.
* See the KeyPairGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -317,7 +317,7 @@
*
* @param algorithm the standard string name of the algorithm.
* See the KeyPairGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/KeyStore.java b/ojluni/src/main/java/java/security/KeyStore.java
index 7781649..924f14f 100644
--- a/ojluni/src/main/java/java/security/KeyStore.java
+++ b/ojluni/src/main/java/java/security/KeyStore.java
@@ -195,7 +195,7 @@
* </table>
*
* These types are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyStore">
* KeyStore section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -311,7 +311,7 @@
* @param protectionAlgorithm the encryption algorithm name, for
* example, {@code PBEWithHmacSHA256AndAES_256}.
* See the Cipher section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher">
* Java Cryptography Architecture Standard Algorithm Name
* Documentation</a>
* for information about standard encryption algorithm names.
@@ -868,7 +868,7 @@
*
* @param type the type of keystore.
* See the KeyStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard keystore types.
*
@@ -906,7 +906,7 @@
*
* @param type the type of keystore.
* See the KeyStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard keystore types.
*
@@ -949,7 +949,7 @@
*
* @param type the type of keystore.
* See the KeyStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard keystore types.
*
diff --git a/ojluni/src/main/java/java/security/MessageDigest.java b/ojluni/src/main/java/java/security/MessageDigest.java
index 5b9359f..996339e 100644
--- a/ojluni/src/main/java/java/security/MessageDigest.java
+++ b/ojluni/src/main/java/java/security/MessageDigest.java
@@ -120,7 +120,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* MessageDigest section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -155,7 +155,7 @@
*
* @param algorithm the standard name of the digest algorithm.
* See the MessageDigest section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*/
@@ -178,7 +178,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the MessageDigest section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -232,7 +232,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the MessageDigest section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -283,7 +283,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the MessageDigest section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -511,7 +511,7 @@
* implementation details. The name should be a standard
* Java Security name (such as "SHA", "MD5", and so on).
* See the MessageDigest section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/SecureRandom.java b/ojluni/src/main/java/java/security/SecureRandom.java
index 79e3840..4da178d 100644
--- a/ojluni/src/main/java/java/security/SecureRandom.java
+++ b/ojluni/src/main/java/java/security/SecureRandom.java
@@ -151,7 +151,7 @@
* the {@link Security#getProviders() Security.getProviders()} method.
*
* <p> See the SecureRandom section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard RNG algorithm names.
*
@@ -189,7 +189,7 @@
* the {@link Security#getProviders() Security.getProviders()} method.
*
* <p> See the SecureRandom section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard RNG algorithm names.
*
@@ -278,7 +278,7 @@
*
* @param algorithm the name of the RNG algorithm.
* See the SecureRandom section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard RNG algorithm names.
*
@@ -321,7 +321,7 @@
*
* @param algorithm the name of the RNG algorithm.
* See the SecureRandom section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard RNG algorithm names.
*
@@ -369,7 +369,7 @@
*
* @param algorithm the name of the RNG algorithm.
* See the SecureRandom section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecureRandom">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard RNG algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/Security.java b/ojluni/src/main/java/java/security/Security.java
index bb853a6..ab1cc1d 100644
--- a/ojluni/src/main/java/java/security/Security.java
+++ b/ojluni/src/main/java/java/security/Security.java
@@ -207,7 +207,7 @@
/**
* Gets a specified property for an algorithm. The algorithm name
* should be a standard name. See the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -443,7 +443,7 @@
* </ul>
*
* <p> See the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard cryptographic service names, standard
* algorithm names and standard attribute names.
diff --git a/ojluni/src/main/java/java/security/Signature.java b/ojluni/src/main/java/java/security/Signature.java
index bbe9640..a09409f 100644
--- a/ojluni/src/main/java/java/security/Signature.java
+++ b/ojluni/src/main/java/java/security/Signature.java
@@ -238,7 +238,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature">
* Signature section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -298,7 +298,7 @@
*
* @param algorithm the standard string name of the algorithm.
* See the Signature section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*/
@@ -338,7 +338,7 @@
*
* @param algorithm the standard name of the algorithm requested.
* See the Signature section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -464,7 +464,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the Signature section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -516,7 +516,7 @@
*
* @param algorithm the name of the algorithm requested.
* See the Signature section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/cert/CertPath.java b/ojluni/src/main/java/java/security/cert/CertPath.java
index 8717f94..fa88c39 100644
--- a/ojluni/src/main/java/java/security/cert/CertPath.java
+++ b/ojluni/src/main/java/java/security/cert/CertPath.java
@@ -91,7 +91,7 @@
* <li>{@code PkiPath}</li>
* </ul>
* These encodings are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathEncodings">
* CertPath Encodings section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
* Consult the release documentation for your implementation to see if any
diff --git a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
index 891d86c..2d54292 100644
--- a/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathBuilder.java
@@ -83,7 +83,7 @@
* </table>
*
* This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathBuilder">
* CertPathBuilder section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
* Consult the release documentation for your implementation to see if any
@@ -155,7 +155,7 @@
*
* @param algorithm the name of the requested {@code CertPathBuilder}
* algorithm. See the CertPathBuilder section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathBuilder">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -190,7 +190,7 @@
*
* @param algorithm the name of the requested {@code CertPathBuilder}
* algorithm. See the CertPathBuilder section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathBuilder">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -230,7 +230,7 @@
*
* @param algorithm the name of the requested {@code CertPathBuilder}
* algorithm. See the CertPathBuilder section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathBuilder">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/cert/CertPathValidator.java b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
index 942c5fa..bcb3488 100644
--- a/ojluni/src/main/java/java/security/cert/CertPathValidator.java
+++ b/ojluni/src/main/java/java/security/cert/CertPathValidator.java
@@ -85,7 +85,7 @@
* </table>
*
* This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathValidator">
* CertPathValidator section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -154,7 +154,7 @@
*
* @param algorithm the name of the requested {@code CertPathValidator}
* algorithm. See the CertPathValidator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathValidator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -189,7 +189,7 @@
*
* @param algorithm the name of the requested {@code CertPathValidator}
* algorithm. See the CertPathValidator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathValidator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -230,7 +230,7 @@
*
* @param algorithm the name of the requested {@code CertPathValidator}
* algorithm. See the CertPathValidator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathValidator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/java/security/cert/CertStore.java b/ojluni/src/main/java/java/security/cert/CertStore.java
index 6eaee5c..7cfd0d2 100644
--- a/ojluni/src/main/java/java/security/cert/CertStore.java
+++ b/ojluni/src/main/java/java/security/cert/CertStore.java
@@ -77,7 +77,7 @@
* </table>
*
* This type is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertStore">
* CertStore section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -212,7 +212,7 @@
*
* @param type the name of the requested {@code CertStore} type.
* See the CertStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard types.
*
@@ -272,7 +272,7 @@
*
* @param type the requested {@code CertStore} type.
* See the CertStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard types.
*
@@ -330,7 +330,7 @@
*
* @param type the requested {@code CertStore} type.
* See the CertStore section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertStore">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard types.
*
diff --git a/ojluni/src/main/java/java/security/cert/Certificate.java b/ojluni/src/main/java/java/security/cert/Certificate.java
index 1054498..4056416 100644
--- a/ojluni/src/main/java/java/security/cert/Certificate.java
+++ b/ojluni/src/main/java/java/security/cert/Certificate.java
@@ -74,7 +74,7 @@
*
* @param type the standard name of the certificate type.
* See the CertificateFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertificateFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard certificate types.
*/
diff --git a/ojluni/src/main/java/java/security/cert/CertificateFactory.java b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
index a47b788..e34fddd 100644
--- a/ojluni/src/main/java/java/security/cert/CertificateFactory.java
+++ b/ojluni/src/main/java/java/security/cert/CertificateFactory.java
@@ -127,9 +127,9 @@
* </table>
*
* The type and encodings are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertificateFactory">
* CertificateFactory section</a> and the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathEncodings">
* CertPath Encodings section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -188,7 +188,7 @@
*
* @param type the name of the requested certificate type.
* See the CertificateFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertificateFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard certificate types.
*
@@ -226,7 +226,7 @@
*
* @param type the certificate type.
* See the CertificateFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertificateFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard certificate types.
*
@@ -272,7 +272,7 @@
*
* @param type the certificate type.
* See the CertificateFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertificateFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard certificate types.
* @param provider the provider.
@@ -370,7 +370,7 @@
* Returns an iteration of the {@code CertPath} encodings supported
* by this certificate factory, with the default encoding first. See
* the CertPath Encodings section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathEncodings">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard encoding names and their formats.
* <p>
@@ -410,7 +410,7 @@
* the data read from the {@code InputStream} inStream. The data
* is assumed to be in the specified encoding. See
* the CertPath Encodings section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathEncodings">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard encoding names and their formats.
*
diff --git a/ojluni/src/main/java/java/security/cert/CertificateFactorySpi.java b/ojluni/src/main/java/java/security/cert/CertificateFactorySpi.java
index 35aee84..691777d 100644
--- a/ojluni/src/main/java/java/security/cert/CertificateFactorySpi.java
+++ b/ojluni/src/main/java/java/security/cert/CertificateFactorySpi.java
@@ -183,7 +183,7 @@
* Returns an iteration of the {@code CertPath} encodings supported
* by this certificate factory, with the default encoding first. See
* the CertPath Encodings section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#CertPathEncodings">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard encoding names.
* <p>
diff --git a/ojluni/src/main/java/java/security/cert/package-info.java b/ojluni/src/main/java/java/security/cert/package-info.java
index 58f5fb7..4830455 100644
--- a/ojluni/src/main/java/java/security/cert/package-info.java
+++ b/ojluni/src/main/java/java/security/cert/package-info.java
@@ -32,14 +32,14 @@
* <h2>Package Specification</h2>
*
* <ul>
- * <li><a href="{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
* <b>Java™
* Cryptography Architecture (JCA) Reference Guide</b></a>
* <li>RFC 5280: Internet X.509 Public Key Infrastructure Certificate and
* Certificate Revocation List (CRL) Profile
* <li>RFC 2560: X.509 Internet Public Key Infrastructure Online Certificate
* Status Protocol - OCSP
- * <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
* <b>Java™
* Cryptography Architecture Standard Algorithm Name
* Documentation</b></a></li>
@@ -52,10 +52,10 @@
* <li><a href="http://www.ietf.org/rfc/rfc5280.txt">
* http://www.ietf.org/rfc/rfc5280.txt</a>
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/certpath/CertPathProgGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/certpath/CertPathProgGuide.html">
* <b>Java™
* PKI Programmer's Guide</b></a>
- * <li><a href="{@docRoot}/../technotes/guides/security/cert3.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/cert3.html">
* <b>X.509 Certificates and Certificate Revocation Lists (CRLs)</b></a>
* </ul>
*
diff --git a/ojluni/src/main/java/java/security/interfaces/package-info.java b/ojluni/src/main/java/java/security/interfaces/package-info.java
index 54c9397..8942340 100644
--- a/ojluni/src/main/java/java/security/interfaces/package-info.java
+++ b/ojluni/src/main/java/java/security/interfaces/package-info.java
@@ -43,7 +43,7 @@
* to these cryptographic provider developer guides:
* <ul>
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
* <b>How to Implement a Provider for the
* Java™ Cryptography Architecture
* </b></a></li>
@@ -63,7 +63,7 @@
* <ul>
* <li>
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
* <b>Java™
* Cryptography Architecture API Specification and Reference
* </b></a></li>
diff --git a/ojluni/src/main/java/java/security/package-info.java b/ojluni/src/main/java/java/security/package-info.java
index 2c8205b..60e9b4b 100644
--- a/ojluni/src/main/java/java/security/package-info.java
+++ b/ojluni/src/main/java/java/security/package-info.java
@@ -46,14 +46,14 @@
* <h2>Package Specification</h2>
*
* <ul>
- * <li><a href="{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
* <b>Java™
* Cryptography Architecture (JCA) Reference Guide</b></a></li>
*
* <li>PKCS #8: Private-Key Information Syntax Standard, Version 1.2,
* November 1993</li>
*
- * <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
* <b>Java™
* Cryptography Architecture Standard Algorithm Name
* Documentation</b></a></li>
@@ -64,44 +64,44 @@
* For further documentation, please see:
* <ul>
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/spec/security-spec.doc.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/spec/security-spec.doc.html">
* <b>Java™
* SE Platform Security Architecture</b></a></li>
*
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
* <b>How to Implement a Provider in the
* Java™ Cryptography Architecture
* </b></a></li>
*
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/PolicyFiles.html"><b>
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html"><b>
* Default Policy Implementation and Policy File Syntax
* </b></a></li>
*
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/permissions.html"><b>
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html"><b>
* Permissions in the
* Java™ SE Development Kit (JDK)
* </b></a></li>
*
* <li><a href=
- * "{@docRoot}/../technotes/guides/security/SecurityToolsSummary.html"><b>
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/SecurityToolsSummary.html"><b>
* Summary of Tools for
* Java™ Platform Security
* </b></a></li>
*
* <li><b>keytool</b>
- * (<a href="{@docRoot}/../technotes/tools/unix/keytool.html">
+ * (<a href="https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html">
* for Solaris/Linux</a>)
- * (<a href="{@docRoot}/../technotes/tools/windows/keytool.html">
+ * (<a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html">
* for Windows</a>)
* </li>
*
* <li><b>jarsigner</b>
- * (<a href="{@docRoot}/../technotes/tools/unix/jarsigner.html">
+ * (<a href="https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jarsigner.html">
* for Solaris/Linux</a>)
- * (<a href="{@docRoot}/../technotes/tools/windows/jarsigner.html">
+ * (<a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jarsigner.html">
* for Windows</a>)
* </li>
*
diff --git a/ojluni/src/main/java/java/security/spec/package-info.java b/ojluni/src/main/java/java/security/spec/package-info.java
index cb39308..68f0b8e 100644
--- a/ojluni/src/main/java/java/security/spec/package-info.java
+++ b/ojluni/src/main/java/java/security/spec/package-info.java
@@ -56,13 +56,13 @@
* <ul>
* <li>
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
* <b>Java™
* Cryptography Architecture API Specification and Reference
* </b></a></li>
* <li>
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
* <b>How to Implement a Provider for the
* Java™ Cryptography Architecture
* </b></a></li>
diff --git a/ojluni/src/main/java/java/text/CollationElementIterator.java b/ojluni/src/main/java/java/text/CollationElementIterator.java
index fede747..17ce8c7 100644
--- a/ojluni/src/main/java/java/text/CollationElementIterator.java
+++ b/ojluni/src/main/java/java/text/CollationElementIterator.java
@@ -107,8 +107,7 @@
* Null order which indicates the end of string is reached by the
* cursor.
*/
- // Android-changed: use ICU CollationElementIterator constant.
- public final static int NULLORDER = android.icu.text.CollationElementIterator.NULLORDER;
+ public final static int NULLORDER = 0xffffffff;
// Android-removed: internal constructors.
diff --git a/ojluni/src/main/java/java/util/AbstractCollection.java b/ojluni/src/main/java/java/util/AbstractCollection.java
index 1f7cdd9..19c15f8 100644
--- a/ojluni/src/main/java/java/util/AbstractCollection.java
+++ b/ojluni/src/main/java/java/util/AbstractCollection.java
@@ -49,7 +49,7 @@
* the collection being implemented admits a more efficient implementation.<p>
*
* This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/AbstractList.java b/ojluni/src/main/java/java/util/AbstractList.java
index c8c160d..30778ad 100644
--- a/ojluni/src/main/java/java/util/AbstractList.java
+++ b/ojluni/src/main/java/java/util/AbstractList.java
@@ -62,7 +62,7 @@
* collection being implemented admits a more efficient implementation.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/AbstractMap.java b/ojluni/src/main/java/java/util/AbstractMap.java
index 948bf51..09c2f94 100644
--- a/ojluni/src/main/java/java/util/AbstractMap.java
+++ b/ojluni/src/main/java/java/util/AbstractMap.java
@@ -52,7 +52,7 @@
* map being implemented admits a more efficient implementation.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <K> the type of keys maintained by this map
diff --git a/ojluni/src/main/java/java/util/AbstractSequentialList.java b/ojluni/src/main/java/java/util/AbstractSequentialList.java
index 36a91da..37292df 100644
--- a/ojluni/src/main/java/java/util/AbstractSequentialList.java
+++ b/ojluni/src/main/java/java/util/AbstractSequentialList.java
@@ -54,7 +54,7 @@
* specification.<p>
*
* This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/AbstractSet.java b/ojluni/src/main/java/java/util/AbstractSet.java
index b3fe0dc..620f672 100644
--- a/ojluni/src/main/java/java/util/AbstractSet.java
+++ b/ojluni/src/main/java/java/util/AbstractSet.java
@@ -42,7 +42,7 @@
* for <tt>equals</tt> and <tt>hashCode</tt>.<p>
*
* This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/ArrayList.java b/ojluni/src/main/java/java/util/ArrayList.java
index 20c623a..02f9479 100644
--- a/ojluni/src/main/java/java/util/ArrayList.java
+++ b/ojluni/src/main/java/java/util/ArrayList.java
@@ -92,7 +92,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/Arrays.java b/ojluni/src/main/java/java/util/Arrays.java
index 8cd8aaf..d0a218a 100644
--- a/ojluni/src/main/java/java/util/Arrays.java
+++ b/ojluni/src/main/java/java/util/Arrays.java
@@ -61,7 +61,7 @@
* a MergeSort, but it does have to be <i>stable</i>.)
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/Collection.java b/ojluni/src/main/java/java/util/Collection.java
index 2ae8872..279ec9e 100644
--- a/ojluni/src/main/java/java/util/Collection.java
+++ b/ojluni/src/main/java/java/util/Collection.java
@@ -112,7 +112,7 @@
* however most current implementations do not do so.
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @implSpec
diff --git a/ojluni/src/main/java/java/util/Collections.java b/ojluni/src/main/java/java/util/Collections.java
index 58ad86f..e7e8e72 100644
--- a/ojluni/src/main/java/java/util/Collections.java
+++ b/ojluni/src/main/java/java/util/Collections.java
@@ -70,7 +70,7 @@
* already sorted may or may not throw <tt>UnsupportedOperationException</tt>.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/Comparator.java b/ojluni/src/main/java/java/util/Comparator.java
index ecf8d64..27cfdd5 100644
--- a/ojluni/src/main/java/java/util/Comparator.java
+++ b/ojluni/src/main/java/java/util/Comparator.java
@@ -94,7 +94,7 @@
* an equivalence relation.
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <T> the type of objects that may be compared by this comparator
diff --git a/ojluni/src/main/java/java/util/EnumMap.java b/ojluni/src/main/java/java/util/EnumMap.java
index cd1c5fe..30a8dce 100644
--- a/ojluni/src/main/java/java/util/EnumMap.java
+++ b/ojluni/src/main/java/java/util/EnumMap.java
@@ -69,7 +69,7 @@
* {@link HashMap} counterparts.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/EnumSet.java b/ojluni/src/main/java/java/util/EnumSet.java
index 95e0124..f1b0329 100644
--- a/ojluni/src/main/java/java/util/EnumSet.java
+++ b/ojluni/src/main/java/java/util/EnumSet.java
@@ -68,7 +68,7 @@
* constant time if their argument is also an enum set.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/HashMap.java b/ojluni/src/main/java/java/util/HashMap.java
index 2c01f6f..360f736 100644
--- a/ojluni/src/main/java/java/util/HashMap.java
+++ b/ojluni/src/main/java/java/util/HashMap.java
@@ -117,7 +117,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <K> the type of keys maintained by this map
diff --git a/ojluni/src/main/java/java/util/HashSet.java b/ojluni/src/main/java/java/util/HashSet.java
index f9b09ee..5805331 100644
--- a/ojluni/src/main/java/java/util/HashSet.java
+++ b/ojluni/src/main/java/java/util/HashSet.java
@@ -72,7 +72,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/Hashtable.java b/ojluni/src/main/java/java/util/Hashtable.java
index 4c76a74..fc163a7 100644
--- a/ojluni/src/main/java/java/util/Hashtable.java
+++ b/ojluni/src/main/java/java/util/Hashtable.java
@@ -105,7 +105,7 @@
*
* <p>As of the Java 2 platform v1.2, this class was retrofitted to
* implement the {@link Map} interface, making it a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
*
* Java Collections Framework</a>. Unlike the new collection
* implementations, {@code Hashtable} is synchronized. If a
diff --git a/ojluni/src/main/java/java/util/IdentityHashMap.java b/ojluni/src/main/java/java/util/IdentityHashMap.java
index 9dc0c26..1ed9d76 100644
--- a/ojluni/src/main/java/java/util/IdentityHashMap.java
+++ b/ojluni/src/main/java/java/util/IdentityHashMap.java
@@ -122,7 +122,7 @@
* {@link HashMap} (which uses <i>chaining</i> rather than linear-probing).
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @see System#identityHashCode(Object)
diff --git a/ojluni/src/main/java/java/util/Iterator.java b/ojluni/src/main/java/java/util/Iterator.java
index 7d2daf8..02777b6 100644
--- a/ojluni/src/main/java/java/util/Iterator.java
+++ b/ojluni/src/main/java/java/util/Iterator.java
@@ -40,7 +40,7 @@
* </ul>
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements returned by this iterator
diff --git a/ojluni/src/main/java/java/util/LinkedHashMap.java b/ojluni/src/main/java/java/util/LinkedHashMap.java
index 26f1880..cd501a5 100644
--- a/ojluni/src/main/java/java/util/LinkedHashMap.java
+++ b/ojluni/src/main/java/java/util/LinkedHashMap.java
@@ -158,7 +158,7 @@
* {@code LinkedHashMap}.
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @implNote
diff --git a/ojluni/src/main/java/java/util/LinkedHashSet.java b/ojluni/src/main/java/java/util/LinkedHashSet.java
index 08606cf..c573d7c 100644
--- a/ojluni/src/main/java/java/util/LinkedHashSet.java
+++ b/ojluni/src/main/java/java/util/LinkedHashSet.java
@@ -100,7 +100,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/LinkedList.java b/ojluni/src/main/java/java/util/LinkedList.java
index 60f4c41..2683a90 100644
--- a/ojluni/src/main/java/java/util/LinkedList.java
+++ b/ojluni/src/main/java/java/util/LinkedList.java
@@ -70,7 +70,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/ListIterator.java b/ojluni/src/main/java/java/util/ListIterator.java
index 6ad98fe..85a2f25 100644
--- a/ojluni/src/main/java/java/util/ListIterator.java
+++ b/ojluni/src/main/java/java/util/ListIterator.java
@@ -46,7 +46,7 @@
* {@link #previous()}.
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
diff --git a/ojluni/src/main/java/java/util/PriorityQueue.java b/ojluni/src/main/java/java/util/PriorityQueue.java
index 7c929bd..90e59d1 100644
--- a/ojluni/src/main/java/java/util/PriorityQueue.java
+++ b/ojluni/src/main/java/java/util/PriorityQueue.java
@@ -72,7 +72,7 @@
* ({@code peek}, {@code element}, and {@code size}).
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @since 1.5
diff --git a/ojluni/src/main/java/java/util/RandomAccess.java b/ojluni/src/main/java/java/util/RandomAccess.java
index 09ce29e..6b7e453 100644
--- a/ojluni/src/main/java/java/util/RandomAccess.java
+++ b/ojluni/src/main/java/java/util/RandomAccess.java
@@ -59,7 +59,7 @@
* </pre>
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @since 1.4
diff --git a/ojluni/src/main/java/java/util/Set.java b/ojluni/src/main/java/java/util/Set.java
index c2f6560..91497ca 100644
--- a/ojluni/src/main/java/java/util/Set.java
+++ b/ojluni/src/main/java/java/util/Set.java
@@ -91,7 +91,7 @@
* </ul>
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/SortedMap.java b/ojluni/src/main/java/java/util/SortedMap.java
index 7f98152..15ddba5 100644
--- a/ojluni/src/main/java/java/util/SortedMap.java
+++ b/ojluni/src/main/java/java/util/SortedMap.java
@@ -93,7 +93,7 @@
* SortedMap<String, V> sub = m.subMap(low+"\0", high);</pre>
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <K> the type of keys maintained by this map
diff --git a/ojluni/src/main/java/java/util/SortedSet.java b/ojluni/src/main/java/java/util/SortedSet.java
index 3ea9329..1ba72dd 100644
--- a/ojluni/src/main/java/java/util/SortedSet.java
+++ b/ojluni/src/main/java/java/util/SortedSet.java
@@ -89,7 +89,7 @@
* SortedSet<String> sub = s.subSet(low+"\0", high);</pre>
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/TreeMap.java b/ojluni/src/main/java/java/util/TreeMap.java
index 3359635..63d7c35 100644
--- a/ojluni/src/main/java/java/util/TreeMap.java
+++ b/ojluni/src/main/java/java/util/TreeMap.java
@@ -93,7 +93,7 @@
* associated map using {@code put}.)
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <K> the type of keys maintained by this map
diff --git a/ojluni/src/main/java/java/util/TreeSet.java b/ojluni/src/main/java/java/util/TreeSet.java
index 54eeeda..be215ba 100644
--- a/ojluni/src/main/java/java/util/TreeSet.java
+++ b/ojluni/src/main/java/java/util/TreeSet.java
@@ -74,7 +74,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <E> the type of elements maintained by this set
diff --git a/ojluni/src/main/java/java/util/Vector.java b/ojluni/src/main/java/java/util/Vector.java
index f184437..6c5247c 100644
--- a/ojluni/src/main/java/java/util/Vector.java
+++ b/ojluni/src/main/java/java/util/Vector.java
@@ -68,7 +68,7 @@
*
* <p>As of the Java 2 platform v1.2, this class was retrofitted to
* implement the {@link List} interface, making it a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>. Unlike the new collection
* implementations, {@code Vector} is synchronized. If a thread-safe
* implementation is not needed, it is recommended to use {@link
diff --git a/ojluni/src/main/java/java/util/WeakHashMap.java b/ojluni/src/main/java/java/util/WeakHashMap.java
index 7352391..68738df 100644
--- a/ojluni/src/main/java/java/util/WeakHashMap.java
+++ b/ojluni/src/main/java/java/util/WeakHashMap.java
@@ -120,7 +120,7 @@
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @param <K> the type of keys maintained by this map
diff --git a/ojluni/src/main/java/java/util/concurrent/BlockingDeque.java b/ojluni/src/main/java/java/util/concurrent/BlockingDeque.java
index 290fee1..da1a4fd 100644
--- a/ojluni/src/main/java/java/util/concurrent/BlockingDeque.java
+++ b/ojluni/src/main/java/java/util/concurrent/BlockingDeque.java
@@ -197,7 +197,7 @@
* the {@code BlockingDeque} in another thread.
*
* <p>This interface is a member of the
- * <a href="{@docRoot}/../technotes/guides/collections/index.html">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @since 1.6
diff --git a/ojluni/src/main/java/java/util/jar/Pack200.java b/ojluni/src/main/java/java/util/jar/Pack200.java
index 9211f0a..26b2ce3 100644
--- a/ojluni/src/main/java/java/util/jar/Pack200.java
+++ b/ojluni/src/main/java/java/util/jar/Pack200.java
@@ -96,7 +96,7 @@
* The deployment applications can use "Accept-Encoding=pack200-gzip". This
* indicates to the server that the client application desires a version of
* the file encoded with Pack200 and further compressed with gzip. Please
- * refer to <a href="{@docRoot}/../technotes/guides/deployment/deployment-guide/pack200.html">Java Deployment Guide</a> for more details and
+ * refer to <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/deployment/deployment-guide/pack200.html">Java Deployment Guide</a> for more details and
* techniques.
* <p>
* Unless otherwise noted, passing a <tt>null</tt> argument to a constructor or
diff --git a/ojluni/src/main/java/javax/crypto/Cipher.java b/ojluni/src/main/java/javax/crypto/Cipher.java
index 7968f2f..a872317 100644
--- a/ojluni/src/main/java/javax/crypto/Cipher.java
+++ b/ojluni/src/main/java/javax/crypto/Cipher.java
@@ -242,7 +242,7 @@
* </table>
*
* These transformations are described in the
- * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher">
* Cipher section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -597,7 +597,7 @@
* @param transformation the name of the transformation, e.g.,
* <i>DES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard transformation names.
*
@@ -634,7 +634,7 @@
* @param transformation the name of the transformation,
* e.g., <i>DES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard transformation names.
*
@@ -686,7 +686,7 @@
* @param transformation the name of the transformation,
* e.g., <i>DES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard transformation names.
*
@@ -2477,7 +2477,7 @@
* For more information on default key size in JCE jurisdiction
* policy files, please see Appendix E in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppC">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppC">
* Java Cryptography Architecture Reference Guide</a>.
*
* @param transformation the cipher transformation.
diff --git a/ojluni/src/main/java/javax/crypto/EncryptedPrivateKeyInfo.java b/ojluni/src/main/java/javax/crypto/EncryptedPrivateKeyInfo.java
index 5eeb481..b8bf169 100644
--- a/ojluni/src/main/java/javax/crypto/EncryptedPrivateKeyInfo.java
+++ b/ojluni/src/main/java/javax/crypto/EncryptedPrivateKeyInfo.java
@@ -115,7 +115,7 @@
*
* @param algName encryption algorithm name. See Appendix A in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture Reference Guide</a>
* for information about standard Cipher algorithm names.
* @param encryptedData encrypted data. The contents of
@@ -198,7 +198,7 @@
* in the constructor when such mapping is available.
* See Appendix A in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture Reference Guide</a>
* for information about standard Cipher algorithm names.
*
diff --git a/ojluni/src/main/java/javax/crypto/ExemptionMechanism.java b/ojluni/src/main/java/javax/crypto/ExemptionMechanism.java
index b90ab43..f991a66 100644
--- a/ojluni/src/main/java/javax/crypto/ExemptionMechanism.java
+++ b/ojluni/src/main/java/javax/crypto/ExemptionMechanism.java
@@ -116,7 +116,7 @@
* mechanism.
* See the ExemptionMechanism section in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Exemption">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard exemption mechanism names.
*
@@ -155,7 +155,7 @@
* @param algorithm the standard name of the requested exemption mechanism.
* See the ExemptionMechanism section in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Exemption">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard exemption mechanism names.
*
@@ -199,7 +199,7 @@
* @param algorithm the standard name of the requested exemption mechanism.
* See the ExemptionMechanism section in the
* <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Exemption">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard exemption mechanism names.
*
diff --git a/ojluni/src/main/java/javax/crypto/KeyAgreement.java b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
index fd79680..f6decbc 100644
--- a/ojluni/src/main/java/javax/crypto/KeyAgreement.java
+++ b/ojluni/src/main/java/javax/crypto/KeyAgreement.java
@@ -75,7 +75,7 @@
* </table>
*
* This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyAgreement">
* KeyAgreement section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -177,7 +177,7 @@
* @param algorithm the standard name of the requested key agreement
* algorithm.
* See the KeyAgreement section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyAgreement">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -226,7 +226,7 @@
* @param algorithm the standard name of the requested key agreement
* algorithm.
* See the KeyAgreement section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyAgreement">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -272,7 +272,7 @@
* @param algorithm the standard name of the requested key agreement
* algorithm.
* See the KeyAgreement section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyAgreement">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/crypto/KeyGenerator.java b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
index 5951eef..0b30338 100644
--- a/ojluni/src/main/java/javax/crypto/KeyGenerator.java
+++ b/ojluni/src/main/java/javax/crypto/KeyGenerator.java
@@ -156,7 +156,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyGenerator">
* KeyGenerator section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -272,7 +272,7 @@
*
* @param algorithm the standard name of the requested key algorithm.
* See the KeyGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -305,7 +305,7 @@
*
* @param algorithm the standard name of the requested key algorithm.
* See the KeyGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -349,7 +349,7 @@
*
* @param algorithm the standard name of the requested key algorithm.
* See the KeyGenerator section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyGenerator">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/crypto/Mac.java b/ojluni/src/main/java/javax/crypto/Mac.java
index f70a697..749b627 100644
--- a/ojluni/src/main/java/javax/crypto/Mac.java
+++ b/ojluni/src/main/java/javax/crypto/Mac.java
@@ -142,7 +142,7 @@
* </table>
*
* These algorithms are described in the
- * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Mac">
* Mac section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -243,7 +243,7 @@
*
* @param algorithm the standard name of the requested MAC algorithm.
* See the Mac section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Mac">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -287,7 +287,7 @@
*
* @param algorithm the standard name of the requested MAC algorithm.
* See the Mac section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Mac">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -327,7 +327,7 @@
*
* @param algorithm the standard name of the requested MAC algorithm.
* See the Mac section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Mac">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
index bd8b271..659df8d 100644
--- a/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
+++ b/ojluni/src/main/java/javax/crypto/SecretKeyFactory.java
@@ -251,7 +251,7 @@
* </table>
*
* These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
* SecretKeyFactory section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -324,7 +324,7 @@
* @param algorithm the standard name of the requested secret-key
* algorithm.
* See the SecretKeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -359,7 +359,7 @@
* @param algorithm the standard name of the requested secret-key
* algorithm.
* See the SecretKeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
@@ -405,7 +405,7 @@
* @param algorithm the standard name of the requested secret-key
* algorithm.
* See the SecretKeyFactory section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
* Java Cryptography Architecture Standard Algorithm Name Documentation</a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/crypto/interfaces/package.html b/ojluni/src/main/java/javax/crypto/interfaces/package.html
index 8b18ce2..75ef6fe 100644
--- a/ojluni/src/main/java/javax/crypto/interfaces/package.html
+++ b/ojluni/src/main/java/javax/crypto/interfaces/package.html
@@ -46,7 +46,7 @@
cryptographic provider developer guide:
<ul>
<li><a href=
- "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
<b>How to Implement a Provider for the
Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
</b></a></li>
@@ -65,7 +65,7 @@
<ul>
<li>
<a href=
- "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
<b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
Cryptography Architecture API Specification and Reference
</b></a></li>
diff --git a/ojluni/src/main/java/javax/crypto/package.html b/ojluni/src/main/java/javax/crypto/package.html
index 1518573..bd4c05a 100644
--- a/ojluni/src/main/java/javax/crypto/package.html
+++ b/ojluni/src/main/java/javax/crypto/package.html
@@ -47,7 +47,7 @@
<h2>Package Specification</h2>
<ul>
- <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html"><b>
+ <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html"><b>
<b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
Cryptography Architecture Standard Algorithm Name
Documentation</b></a></li>
@@ -59,13 +59,13 @@
<ul>
<li>
<a href=
- "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
<b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
Cryptography Architecture (JCA) Reference Guide
</b></a></li>
<li>
<a href=
- "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
<b>How to Implement a Provider in the
Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
</b></a></li>
diff --git a/ojluni/src/main/java/javax/crypto/spec/SecretKeySpec.java b/ojluni/src/main/java/javax/crypto/spec/SecretKeySpec.java
index 767c0d2..ff1258c 100644
--- a/ojluni/src/main/java/javax/crypto/spec/SecretKeySpec.java
+++ b/ojluni/src/main/java/javax/crypto/spec/SecretKeySpec.java
@@ -82,7 +82,7 @@
* @param algorithm the name of the secret-key algorithm to be associated
* with the given key material.
* See Appendix A in the <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture Reference Guide</a>
* for information about standard algorithm names.
* @exception IllegalArgumentException if <code>algorithm</code>
@@ -127,7 +127,7 @@
* @param algorithm the name of the secret-key algorithm to be associated
* with the given key material.
* See Appendix A in the <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture Reference Guide</a>
* for information about standard algorithm names.
* @exception IllegalArgumentException if <code>algorithm</code>
diff --git a/ojluni/src/main/java/javax/crypto/spec/package.html b/ojluni/src/main/java/javax/crypto/spec/package.html
index b8fd807..3e30aa1 100644
--- a/ojluni/src/main/java/javax/crypto/spec/package.html
+++ b/ojluni/src/main/java/javax/crypto/spec/package.html
@@ -61,13 +61,13 @@
<ul>
<li>
<a href=
- "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html">
<b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
Cryptography Architecture API Specification and Reference
</b></a></li>
<li>
<a href=
- "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+ "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html">
<b>How to Implement a Provider for the
Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
</b></a></li>
diff --git a/ojluni/src/main/java/javax/net/ssl/ExtendedSSLSession.java b/ojluni/src/main/java/javax/net/ssl/ExtendedSSLSession.java
index 70f98ce..2d832f3 100644
--- a/ojluni/src/main/java/javax/net/ssl/ExtendedSSLSession.java
+++ b/ojluni/src/main/java/javax/net/ssl/ExtendedSSLSession.java
@@ -45,7 +45,7 @@
* The signature algorithm name must be a standard Java Security
* name (such as "SHA1withRSA", "SHA256withECDSA", and so on).
* See Appendix A in the <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture API Specification & Reference </a>
* for information about standard algorithm names.
* <p>
@@ -73,7 +73,7 @@
* The signature algorithm name must be a standard Java Security
* name (such as "SHA1withRSA", "SHA256withECDSA", and so on).
* See Appendix A in the <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture API Specification & Reference </a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java b/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
index 7ae790c..04af51a 100644
--- a/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
+++ b/ojluni/src/main/java/javax/net/ssl/KeyManagerFactory.java
@@ -134,7 +134,7 @@
*
* @param algorithm the standard name of the requested algorithm.
* See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
@@ -170,7 +170,7 @@
* @param algorithm the standard name of the requested algorithm.
* See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
@@ -211,7 +211,7 @@
*
* @param algorithm the standard name of the requested algorithm.
* See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/net/ssl/SSLContext.java b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
index eb7322c..b580a72 100644
--- a/ojluni/src/main/java/javax/net/ssl/SSLContext.java
+++ b/ojluni/src/main/java/javax/net/ssl/SSLContext.java
@@ -82,7 +82,7 @@
* </table>
*
* This protocol is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">
* SSLContext section</a> of the
* Java Cryptography Architecture Standard Algorithm Name Documentation.
*
@@ -180,7 +180,7 @@
*
* @param protocol the standard name of the requested protocol.
* See the SSLContext section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">
* Java Cryptography Architecture Standard Algorithm Name
* Documentation</a>
* for information about standard protocol names.
@@ -216,7 +216,7 @@
*
* @param protocol the standard name of the requested protocol.
* See the SSLContext section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">
* Java Cryptography Architecture Standard Algorithm Name
* Documentation</a>
* for information about standard protocol names.
@@ -256,7 +256,7 @@
*
* @param protocol the standard name of the requested protocol.
* See the SSLContext section in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">
* Java Cryptography Architecture Standard Algorithm Name
* Documentation</a>
* for information about standard protocol names.
diff --git a/ojluni/src/main/java/javax/net/ssl/SSLParameters.java b/ojluni/src/main/java/javax/net/ssl/SSLParameters.java
index 1b9b3fb..41dcf0f 100644
--- a/ojluni/src/main/java/javax/net/ssl/SSLParameters.java
+++ b/ojluni/src/main/java/javax/net/ssl/SSLParameters.java
@@ -257,7 +257,7 @@
*
* @param algorithm The standard string name of the endpoint
* identification algorithm (or null). See Appendix A in the <a href=
- * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA">
* Java Cryptography Architecture API Specification & Reference </a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java b/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
index d76f5fb..7322169 100644
--- a/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
+++ b/ojluni/src/main/java/javax/net/ssl/TrustManagerFactory.java
@@ -136,7 +136,7 @@
*
* @param algorithm the standard name of the requested trust management
* algorithm. See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
@@ -172,7 +172,7 @@
*
* @param algorithm the standard name of the requested trust management
* algorithm. See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
@@ -213,7 +213,7 @@
*
* @param algorithm the standard name of the requested trust management
* algorithm. See the <a href=
- * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">
+ * "https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html">
* Java Secure Socket Extension Reference Guide </a>
* for information about standard algorithm names.
*
diff --git a/ojluni/src/main/java/javax/net/ssl/package.html b/ojluni/src/main/java/javax/net/ssl/package.html
index 5213137..0f87f45 100644
--- a/ojluni/src/main/java/javax/net/ssl/package.html
+++ b/ojluni/src/main/java/javax/net/ssl/package.html
@@ -37,7 +37,7 @@
<h2>Package Specification</h2>
<ul>
- <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+ <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
<b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
Cryptography Architecture Standard Algorithm Name
Documentation</b></a></li>
diff --git a/ojluni/src/main/java/javax/security/auth/login/package-info.java b/ojluni/src/main/java/javax/security/auth/login/package-info.java
index 5b43480..6bb5a06 100644
--- a/ojluni/src/main/java/javax/security/auth/login/package-info.java
+++ b/ojluni/src/main/java/javax/security/auth/login/package-info.java
@@ -28,7 +28,7 @@
* <h2>Package Specification</h2>
*
* <ul>
- * <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+ * <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">
* <b>Java™
* Cryptography Architecture Standard Algorithm Name
* Documentation</b></a></li>