# -------------------------------------------------------------------------------------------------- # 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