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

# This file is for proguard flags which are applied to the combined test and
# tested code. Do not put any flags in this file which might affect the
# correctness of the .apk we are testing, since it will apply to that .apk as
# well.

# Keep all junit3 tests
-keep class * extends junit.framework.TestCase {
  *;
}

# Keep all junit4 tests
-keep @**.RunWith class * {
    *;
}

# Keep any class inherited from junit Runner since their constructor is called
# reflectively
-keep class * extends org.junit.runner.Runner {
    *;
}

# We have some "library class WebView depends on program class SslCertificate"
# warnings, and they don't affect us.
-dontwarn android.webkit.WebView*
