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