# Ravenwood "policy" file for framework-minus-apex.

# Keep all AIDL interfaces
class :aidl stubclass

# Collections
class android.util.ArrayMap stubclass
class android.util.ArraySet stubclass
class android.util.LongSparseArray stubclass
class android.util.SparseArrayMap stubclass
class android.util.SparseArray stubclass
class android.util.SparseBooleanArray stubclass
class android.util.SparseIntArray stubclass
class android.util.SparseLongArray stubclass
class android.util.ContainerHelpers stubclass
class android.util.EmptyArray stubclass
class android.util.MapCollections stubclass

# Logging
class android.util.Log stubclass
class android.util.Log !com.android.hoststubgen.nativesubstitution.Log_host
class android.util.LogPrinter stubclass
class android.util.LocalLog stubclass

# String Manipulation
class android.util.Printer stubclass
class android.util.PrintStreamPrinter stubclass
class android.util.PrintWriterPrinter stubclass
class android.util.StringBuilderPrinter stubclass
class android.util.IndentingPrintWriter stubclass

# Properties
class android.util.Property stubclass
class android.util.FloatProperty stubclass
class android.util.IntProperty stubclass
class android.util.NoSuchPropertyException stubclass
class android.util.ReflectiveProperty stubclass

# Exceptions
class android.util.AndroidException stubclass
class android.util.AndroidRuntimeException stubclass

# JSON
class android.util.JsonReader stubclass
class android.util.JsonWriter stubclass
class android.util.MalformedJsonException stubclass

# Base64
class android.util.Base64 stubclass
class android.util.Base64DataException stubclass
class android.util.Base64InputStream stubclass
class android.util.Base64OutputStream stubclass

# Data Holders
class android.util.MutableFloat stubclass
class android.util.MutableShort stubclass
class android.util.MutableBoolean stubclass
class android.util.MutableByte stubclass
class android.util.MutableChar stubclass
class android.util.MutableDouble stubclass
class android.util.Pair stubclass
class android.util.Range stubclass
class android.util.Rational stubclass
class android.util.Size stubclass
class android.util.SizeF stubclass

# Proto
class android.util.proto.EncodedBuffer stubclass
class android.util.proto.ProtoInputStream stubclass
class android.util.proto.ProtoOutputStream stubclass
class android.util.proto.ProtoParseException stubclass
class android.util.proto.ProtoStream stubclass
class android.util.proto.ProtoUtils stubclass
class android.util.proto.WireTypeMismatchException stubclass

# Misc
class android.util.Dumpable stubclass
class android.util.DebugUtils stubclass
class android.util.MathUtils stubclass
class android.util.Patterns stubclass
class android.util.UtilConfig stubclass

# Internals
class com.android.internal.util.FastMath stubclass
class com.android.internal.util.FastPrintWriter stubclass
class com.android.internal.util.GrowingArrayUtils stubclass
class com.android.internal.util.LineBreakBufferedWriter stubclass
class com.android.internal.util.Parcelling stubclass
class com.android.internal.util.Preconditions stubclass
class com.android.internal.util.StringPool stubclass

class com.android.internal.os.SomeArgs stubclass

# Parcel
class android.os.ParcelFormatException stubclass
class android.os.BadParcelableException stubclass
class android.os.BadTypeParcelableException stubclass

# Binder
class android.os.DeadObjectException stubclass
class android.os.DeadSystemException stubclass
class android.os.RemoteException stubclass
class android.os.TransactionTooLargeException stubclass

# Containers
class android.os.BaseBundle stubclass
class android.os.Bundle stubclass
class android.os.PersistableBundle stubclass

# Misc
class android.os.HandlerExecutor stubclass
class android.os.PatternMatcher stubclass
class android.os.ParcelUuid stubclass

# XML
class com.android.internal.util.XmlPullParserWrapper stubclass
class com.android.internal.util.XmlSerializerWrapper stubclass
class com.android.internal.util.XmlUtils stubclass

class com.android.modules.utils.BinaryXmlPullParser stubclass
class com.android.modules.utils.BinaryXmlSerializer stubclass
class com.android.modules.utils.FastDataInput stubclass
class com.android.modules.utils.FastDataOutput stubclass
class com.android.modules.utils.ModifiedUtf8 stubclass
class com.android.modules.utils.TypedXmlPullParser stubclass
class com.android.modules.utils.TypedXmlSerializer stubclass

# Uri
class android.net.Uri stubclass
class android.net.UriCodec stubclass

# Just enough to support mocking, no further functionality
class android.content.Context stub
    method <init> ()V stub
class android.content.pm.PackageManager stub
    method <init> ()V stub
