blob: af3789e270a4c0915f1d0e73c576128002322a36 [file] [log] [blame]
# --------------------------------------------------------------------------------------------------
# This file contains rules to process `framework-all.jar` to generate the host side test "stub" and
# "impl" jars, without using Java annotations.
#
# Useful when:
# - The class is auto-generated and annotations can't be added.
# (We need to figure out what to do on auto-generated classes.)
# - Want to quickly change filter rules without having to rebuild framework.jar.
#
# Using this file, one can control the visibility of APIs on a per-class, per-field and per-method
# basis, but in most cases, per-class directives would be sufficient. That is:
#
# - To put the entire class, including its members and nested classes, in the "stub" jar,
# so that the test / target code can use the API, use `stubclass`.
#
# class package.class stubclass
#
# - To put the entire class, including its members and nested classes, in the "impl" jar,
# but not in the "stub" jar, use `keepclass`. Use this when you don't want to expose an API to
# tests/target directly, but it's still needed at runtime, because it's used by other "stub" APIs
# directly or indirectly.
#
# class package.class keepclass
#
# All other classes will be removed from both the stub jar and impl jar.
#
# --------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------
# Directions on auto-generated classes, where we can't use Java annotations (yet).
# --------------------------------------------------------------------------------------------------
class android.Manifest stubclass
class android.R stubclass
class android.os.PersistableBundleProto keepclass
# This is in module-utils, where using a HostStubGen annotation would be complicated, so we
# add a direction here rather than using a java annotation.
# The build file says it's deprecated, anyway...? Figure out what to do with it.
class com.android.internal.util.Preconditions keepclass
# --------------------------------------------------------------------------------------------------
# Actual framework classes
# --------------------------------------------------------------------------------------------------
# Put basic exception classes in the "impl" jar.
# We don't put them in stub yet (until something actually needs them).
class android.os.DeadObjectException keepclass
class android.os.DeadSystemRuntimeException keepclass
class android.os.NetworkOnMainThreadException keepclass
class android.os.RemoteException keepclass
class android.os.ServiceSpecificException keepclass
class android.util.AndroidException keepclass
class android.util.AndroidRuntimeException keepclass
class android.os.DeadSystemException keepclass
# For now, we only want to expose ArrayMap and Log, but they and their tests depend on
# more classes.
class android.util.ArrayMap stubclass
# Used by ArrayMap. No need to put them in the stub, but we need them in impl.
class android.util.MapCollections keepclass
class android.util.ContainerHelpers keepclass
class android.util.EmptyArray stubclass
class com.android.internal.util.XmlUtils keepclass
class com.android.internal.util.FastMath keepclass
class android.util.MathUtils keepclass
class android.util.Log stubclass
class android.util.Slog stubclass
# We don't use Log's native code, yet. Instead, the following line enables the Java substitution.
# Comment it out to disable Java substitution of Log's native methods.
class android.util.Log !com.android.hoststubgen.nativesubstitution.Log_host
# Used by log
class com.android.internal.util.FastPrintWriter keepclass
class com.android.internal.util.LineBreakBufferedWriter keepclass
class android.util.EventLog stubclass
class android.util.EventLog !com.android.hoststubgen.nativesubstitution.EventLog_host
class android.util.EventLog$Event stubclass
# Expose Context because it's referred to by AndroidTestCase, but don't need to expose any of
# its members.
class android.content.Context keep
# Expose Parcel, Parcel and there relevant classes, which are used by ArrayMapTets.
class android.os.Parcelable StubClass
class android.os.Parcel StubClass
class android.os.Parcel !com.android.hoststubgen.nativesubstitution.Parcel_host
class android.os.IBinder stubClass
class android.os.IInterface stubclass
class android.os.BadParcelableException stubclass
class android.os.BadTypeParcelableException stubclass
class android.os.BaseBundle stubclass
class android.os.Bundle stubclass
class android.os.PersistableBundle stubclass
class android.os.MessageQueue stubclass
class android.os.MessageQueue !com.android.hoststubgen.nativesubstitution.MessageQueue_host