diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /mobile/android/geckoview/proguard-rules.txt | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mobile/android/geckoview/proguard-rules.txt')
-rw-r--r-- | mobile/android/geckoview/proguard-rules.txt | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/mobile/android/geckoview/proguard-rules.txt b/mobile/android/geckoview/proguard-rules.txt new file mode 100644 index 0000000000..52c221ca6d --- /dev/null +++ b/mobile/android/geckoview/proguard-rules.txt @@ -0,0 +1,180 @@ +# Modified from https://robotsandpencils.com/blog/use-proguard-android-library/. + +# Preserve all annotations. + +-keepattributes *Annotation* + +# Preserve all .class method names. + +-keepclassmembernames class * { + java.lang.Class class$(java.lang.String); + java.lang.Class class$(java.lang.String, boolean); +} + +# Preserve all native method names and the names of their classes. + +-keepclasseswithmembernames,includedescriptorclasses class * { + native <methods>; +} + +# Preserve the special static methods that are required in all enumeration +# classes. + +-keepclassmembers class * extends java.lang.Enum { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +# Explicitly preserve all serialization members. The Serializable interface +# is only a marker interface, so it wouldn't save them. +# You can comment this out if your library doesn't use serialization. +# If your code contains serializable classes that have to be backward +# compatible, please refer to the manual. + +-keepclassmembers class * implements java.io.Serializable { + static final long serialVersionUID; + static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +# Preserve all View implementations and their special context constructors. + +-keep public class * extends android.view.View { + public <init>(android.content.Context); + public <init>(android.content.Context, android.util.AttributeSet); + public <init>(android.content.Context, android.util.AttributeSet, int); + public void set*(...); +} + +# Keep setters in Views so that animations can still work. +# See http://proguard.sourceforge.net/manual/examples.html#beans +# From tools/proguard/proguard-android.txt. +-keepclassmembers public class * extends android.view.View { + void set*(***); + *** get*(); +} + +# Preserve all classes that have special context constructors, and the +# constructors themselves. + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet); +} + +# Preserve the special fields of all Parcelable implementations. + +-keepclassmembers class * implements android.os.Parcelable { + static android.os.Parcelable$Creator CREATOR; +} + +# Preserve static fields of inner classes of R classes that might be accessed +# through introspection. + +-keepclassmembers class **.R$* { + public static <fields>; +} + +# GeckoView specific rules. + +# Keep everthing in org.mozilla.geckoview +-keep class org.mozilla.geckoview.** { *; } + +-keep class org.mozilla.gecko.SysInfo { + *; +} + +-keep class org.mozilla.gecko.mozglue.JNIObject { + *; +} + +-keep class * extends org.mozilla.gecko.mozglue.JNIObject { + *; +} + +# Keep the annotation. +-keep @interface org.mozilla.gecko.annotation.JNITarget + +# Keep classes tagged with the annotation. +-keep @org.mozilla.gecko.annotation.JNITarget class * + +# Keep all members of an annotated class. +-keepclassmembers @org.mozilla.gecko.annotation.JNITarget class * { + *; +} + +# Keep annotated members of any class. +-keepclassmembers class * { + @org.mozilla.gecko.annotation.JNITarget *; +} + +# Keep classes which contain at least one annotated element. Split over two directives +# because, according to the developer of ProGuard, "the option -keepclasseswithmembers +# doesn't combine well with the '*' wildcard" (And, indeed, using it causes things to +# be deleted that we want to keep.) +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.JNITarget <methods>; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.JNITarget <fields>; +} + +# Keep WebRTC targets. +-keep @interface org.mozilla.gecko.annotation.WebRTCJNITarget +-keep @org.mozilla.gecko.annotation.WebRTCJNITarget class * +-keepclassmembers class * { + @org.mozilla.gecko.annotation.WebRTCJNITarget *; +} +-keepclassmembers @org.mozilla.gecko.annotation.WebRTCJNITarget class * { + *; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.WebRTCJNITarget <methods>; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.WebRTCJNITarget <fields>; +} + +# Keep generator-targeted entry points. +-keep @interface org.mozilla.gecko.annotation.WrapForJNI +-keep @org.mozilla.gecko.annotation.WrapForJNI class * +-keepclassmembers,includedescriptorclasses class * { + @org.mozilla.gecko.annotation.WrapForJNI *; +} +-keepclasseswithmembers,includedescriptorclasses class * { + @org.mozilla.gecko.annotation.WrapForJNI <methods>; +} +-keepclasseswithmembers,includedescriptorclasses class * { + @org.mozilla.gecko.annotation.WrapForJNI <fields>; +} + +# Keep all members of an annotated class. +-keepclassmembers,includedescriptorclasses @org.mozilla.gecko.annotation.WrapForJNI class * { + *; +} + +# Keep Reflection targets. +-keep @interface org.mozilla.gecko.annotation.ReflectionTarget +-keep @org.mozilla.gecko.annotation.ReflectionTarget class * +-keepclassmembers class * { + @org.mozilla.gecko.annotation.ReflectionTarget *; +} +-keepclassmembers @org.mozilla.gecko.annotation.ReflectionTarget class * { + *; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.ReflectionTarget <methods>; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.annotation.ReflectionTarget <fields>; +} + +# Avoid "Warning: org.yaml.snakeyaml.scanner.ScannerImpl: can't find +# referenced method 'java.nio.ByteBuffer flip()' in library class +# java.nio.ByteBuffer". +# Between Java 1.8 and 1.9, the signature of `flip()` changed, which +# trips up proguard. + +-dontwarn org.yaml.snakeyaml.scanner.ScannerImpl |