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

# Keep the methods called from native code.
-keepclasseswithmembers class com.android.tv.tuner.TunerHal {
    int openDvbFrontEndFd();
    int openDvbDemuxFd();
    int openDvbDvrFd();
}
-keepclasseswithmembers class com.android.tv.tuner.*DataSource {
    int readAt(long, byte[], int, int);
    long getSize();
    void close();
}

# Keep method which is used for reflection.
-keep @com.android.tv.common.annotation.UsedByReflection class *  {*;}
-keepclasseswithmembers class * {
    @com.android.tv.common.annotation.UsedByReflection <methods>;
}

# 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
