# Copyright (C) 2023 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# List of APIs not supported by libcore.
# This list doesn't block anyone to add the APIs into libcore, but the APIs are not shown
# during API analysis by libcore-openjdk-analyzer.
# See UnsupportedNewApis.java for the API signature format

# Android doesn't support java.lang.Module system.
java/lang/LayerInstantiationException
java/lang/Module
java/lang/ModuleLayer
java/lang/module/Configuration
java/lang/module/FindException
java/lang/module/InvalidModuleDescriptorException
java/lang/module/ModuleDescriptor
java/lang/module/ModuleFinder
java/lang/module/ModuleReader
java/lang/module/ModuleReference
java/lang/module/ResolutionException
java/lang/module/ResolvedModule
java/lang/Class#forName(Ljava/lang/Module;Ljava/lang/String;)Ljava/lang/Class;
java/lang/Class#getModule()Ljava/lang/Module;
java/lang/ClassLoader#findClass(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;
java/lang/ClassLoader#findResource(Ljava/lang/String;Ljava/lang/String;)Ljava/net/URL;
java/lang/ClassLoader#getUnnamedModule()Ljava/lang/Module;
java/lang/StackTraceElement#<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
java/lang/StackTraceElement#getModuleName()Ljava/lang/String;
java/lang/StackTraceElement#getModuleVersion()Ljava/lang/String;
java/util/ResourceBundle#getBundle(Ljava/lang/String;Ljava/lang/Module;)Ljava/util/ResourceBundle;
java/util/ResourceBundle#getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/Module;)Ljava/util/ResourceBundle;
java/util/ServiceLoader#load(Ljava/lang/ModuleLayer;Ljava/lang/Class;)Ljava/util/ServiceLoader;

# libcore doesn't support the following i18n SPI because the i18n stack is closely
# integrated with ICU.
java/text/spi/BreakIteratorProvider
java/text/spi/CollatorProvider
java/text/spi/DateFormatProvider
java/text/spi/DateFormatSymbolsProvider
java/text/spi/DecimalFormatSymbolsProvider
java/text/spi/NumberFormatProvider
java/util/spi/CalendarDataProvider
java/util/spi/CalendarNameProvider
java/util/spi/CurrencyNameProvider
java/util/spi/LocaleNameProvider
java/util/spi/LocaleServiceProvider
java/util/spi/TimeZoneNameProvider

# libcore doesn't support Type annotation reflection APIs since Android O. http://b/30391692
java/lang/reflect/AnnotatedArrayType
java/lang/reflect/AnnotatedParameterizedType
java/lang/reflect/AnnotatedType
java/lang/reflect/AnnotatedTypeVariable
java/lang/reflect/AnnotatedWildcardType
java/lang/Class#getAnnotatedInterfaces()[Ljava/lang/reflect/AnnotatedType;
java/lang/Class#getAnnotatedSuperclass()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Constructor#getAnnotatedReceiverType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Constructor#getAnnotatedReturnType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Executable#getAnnotatedExceptionTypes()[Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Executable#getAnnotatedParameterTypes()[Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Executable#getAnnotatedReceiverType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Executable#getAnnotatedReturnType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Field#getAnnotatedType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Method#getAnnotatedReturnType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/Parameter#getAnnotatedType()Ljava/lang/reflect/AnnotatedType;
java/lang/reflect/TypeVariable#getAnnotatedBounds()[Ljava/lang/reflect/AnnotatedType;

# Please use android.icu.text.CompactDecimalFormat available since Android N. http://b/262705909
# This CompactDecimalFormat uses the same LDML TR-35 spec. It's better using the ICU one
# when the spec and implementation are written and maintained consistently.
java/text/CompactNumberFormat
java/text/NumberFormat#getCompactNumberInstance()Ljava/text/NumberFormat;
java/text/NumberFormat#getCompactNumberInstance(Ljava/util/Locale;Ljava/text/NumberFormat$Style;)Ljava/text/NumberFormat;
java/text/NumberFormat$Style#LONG:Ljava/text/NumberFormat$Style;
java/text/NumberFormat$Style#SHORT:Ljava/text/NumberFormat$Style;
java/text/NumberFormat$Style#valueOf(Ljava/lang/String;)Ljava/text/NumberFormat$Style;
java/text/NumberFormat$Style#values()[Ljava/text/NumberFormat$Style;

