OLD | NEW |
---|---|
1 # Most of the flags in this file are duplicated to refer to both the pre- and | 1 # Don't rename anything, it makes stack traces unintelligible. We only allow the |
2 # post-jarjar remapping versions of the class names. This enables the same | 2 # obfuscation pass to run so that we can discard attributes like local variable |
3 # config file to be used whether jarjar is enabled or not. | 3 # tables. |
4 -keepnames class *** { *; } | |
4 | 5 |
6 # Keep source file and line number information for stack traces. | |
7 -keepattributes SourceFile,LineNumberTable | |
8 | |
9 # Keep all runtime visible annotations. | |
10 -keepattributes RuntimeVisibleAnnotations | |
11 | |
12 # Disable optimization as this causes proguard to remove seemingly random stuff, | |
13 # including things explicitly kept in this configuration. | |
14 -dontoptimize | |
5 | 15 |
6 # Keep the factory and its public members; it's the main entry point used by the | 16 # Keep the factory and its public members; it's the main entry point used by the |
7 # framework. | 17 # framework. |
8 -keep class com.android.webview.chromium.WebViewChromiumFactoryProvider { | 18 -keep class com.android.webview.chromium.WebViewChromiumFactoryProvider { |
9 public *; | 19 public *; |
10 } | 20 } |
11 | 21 |
12 # Keep the native methods bound to plat_support. | 22 # Keep JNI interfaces. |
13 -keepclasseswithmembers class com.android.webview.chromium.** { | 23 -keepclasseswithmembers class com.android.webview.chromium.**,org.chromium.** { |
dgn
2015/07/02 16:10:00
Why not the grouped format like we do in chrome?
| |
24 @**.AccessedByNative <fields>; | |
25 } | |
26 -keepclasseswithmembers class com.android.webview.chromium.**,org.chromium.** { | |
27 @**.CalledByNative <methods>; | |
28 } | |
29 -keepclasseswithmembers class com.android.webview.chromium.**,org.chromium.** { | |
30 @**.CalledByNativeUnchecked <methods>; | |
31 } | |
32 -keepclasseswithmembers class com.android.webview.chromium.**,org.chromium.** { | |
14 native <methods>; | 33 native <methods>; |
15 } | 34 } |
16 | 35 |
17 # Keep everything related to the org.chromium JNI interface. | 36 # Keep things explicitly marked as used by reflection |
18 -keepclasseswithmembers class com.android.org.chromium.** { | 37 -keepclasseswithmembers class com.android.webview.chromium.**,org.chromium.** { |
19 @**.AccessedByNative <fields>; | 38 @**.UsedByReflection *; |
20 } | |
21 -keepclasseswithmembers class com.android.org.chromium.** { | |
22 @**.CalledByNative <methods>; | |
23 } | |
24 -keepclasseswithmembers class com.android.org.chromium.** { | |
25 @**.CalledByNativeUnchecked <methods>; | |
26 } | |
27 -keepclasseswithmembers class com.android.org.chromium.** { | |
28 native <methods>; | |
29 } | 39 } |
30 | 40 |
31 # Keep methods which get bound to JS interfaces via reflection. | 41 # Linker dynamically casts to $TestRunner when running tests. We don't run these |
32 -keepclasseswithmembers class com.android.org.chromium.** { | 42 # tests in WebView. |
33 @**.JavascriptInterface <methods>; | 43 -dontnote org.chromium.base.library_loader.Linker$TestRunner |
34 } | |
35 | 44 |
36 # Silence notes caused by use of @VisibleForTesting inside guava. This doesn't | 45 # Don't note about the API 21 compatibility code which references various |
37 # happen when using jarjar because @VisibleForTesting gets renamed as well. | 46 # hidden APIs via reflection. |
38 -dontnote com.google.common.annotations.VisibleForTesting | 47 -dontnote com.android.webview.chromium.WebViewDelegateFactory$Api21Compatibility Delegate |
48 | |
49 # DefaultAndroidKeyStore uses reflection to access internal OpenSSL state. | |
50 -dontnote org.chromium.net.DefaultAndroidKeyStore | |
39 | 51 |
40 # MediaPlayerBridge uses reflection to access internal metadata. | 52 # MediaPlayerBridge uses reflection to access internal metadata. |
41 -dontnote com.android.org.chromium.media.MediaPlayerBridge | 53 -dontnote org.chromium.media.MediaPlayerBridge |
42 | |
43 # AndroidKeyStore uses reflection to access internal OpenSSL state. | |
44 -dontnote com.android.org.chromium.net.AndroidKeyStore | |
45 | |
46 # TraceEvent uses reflection to access internal trace info. | |
47 -dontnote com.android.org.chromium.content.common.TraceEvent | |
48 | 54 |
49 # ProxyChangeListener$ProxyReceiver uses reflection to access internal | 55 # ProxyChangeListener$ProxyReceiver uses reflection to access internal |
50 # android.net.ProxyProperties. | 56 # android.net.ProxyProperties. |
51 -dontnote com.android.org.chromium.net.ProxyChangeListener$ProxyReceiver | 57 -dontnote org.chromium.net.ProxyChangeListener$ProxyReceiver |
52 | 58 |
53 # com.android.org.chromium.content.app.Linker dynamically casts to $TestRunner | 59 # Silence warnings about reflection used to check for onShow/HideCustomView. |
54 # when running tests. We don't run these tests in WebView. | 60 # This class is not really kept since it's in a library jar. |
55 -dontnote com.android.org.chromium.content.app.Linker$TestRunner | 61 -keep class android.webkit.WebChromeClient { |
56 | 62 void onShowCustomView(...); |
57 # We need to keep these explicitly as they are parameters to methods which | 63 void onHideCustomView(); |
sgurun-gerrit only
2015/07/06 17:37:24
Why don't we need this section anymore?
Torne
2015/07/07 10:56:59
The descriptor classes are always referenced (by t
| |
58 # are entry points via @calledByNative. | |
59 -keep class com.android.org.chromium.ui.autofill.AutofillSuggestion | |
60 -keep class com.android.org.chromium.content.browser.ContentVideoViewClient | |
61 -keep class com.android.org.chromium.ui.ColorSuggestion | |
62 -keep class com.android.org.chromium.content.browser.input.DateTimeSuggestion | |
63 -keep class com.android.org.chromium.content.browser.ContentViewCore$JavaScriptC allback | |
64 -keep class com.android.org.chromium.content_public.browser.NavigationController | |
65 | |
66 # Keep these classes as they are parameters to methods that are native entry poi nts. | |
67 -keep class com.android.org.chromium.android_webview.AwBrowserContext | |
68 -keep class com.android.org.chromium.base.library_loader.Linker$LibInfo | |
69 | |
70 # Keep this class and members as accessed via reflection | |
71 -keep class com.android.webview.chromium.Drp { | |
72 public *; | |
73 } | 64 } |
74 | 65 |
75 # Keep finalizer stuff from google-common used via reflection | 66 # Accessed via reflection |
76 -keepclassmembers class com.android.org.chromium.com.google.common.** { | 67 -keep class com.android.webview.chromium.Drp { |
77 *** finalizeReferent(); | 68 public java.lang.String KEY; |
78 } | |
79 -keepclassmembers class com.android.org.chromium.com.google.common.** { | |
80 *** startFinalizer(java.lang.Class,java.lang.Object); | |
81 } | 69 } |
82 | 70 |
83 # Keep support framework support for SmartClip. | 71 # Keep framework support for SmartClip. |
84 -keep class com.android.webview.chromium.WebViewChromium { | 72 -keep class com.android.webview.chromium.WebViewChromium { |
85 public void extractSmartClipData(int,int,int,int); | 73 public void extractSmartClipData(int,int,int,int); |
86 public void setSmartClipResultHandler(android.os.Handler); | 74 public void setSmartClipResultHandler(android.os.Handler); |
87 } | 75 } |
88 | 76 |
89 # We need to explicitly keep classes and constructors referenced only in | 77 # Ignore notes about the support library's use of reflection. |
90 # layout resources. | 78 -dontnote android.support.** |
91 -keep class com.android.org.chromium.ui.ColorPickerAdvanced { | 79 |
92 <init>(...); | 80 # Keep all enum values and valueOf methods. See |
81 # http://proguard.sourceforge.net/index.html#manual/examples.html | |
82 # for the reason for this. Also, see http://crbug.com/248037. | |
83 -keepclassmembers enum * { | |
84 public static **[] values(); | |
85 public static ** valueOf(java.lang.String); | |
93 } | 86 } |
94 | |
95 -keep class com.android.org.chromium.ui.ColorPickerSimple { | |
96 <init>(...); | |
97 } | |
98 | |
99 -keep class com.android.org.chromium.ui.ColorPickerMoreButton { | |
100 <init>(...); | |
101 } | |
OLD | NEW |