chromium/android_webview/nonembedded/java/proguard.flags

# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

-keepclassmembers class org.chromium.android_webview.AwPdfExporter {
    android.view.ViewGroup mContainerView;
}

# Keep the factory and its public members; it's the main entry point used by the
# framework. Also keep the factory's constructors as some things are using them
# via reflection; crbug.com/1462346
-keep class com.android.webview.chromium.WebViewChromiumFactoryProvider {
    public *;
    <init>(...);
}
-keep class com.android.webview.chromium.WebViewChromiumFactoryProviderFor* {
    public *;
    <init>(...);
}

-keep class * implements android.webkit.WebViewFactoryProvider$Statics {
    *;
}

-keep class com.android.webview.chromium.ContentSettingsAdapter {
    public *;
}

-keep class com.android.webview.chromium.WebViewDatabaseAdapter {
  public *;
}

# This is the main entry point for APIs. It is kept to make developing with
# unreleased Android easier.
-keep class com.android.webview.chromium.WebViewChromium {
  public *;
}

# This rule prevents class merging on R$* resource classes (for example, R$anim,
# R$styleable, R$bool). This causes issues for WebView when unused resource
# stripping, since in WebView we are forced to detect which resources are unused
# by scanning the dex file for R$<res_type>.<res_name>. Having the R$* classes
# being merged together means that R$anim.foo may now be found in R$bool.foo,
# and this mistakenly will mark the foo resouce to be removed. More details in
# crbug.com/1348329.
-keep,allowaccessmodification,allowobfuscation,allowshrinking class **.R$*

# Functor classes with native methods implemented in Android.
-keep class com.android.webview.chromium.DrawFunctor
-keep class com.android.webview.chromium.DrawGLFunctor
-keep class com.android.webview.chromium.GraphicsUtils

# The lock file object must be kept explicitly to avoid it being optimized
# away and the lock released by the object's finalizer.
-keep class org.chromium.android_webview.AwDataDirLock {
    java.nio.channels.FileLock sExclusiveFileLock;
    java.io.RandomAccessFile sLockFile;
}