blob: 8381c4ae94f9214a1d4fdb664c716787a997e28c [file] [log] [blame]
# Most of the flags in this file are duplicated to refer to both the pre- and
# post-jarjar remapping versions of the class names. This enables the same
# config file to be used whether jarjar is enabled or not.
# Keep the factory and its public members; it's the main entry point used by the
# framework.
-keep class com.android.webview.chromium.WebViewChromiumFactoryProvider {
public *;
}
# Keep the native methods bound to plat_support.
-keepclasseswithmembers class com.android.webview.chromium.** {
native <methods>;
}
# Keep everything related to the org.chromium JNI interface.
-keepclasseswithmembers class com.android.org.chromium.** {
@**.AccessedByNative <fields>;
}
-keepclasseswithmembers class com.android.org.chromium.** {
@**.CalledByNative <methods>;
}
-keepclasseswithmembers class com.android.org.chromium.** {
@**.CalledByNativeUnchecked <methods>;
}
-keepclasseswithmembers class com.android.org.chromium.** {
native <methods>;
}
# Keep methods which get bound to JS interfaces via reflection.
-keepclasseswithmembers class com.android.org.chromium.** {
@**.JavascriptInterface <methods>;
}
# Silence notes caused by use of @VisibleForTesting inside guava. This doesn't
# happen when using jarjar because @VisibleForTesting gets renamed as well.
-dontnote com.google.common.annotations.VisibleForTesting
# MediaPlayerBridge uses reflection to access internal metadata.
-dontnote com.android.org.chromium.media.MediaPlayerBridge
# AndroidKeyStore uses reflection to access internal OpenSSL state.
-dontnote com.android.org.chromium.net.AndroidKeyStore
# TraceEvent uses reflection to access internal trace info.
-dontnote com.android.org.chromium.content.common.TraceEvent
# ProxyChangeListener$ProxyReceiver uses reflection to access internal
# android.net.ProxyProperties.
-dontnote com.android.org.chromium.net.ProxyChangeListener$ProxyReceiver
# com.android.org.chromium.content.app.Linker dynamically casts to $TestRunner
# when running tests. We don't run these tests in WebView.
-dontnote com.android.org.chromium.content.app.Linker$TestRunner
# We need to keep these explicitly as they are parameters to methods which
# are entry points via @calledByNative.
-keep class com.android.org.chromium.ui.autofill.AutofillSuggestion
-keep class com.android.org.chromium.content.browser.ContentVideoViewClient
-keep class com.android.org.chromium.ui.ColorSuggestion
-keep class com.android.org.chromium.content.browser.input.DateTimeSuggestion
-keep class com.android.org.chromium.content.browser.ContentViewCore$JavaScriptCallback
-keep class com.android.org.chromium.content_public.browser.NavigationController
# Keep these classes as they are parameters to methods that are native entry points.
-keep class com.android.org.chromium.android_webview.AwBrowserContext
-keep class com.android.org.chromium.base.library_loader.Linker$LibInfo
# Keep finalizer stuff from google-common used via reflection
-keepclassmembers class com.android.org.chromium.com.google.common.** {
*** finalizeReferent();
}
-keepclassmembers class com.android.org.chromium.com.google.common.** {
*** startFinalizer(java.lang.Class,java.lang.Object);
}
# We need to explicitly keep classes and constructors referenced only in
# layout resources.
-keep class com.android.org.chromium.ui.ColorPickerAdvanced {
<init>(...);
}
-keep class com.android.org.chromium.ui.ColorPickerSimple {
<init>(...);
}
-keep class com.android.org.chromium.ui.ColorPickerMoreButton {
<init>(...);
}