Home | History | Annotate | Download | only in chromium
      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 com.android.org.chromium.** {
     19   @**.AccessedByNative <fields>;
     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 }
     30 
     31 # Keep methods which get bound to JS interfaces via reflection.
     32 -keepclasseswithmembers class com.android.org.chromium.** {
     33   @**.JavascriptInterface <methods>;
     34 }
     35 
     36 # Silence notes caused by use of @VisibleForTesting inside guava. This doesn't
     37 # happen when using jarjar because @VisibleForTesting gets renamed as well.
     38 -dontnote com.google.common.annotations.VisibleForTesting
     39 
     40 # MediaPlayerBridge uses reflection to access internal metadata.
     41 -dontnote com.android.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 
     49 # ProxyChangeListener$ProxyReceiver uses reflection to access internal
     50 # android.net.ProxyProperties.
     51 -dontnote com.android.org.chromium.net.ProxyChangeListener$ProxyReceiver
     52 
     53 # com.android.org.chromium.content.app.Linker dynamically casts to $TestRunner
     54 # when running tests. We don't run these tests in WebView.
     55 -dontnote com.android.org.chromium.content.app.Linker$TestRunner
     56 
     57 # We need to keep these explicitly as they are parameters to methods which
     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$JavaScriptCallback
     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 points.
     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 }
     74 
     75 # Keep finalizer stuff from google-common used via reflection
     76 -keepclassmembers class com.android.org.chromium.com.google.common.** {
     77   *** finalizeReferent();
     78 }
     79 -keepclassmembers class com.android.org.chromium.com.google.common.** {
     80   *** startFinalizer(java.lang.Class,java.lang.Object);
     81 }
     82 
     83 # Keep support framework support for SmartClip.
     84 -keep class com.android.webview.chromium.WebViewChromium {
     85   public void extractSmartClipData(int,int,int,int);
     86   public void setSmartClipResultHandler(android.os.Handler);
     87 }
     88 
     89 # We need to explicitly keep classes and constructors referenced only in
     90 # layout resources.
     91 -keep class com.android.org.chromium.ui.ColorPickerAdvanced {
     92   <init>(...);
     93 }
     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 }
    102