# Android doesn't support SecurityManager.
java/io/FilePermission#equals(Ljava/lang/Object;)Z
java/io/FilePermission#hashCode()I
java/io/FilePermission#newPermissionCollection()Ljava/security/PermissionCollection;
java/net/SocketPermission#equals(Ljava/lang/Object;)Z
java/net/SocketPermission#hashCode()I
java/net/SocketPermission#newPermissionCollection()Ljava/security/PermissionCollection;
java/net/URLPermission
java/security/AccessControlContext#equals(Ljava/lang/Object;)Z
java/security/AccessControlContext#hashCode()I
java/security/AccessController#doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
java/security/AccessController#doPrivilegedWithCombiner(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
java/security/AccessController#doPrivilegedWithCombiner(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
java/security/AllPermission#equals(Ljava/lang/Object;)Z
java/security/AllPermission#hashCode()I
java/security/AllPermission#newPermissionCollection()Ljava/security/PermissionCollection;
java/security/AuthProvider#<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
java/security/BasicPermission#equals(Ljava/lang/Object;)Z
java/security/BasicPermission#hashCode()I
java/security/BasicPermission#newPermissionCollection()Ljava/security/PermissionCollection;
java/security/CodeSource#equals(Ljava/lang/Object;)Z
java/security/CodeSource#hashCode()I
java/security/CodeSource#toString()Ljava/lang/String;
java/security/Permission#equals(Ljava/lang/Object;)Z
java/security/Permission#hashCode()I
java/security/Permission#toString()Ljava/lang/String;
java/security/PermissionCollection#elementsAsStream()Ljava/util/stream/Stream;
java/security/PermissionCollection#toString()Ljava/lang/String;
java/security/ProtectionDomain#staticPermissionsOnly()Z
java/security/ProtectionDomain#toString()Ljava/lang/String;
java/security/UnresolvedPermission#equals(Ljava/lang/Object;)Z
java/security/UnresolvedPermission#hashCode()I
java/security/UnresolvedPermission#newPermissionCollection()Ljava/security/PermissionCollection;
java/security/UnresolvedPermission#toString()Ljava/lang/String;
java/security/URIParameter
java/util/PropertyPermission#equals(Ljava/lang/Object;)Z
java/util/PropertyPermission#getActions()Ljava/lang/String;
java/util/PropertyPermission#hashCode()I
java/util/PropertyPermission#implies(Ljava/security/Permission;)Z
java/util/PropertyPermission#newPermissionCollection()Ljava/security/PermissionCollection;

# Only a limited set of javax.security.auth.login APIs are supported due to KeyStore.
# The rest of APIs are not supported.
javax/security/auth/RefreshFailedException
javax/security/auth/Refreshable
javax/security/auth/callback/ChoiceCallback
javax/security/auth/callback/ConfirmationCallback
javax/security/auth/callback/LanguageCallback
javax/security/auth/callback/NameCallback
javax/security/auth/callback/TextInputCallback
javax/security/auth/callback/TextOutputCallback
javax/security/auth/login/AccountException
javax/security/auth/login/AccountExpiredException
javax/security/auth/login/AccountLockedException
javax/security/auth/login/AccountNotFoundException
javax/security/auth/login/AppConfigurationEntry
javax/security/auth/login/AppConfigurationEntry$LoginModuleControlFlag
javax/security/auth/login/Configuration
javax/security/auth/login/Configuration$Parameters
javax/security/auth/login/ConfigurationSpi
javax/security/auth/login/CredentialException
javax/security/auth/login/CredentialExpiredException
javax/security/auth/login/CredentialNotFoundException
javax/security/auth/login/FailedLoginException
javax/security/auth/login/LoginContext
javax/security/auth/spi/LoginModule
javax/security/auth/PrivateCredentialPermission#equals(Ljava/lang/Object;)Z
javax/security/auth/PrivateCredentialPermission#hashCode()I
javax/security/auth/PrivateCredentialPermission#newPermissionCollection()Ljava/security/PermissionCollection;

# libcore doesn't intend to support loading resources not in classloader.
java/util/spi/AbstractResourceBundleProvider
java/util/spi/ResourceBundleControlProvider
java/util/spi/ResourceBundleProvider

# libcore doesn't need a provider of compiler / documentation tool on device.
java/util/spi/ToolProvider

# Neither Runtime$Version nor multi-release JARs are applicable to Android.
java/lang/Runtime$Version
java/lang/Runtime#version()Ljava/lang/Runtime$Version;
java/util/jar/Attributes$Name#MULTI_RELEASE:Ljava/util/jar/Attributes$Name;
java/util/jar/JarFile#<init>(Ljava/io/File;ZILjava/lang/Runtime$Version;)V
java/util/jar/JarFile#baseVersion()Ljava/lang/Runtime$Version;
java/util/jar/JarFile#getVersion()Ljava/lang/Runtime$Version;
java/util/jar/JarFile#isMultiRelease()Z
java/util/jar/JarFile#runtimeVersion()Ljava/lang/Runtime$Version;
java/util/jar/JarFile#versionedStream()Ljava/util/stream/Stream;
