xref: /aosp_15_r20/external/cronet/base/android/proguard/chromium_apk.flags (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2016 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker# Contains flags that we'd like all Chromium .apks to use.
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker# Keep line number information, useful for stack traces.
8*6777b538SAndroid Build Coastguard Worker-keepattributes SourceFile,LineNumberTable
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker# Enable protobuf-related optimizations.
11*6777b538SAndroid Build Coastguard Worker-shrinkunusedprotofields
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Worker# Allowing Proguard to change modifiers.
14*6777b538SAndroid Build Coastguard Worker-allowaccessmodification
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Worker# Keep all CREATOR fields within Parcelable that are kept.
17*6777b538SAndroid Build Coastguard Worker-keepclassmembers class !cr_allowunused,** implements android.os.Parcelable {
18*6777b538SAndroid Build Coastguard Worker  public static *** CREATOR;
19*6777b538SAndroid Build Coastguard Worker}
20*6777b538SAndroid Build Coastguard Worker
21*6777b538SAndroid Build Coastguard Worker# Don't obfuscate Parcelables as they might be marshalled outside Chrome.
22*6777b538SAndroid Build Coastguard Worker# If we annotated all Parcelables that get put into Bundles other than
23*6777b538SAndroid Build Coastguard Worker# for saveInstanceState (e.g. PendingIntents), then we could actually keep the
24*6777b538SAndroid Build Coastguard Worker# names of just those ones. For now, we'll just keep them all.
25*6777b538SAndroid Build Coastguard Worker-keepnames class !cr_allowunused,** implements android.os.Parcelable {}
26*6777b538SAndroid Build Coastguard Worker
27*6777b538SAndroid Build Coastguard Worker# Keep all default constructors for used Fragments. Required since they are
28*6777b538SAndroid Build Coastguard Worker# called reflectively when fragments are reinflated after the app is killed.
29*6777b538SAndroid Build Coastguard Worker-keepclassmembers class !cr_allowunused,** extends android.app.Fragment {
30*6777b538SAndroid Build Coastguard Worker  public <init>();
31*6777b538SAndroid Build Coastguard Worker}
32*6777b538SAndroid Build Coastguard Worker-keepclassmembers class !cr_allowunused,** extends androidx.fragment.app.Fragment {
33*6777b538SAndroid Build Coastguard Worker  public <init>();
34*6777b538SAndroid Build Coastguard Worker}
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker# Keep all enum values and valueOf methods. See
37*6777b538SAndroid Build Coastguard Worker# http://proguard.sourceforge.net/index.html#manual/examples.html
38*6777b538SAndroid Build Coastguard Worker# for the reason for this. Also, see http://crbug.com/248037.
39*6777b538SAndroid Build Coastguard Worker-keepclassmembers enum !cr_allowunused,** {
40*6777b538SAndroid Build Coastguard Worker    public static **[] values();
41*6777b538SAndroid Build Coastguard Worker}
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard Worker# This is to workaround crbug.com/1204690 - an old GMS app version crashes when
44*6777b538SAndroid Build Coastguard Worker# ObjectWrapper contains > 1 fields, and this prevents R8 from inserting a
45*6777b538SAndroid Build Coastguard Worker# synthetic field.
46*6777b538SAndroid Build Coastguard Worker-keep,allowaccessmodification class !cr_allowunused,com.google.android.gms.dynamic.ObjectWrapper {
47*6777b538SAndroid Build Coastguard Worker  <fields>;
48*6777b538SAndroid Build Coastguard Worker}
49*6777b538SAndroid Build Coastguard Worker
50*6777b538SAndroid Build Coastguard Worker# Remove calls to String.format() where the result goes unused. This can mask
51*6777b538SAndroid Build Coastguard Worker# exceptions if the parameters to String.format() are invalid, but such cases
52*6777b538SAndroid Build Coastguard Worker# are generally programming bugs anyways.
53*6777b538SAndroid Build Coastguard Worker# Not using the return value generally occurs due to logging being stripped.
54*6777b538SAndroid Build Coastguard Worker-assumenosideeffects class java.lang.String {
55*6777b538SAndroid Build Coastguard Worker  static java.lang.String format(...);
56*6777b538SAndroid Build Coastguard Worker}
57*6777b538SAndroid Build Coastguard Worker
58*6777b538SAndroid Build Coastguard Worker# Allows R8 to remove static field accesses to library APIs when the results
59*6777b538SAndroid Build Coastguard Worker# are unused (E.g. tell it that it's okay to not trigger <clinit>).
60*6777b538SAndroid Build Coastguard Worker# Not using the return value generally occurs due to logging being stripped.
61*6777b538SAndroid Build Coastguard Worker-assumenosideeffects class android.**, java.** {
62*6777b538SAndroid Build Coastguard Worker  static <fields>;
63*6777b538SAndroid Build Coastguard Worker}
64*6777b538SAndroid Build Coastguard Worker
65*6777b538SAndroid Build Coastguard Worker# Keep the names of exception types, to make it easier to understand stack
66*6777b538SAndroid Build Coastguard Worker# traces in contexts where it's not trivial to deobfuscate them - for example
67*6777b538SAndroid Build Coastguard Worker# when reported to app developers who are using WebView.
68*6777b538SAndroid Build Coastguard Worker-keepnames class ** extends java.lang.Throwable {}
69