# 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.

-keep class androidx.preference.Preference* {
    *;
}
-dontwarn androidx.core.**

# Keep classes that implements RoleBehavior, which are used by reflection.
-keep class * implements com.android.role.controller.model.RoleBehavior {
    *;
}

# Keep classes that implements RoleUiBehavior, which are used by reflection.
-keep class * implements com.android.permissioncontroller.role.ui.behavior.RoleUiBehavior {
    *;
}

-keep class com.android.car.ui.** {*;}

# Keep as this is only used by instrumentation tests for now. This can be removed once the class is
# used from code
-keep class com.android.permissioncontroller.permission.data.AttributionLabelLiveData* {
    *;
}

# for proto names for Proto.toString
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
  *** get*();
  *** set*(***);
  *** has*();
}

# Strip verbose logs.
-assumenosideeffects class android.util.Log {
  static *** v(...);
  static *** isLoggable(...);
}
-assumenosideeffects class android.util.Slog {
  static *** v(...);
}
-maximumremovedandroidloglevel 2
