# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Proguard flags for what should be kept in the main dex. Only used
# during main dex list determination, not during actual proguarding.

-keep @**.MainDex class * {
  *;
}

-keepclasseswithmembers class * {
  public static ** asInterface(android.os.IBinder);
}

# Required when code coverage is enabled.
-keep class com.vladium.** {
  *;
}

-keep public class * extends android.app.Service {
  <init>();
}

# Used by tests for secondary dex extraction.
-keep class android.support.v4.content.ContextCompat {
  *;
}
