# Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Contains flags that can be safely shared with Cronet, and thus would be # appropriate for third-party apps to include. # Keep all annotation related attributes that can affect runtime -keepattributes RuntimeVisible*Annotations -keepattributes AnnotationDefault # Keep the annotations, because if we don't, the ProGuard rules that use them # will not be respected. These classes then show up in our final dex, which we # do not want - see crbug.com/628226. -keep @interface org.chromium.base.annotations.AccessedByNative -keep @interface org.chromium.base.annotations.CalledByNative -keep @interface org.chromium.base.annotations.CalledByNativeUnchecked -keep @interface org.chromium.base.annotations.RemovableInRelease -keep @interface org.chromium.base.annotations.UsedByReflection # Keeps for class level annotations. -keep @org.chromium.base.annotations.UsedByReflection class * # Keeps for method level annotations. -keepclasseswithmembers class * { @org.chromium.base.annotations.AccessedByNative ; } -keepclasseswithmembers,includedescriptorclasses class * { @org.chromium.base.annotations.CalledByNative ; } -keepclasseswithmembers,includedescriptorclasses class * { @org.chromium.base.annotations.CalledByNativeUnchecked ; } -keepclasseswithmembers class * { @org.chromium.base.annotations.UsedByReflection ; } -keepclasseswithmembers class * { @org.chromium.base.annotations.UsedByReflection ; } -keepclasseswithmembers,includedescriptorclasses class * { native ; } # Remove methods annotated with this if their return value is unused. -assumenosideeffects class ** { @org.chromium.base.annotations.RemovableInRelease ; } # Keep all CREATOR fields within Parcelable that are kept. -keepclassmembers class org.chromium.** implements android.os.Parcelable { public static *** CREATOR; } # Don't obfuscate Parcelables as they might be marshalled outside Chrome. # If we annotated all Parcelables that get put into Bundles other than # for saveInstanceState (e.g. PendingIntents), then we could actually keep the # names of just those ones. For now, we'll just keep them all. -keepnames class org.chromium.** implements android.os.Parcelable # Keep all enum values and valueOf methods. See # http://proguard.sourceforge.net/index.html#manual/examples.html # for the reason for this. Also, see http://crbug.com/248037. -keepclassmembers enum org.chromium.** { public static **[] values(); }