#
# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Following libraries contain 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.
-dontwarn android.support.**
-dontwarn com.ibm.icu.**
-dontwarn com.google.android.exoplayer.**
-dontwarn com.android.tv.tuner.**
-dontwarn com.android.tv.dvr.**

# This is due to legacy API katniss is referencing. Seems safe.
-dontwarn com.google.android.volley.**
-dontwarn com.google.android.common.**

-keepclasseswithmembers class com.android.tv.tuner.*DataSource {
    int readAt(long, byte[], int, int);
    long getSize();
    void close();
}
-keepclasseswithmembers class com.google.android.exoplayer2.ext.ffmpeg {
   native <methods>;
}

# Configuration of proguard via annotations. Apply them to
# the elements of your program not only to ensure correct proguard
# functionality, but to document non-obvious entry points to your code to make
# it survive refactorings.

# Annotations are implemented as attributes, so we have to explicitly keep them.
# Catch all which encompasses attributes like RuntimeVisibleParameterAnnotations
# and RuntimeVisibleTypeAnnotations
-keepattributes RuntimeVisible*Annotation*

# JNI is an entry point that's hard to keep track of, so there's
# an annotation to mark fields and methods used by native code.

# Keep the annotations that proguard needs to process.
-keep class com.android.tv.common.annotation.UsedBy*

# Just because native code accesses members of a class, does not mean that the
# class itself needs to be annotated - only annotate classes that are
# referenced themselves in native code.
-keep @com.android.tv.common.annotation.UsedBy* class *
-keepclassmembers class * {
    @com.android.tv.common.annotation.UsedBy* *;
}

# For tests
-keep @android.support.annotation.VisibleForTesting class *  {*;}
-keepclasseswithmembers class * {
    @android.support.annotation.VisibleForTesting <methods>;
}

# Grpc used by epg via reflection
-keep class io.grpc.internal.DnsNameResolverProvider
