1 # Most of the flags in this file are duplicated to refer to both the pre- and 2 # post-jarjar remapping versions of the class names. This enables the same 3 # config file to be used whether jarjar is enabled or not. 4 5 6 # Keep the factory and its public members; it's the main entry point used by the 7 # framework. 8 -keep class com.android.webview.chromium.WebViewChromiumFactoryProvider { 9 public *; 10 } 11 12 # Keep the native methods bound to plat_support. 13 -keepclasseswithmembers class com.android.webview.chromium.** { 14 native <methods>; 15 } 16 17 # Keep everything related to the org.chromium JNI interface. 18 -keepclasseswithmembers class org.chromium.** { 19 @**.AccessedByNative <fields>; 20 } 21 -keepclasseswithmembers class org.chromium.** { 22 @**.CalledByNative <methods>; 23 } 24 -keepclasseswithmembers class org.chromium.** { 25 @**.CalledByNativeUnchecked <methods>; 26 } 27 -keepclasseswithmembers class org.chromium.** { 28 native <methods>; 29 } 30 -keepclasseswithmembers class com.android.org.chromium.** { 31 @**.AccessedByNative <fields>; 32 } 33 -keepclasseswithmembers class com.android.org.chromium.** { 34 @**.CalledByNative <methods>; 35 } 36 -keepclasseswithmembers class com.android.org.chromium.** { 37 @**.CalledByNativeUnchecked <methods>; 38 } 39 -keepclasseswithmembers class com.android.org.chromium.** { 40 native <methods>; 41 } 42 43 # Keep methods which get bound to JS interfaces via reflection. 44 -keepclasseswithmembers class org.chromium.** { 45 @**.JavascriptInterface <methods>; 46 } 47 -keepclasseswithmembers class com.android.org.chromium.** { 48 @**.JavascriptInterface <methods>; 49 } 50 51 # Silence notes caused by use of @VisibleForTesting inside guava. This doesn't 52 # happen when using jarjar because @VisibleForTesting gets renamed as well. 53 -dontnote com.google.common.cache.LocalCache$ReferenceEntry 54 -dontnote com.google.common.collect.MapMakerInternalMap$ReferenceEntry 55 56 # MediaPlayerBridge uses reflection to access internal metadata. 57 -dontnote org.chromium.media.MediaPlayerBridge 58 -dontnote com.android.org.chromium.media.MediaPlayerBridge 59 60 # AndroidKeyStore uses reflection to access internal OpenSSL state. 61 -dontnote org.chromium.net.AndroidKeyStore 62 -dontnote com.android.org.chromium.net.AndroidKeyStore 63 64 # TraceEvent uses reflection to access internal trace info. 65 -dontnote org.chromium.content.common.TraceEvent 66 -dontnote com.android.org.chromium.content.common.TraceEvent 67 68 # We need to keep these explicitly as they are parameters to methods which 69 # are entry points via @calledByNative. 70 -keep class com.android.org.chromium.ui.autofill.AutofillSuggestion 71 -keep class com.android.org.chromium.content.browser.ContentVideoViewClient 72 73 # Keep finalizer stuff from google-common used via reflection 74 -keepclassmembers class com.google.common.** { 75 *** finalizeReferent(); 76 } 77 -keepclassmembers class com.google.common.** { 78 *** startFinalizer(java.lang.Class,java.lang.Object); 79 } 80 -keepclassmembers class com.android.org.chromium.com.google.common.** { 81 *** finalizeReferent(); 82 } 83 -keepclassmembers class com.android.org.chromium.com.google.common.** { 84 *** startFinalizer(java.lang.Class,java.lang.Object); 85 } 86 87 # We need to explicitly keep classes and constructors referenced only in 88 # layout resources. 89 -keep class com.android.org.chromium.ui.ColorPickerAdvanced { 90 <init>(...); 91 } 92 93 -keep class com.android.org.chromium.ui.ColorPickerSimple { 94 <init>(...); 95 } 96 97 -keep class com.android.org.chromium.ui.ColorPickerMoreButton { 98 <init>(...); 99 } 100