blob: 9533aaefc4d49392ff90c648bbd30fc496a1c2bf [file] [log] [blame]
# Keep line number information, useful for stack traces.
-keepattributes SourceFile,LineNumberTable
# Keep the annotations.
-keep @interface ***
# Disable obfuscation for the following two packages.
-keepnames class com.google.android.apps.chrome.**,org.chromium.** {
*;
}
# Keep all the primitive and String constants for for the following two packages.
-keepclassmembers class com.google.android.apps.chrome.**,org.chromium.** {
!private static final % *;
!private static final java.lang.String *;
}
# Keep code annotated with the following annotations.
-keep class com.google.android.apps.chrome.**,org.chromium.** {
@**.AccessedByNative <fields>;
@**.CalledByNative <methods>;
@**.CalledByNativeUnchecked <methods>;
@**.JavascriptInterface <methods>;
@**.NativeCall <methods>;
@**.UsedByReflection <methods>;
@**.VisibleForTesting *;
native <methods>;
}
# Keep all runtime visible annotations
-keepattributes RuntimeVisibleAnnotations
# Remove methods annotated with this if their return value is unused
-assumenosideeffects class ** {
@org.chromium.base.annotations.RemovableInRelease <methods>;
}
# TODO(aurimas): figure out why we need to keep these classes.
-keep class org.chromium.base.test.** {
*;
}
# Keep protobuf code used via reflection
# TODO(tonyg): Removing these -keeps results in new notes, but nothing seems to
# break. This exclusion costs almost 100k of dex size so consider replacing it
# with a -dontnote after more testing.
-keep class com.google.protobuf.** {
*** newBuilder();
*** parseFrom(java.io.InputStream);
}
# Keep the client interfaces for cacheinvalidation as they are used as
# argument types for some of our code that we're keeping and proguard warns
# otherwise.
-keep class com.google.ipc.invalidation.external.client.** {
*;
}
# 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 * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Keep all Parcelables as they might be marshalled outside Chrome.
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
# SearchView is used in website_preferences_menu.xml and is constructed by
# Android using reflection.
-keep class android.support.v7.widget.SearchView {
public <init>(...);
}
# Google Play Services warnings are about its resources.
-dontwarn com.google.android.gms.R**
# TODO(yfriedman): Remove when crbug.com/488192 is fixed.
-dontwarn org.apache.http.**
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**
# Proguard mistakenly optimizes away some null checks on final fields
# in the support library.
# See https://sourceforge.net/p/proguard/bugs/531/#fdc9/41e2
-keepclassmembers,allowshrinking,allowobfuscation class android.support.v7.widget.AppCompatButton {
!static final <fields>;
}
# Everything below this is kept because they are referenced by the test APK.
-dontwarn javax.annotation.Nullable
-keep class android.support.v7.mediarouter.R* {
*;
}
-keep class android.support.v7.media.MediaRouteProvider** {
*;
}
-keep class android.support.v4.app.FragmentManager** {
*;
}
-keep class android.support.v4.app.DialogFragment** {
*;
}
-keep class android.support.v7.app.AlertDialog** {
*;
}
-keep class com.google.android.gms.cast.CastMediaControlIntent* {
*;
}
-keepnames class com.google.android.gms.gcm.** {
*;
}
-keepclassmembers class com.google.android.gms.gcm.TaskParams {
public <init>(java.lang.String);
}
-keepnames class jp.tomorrowkey.android.gifplayer.** {
public *;
}
# Used in tests.
-keep class android.support.v4.view.ViewCompat {
public static int getLayoutDirection(android.view.View);
}
# flingViewport is used by Android WebView and a Chrome test.
-keepclassmembers class org.chromium.content.browser.ContentViewCore {
public void flingViewport(long, int, int);
}
# TODO(aurimas): remove this when Google Play Services no longer uses setLatestEventInfo call
# that was deprecated in Android M. It is save to suppress this according to b/18510449.
-dontwarn android.app.Notification
# IntentUtils uses reflection to access a method that is hidden until API level 18.
-dontnote org.chromium.chrome.browser.util.IntentUtils
# Needed to compile ChromeTest.apk
-keep class android.support.customtabs.ICustomTabsCallback** {
*;
}
# Needed to run ChromeTest.apk
-keepnames class com.google.android.gms.common.GoogleApiAvailability {
*;
}
#-keep public class android.net.http.SslCertificate
#-keep public class android.webkit.WebVie
#-dontwarn android.webkit.WebView
-dontwarn android.net.http.SslCertificate
# Needed for assertions in BaseChromiumApplication.
# TODO(twellington): Remove these two lines when support for detecting a debug
# build lands (https://codereview.chromium.org/1597273005/).
-keep class android.support.v7.app.ToolbarActionBar$ToolbarCallbackWrapper {*;}
-keep class android.support.v7.internal.app.ToolbarActionBar$ToolbarCallbackWrapper {*;}