15d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis/*
2ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlis * Copyright 2018 The Android Open Source Project
35d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
45d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Licensed under the Apache License, Version 2.0 (the "License");
55d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * you may not use this file except in compliance with the License.
65d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * You may obtain a copy of the License at
75d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
84a360e3a3af230badc847867c117f605367170aaFilip Pavlis *      http://www.apache.org/licenses/LICENSE-2.0
95d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Unless required by applicable law or agreed to in writing, software
115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * distributed under the License is distributed on an "AS IS" BASIS,
125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * See the License for the specific language governing permissions and
144a360e3a3af230badc847867c117f605367170aaFilip Pavlis * limitations under the License.
155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis */
165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
17ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlispackage com.android.tools.build.jetifier.processor.transform.proguard
185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisimport org.junit.Test
205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisclass ProguardSamplesTest {
225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_sample() {
24e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/app/",
275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/view/",
285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/content/",
295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/os/",
305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/webkit/"
315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/app/Activity" to "test/app/Activity",
345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/app/Application" to "test/app/Application",
355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/view/View" to "test/view/View",
365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/view/MenuItem" to "test/view/MenuItem",
375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/content/Context" to "test/content/Context",
385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/os/Parcelable" to "test/os/Parcelable",
395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/webkit/JavascriptInterface" to "test/webkit/JavascriptInterface"
405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
42e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-injars      bin/classes \n" +
43e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-injars      libs \n" +
44e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-outjars     bin/classes-processed.jar \n" +
45e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar \n" +
46e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
47e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-dontpreverify \n" +
48e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-repackageclasses '' \n" +
49e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-allowaccessmodification \n" +
50e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-optimizations !code/simplification/arithmetic \n" +
51e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepattributes *Annotation* \n" +
52e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
53e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keep public class * extends android.app.Activity \n" +
54e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keep public class * extends android.app.Application \n" +
55e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                " \n" +
56e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keep public class * extends android.view.View { \n" +
57e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "      public <init>(android.content.Context); \n" +
58e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "      public <init>(android.content.Context, android.util.AttributeSet); \n" +
59e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "      public <init>(android.content.Context, android.util.AttributeSet, int); \n" +
60e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "      public void set*(...); \n" +
61e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
62e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
63e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclasseswithmembers class * { \n" +
64e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    public <init>(android.content.Context, android.util.AttributeSet); \n" +
65e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
66e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
67e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclasseswithmembers class * { \n" +
68e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    public <init>(android.content.Context, android.util.AttributeSet, int); \n" +
69e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
70e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
71e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclassmembers class * extends android.content.Context { \n" +
72e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    public void *(android.view.View); \n" +
73e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    public void *(android.view.MenuItem); \n" +
74e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
75e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
76e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclassmembers class * implements android.os.Parcelable { \n" +
77e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    static ** CREATOR; \n" +
78e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
79e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
80e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclassmembers class **.R\$* { \n" +
81e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    public static <fields>; \n" +
82e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} \n" +
83e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "\n" +
84e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "-keepclassmembers class * { \n" +
85e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "    @android.webkit.JavascriptInterface <methods>; \n" +
86e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "} "
875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-injars      bin/classes \n" +
905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-injars      libs \n" +
915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-outjars     bin/classes-processed.jar \n" +
925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar \n" +
935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-dontpreverify \n" +
955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-repackageclasses '' \n" +
965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-allowaccessmodification \n" +
975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-optimizations !code/simplification/arithmetic \n" +
985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepattributes *Annotation* \n" +
995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.app.Activity \n" +
1015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.app.Application \n" +
1025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                " \n" +
1035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.view.View { \n" +
1045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "      public <init>(test.content.Context); \n" +
1055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "      public <init>(test.content.Context, android.util.AttributeSet); \n" +
1065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "      public <init>(test.content.Context, android.util.AttributeSet, int); \n" +
1075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "      public void set*(...); \n" +
1085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclasseswithmembers class * { \n" +
1115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public <init>(test.content.Context, android.util.AttributeSet); \n" +
1125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclasseswithmembers class * { \n" +
1155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public <init>(test.content.Context, android.util.AttributeSet, int); \n" +
1165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclassmembers class * extends test.content.Context { \n" +
1195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public void *(test.view.View); \n" +
1205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public void *(test.view.MenuItem); \n" +
1215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclassmembers class * implements test.os.Parcelable { \n" +
1245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    static ** CREATOR; \n" +
1255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclassmembers class **.R\$* { \n" +
1285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public static <fields>; \n" +
1295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} \n" +
1305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
1315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keepclassmembers class * { \n" +
1325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    @test.webkit.JavascriptInterface <methods>; \n" +
1335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "} "
1345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_sample2() {
138e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/"
1415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/preference/Preference" to "test/Preference"
1445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class android.support.v7.preference.Preference {\n" +
1475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(android.content.Context, android.util.AttributeSet);\n" +
1485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}\n" +
1495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends android.support.v7.preference.Preference {\n" +
1505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(android.content.Context, android.util.AttributeSet);\n" +
1515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class test.Preference {\n" +
1555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(android.content.Context, android.util.AttributeSet);\n" +
1565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}\n" +
1575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.Preference {\n" +
1585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(android.content.Context, android.util.AttributeSet);\n" +
1595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_sample3() {
164e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/design/",
1675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/"
1685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
1715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/widget/RoundRectDrawable" to "test/RoundRectDrawable"
1725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenProGuardMap(
1745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/design.**" to "test/design.**",
1755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/design/R\$*" to "test/design/R\$*"
1765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-dontwarn android.support.design.**\n" +
1795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class android.support.design.** { *; }\n" +
1805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface android.support.design.** { *; }\n" +
1815d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class android.support.design.R\$* { *; }\n" +
1825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class android.support.v7.widget.RoundRectDrawable { *; }"
1835d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-dontwarn test.design.**\n" +
1865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class test.design.** { *; }\n" +
1875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface test.design.** { *; }\n" +
1885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class test.design.R\$* { *; }\n" +
1895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class test.RoundRectDrawable { *; }"
1905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_sample4() {
194e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/design/",
1975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/",
1985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v4/"
1995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
2015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/widget/LinearLayoutManager" to "test/LinearLayoutManager",
2025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v4/view/ActionProvider" to "test/ActionProvider"
2035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenProGuardMap(
2055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/**" to "test/v7/**",
2065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/widget/**" to "test/v7/widget/**",
2075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/internal/widget/**" to "test/v7/internal/widget/**",
2085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "android/support/v7/internal/**" to "test/v7/internal/**"
2095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
2115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-dontwarn android.support.v7.**\n" +
2125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class android.support.v7.widget.** { *; }\n" +
2135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class android.support.v7.internal.widget.** { *; }\n" +
2145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class android.support.v7.widget.LinearLayoutManager { *; }\n" +
2155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class android.support.v7.internal.** { *; }\n" +
2165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface android.support.v7.internal.** { *; }\n" +
2175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
2185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class android.support.v7.** { *; }\n" +
2195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface android.support.v7.** { *; }\n" +
2205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
2215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends android.support.v4.view.ActionProvider {\n" +
2225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public <init>(android.content.Context);"
2235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
2255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-dontwarn test.v7.**\n" +
2265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class test.v7.widget.** { *; }\n" +
2275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class test.v7.internal.widget.** { *; }\n" +
2285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class test.LinearLayoutManager { *; }\n" +
2295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class test.v7.internal.** { *; }\n" +
2305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface test.v7.internal.** { *; }\n" +
2315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
2325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep class test.v7.** { *; }\n" +
2335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep interface test.v7.** { *; }\n" +
2345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "\n" +
2355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.ActionProvider {\n" +
2365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "    public <init>(android.content.Context);"
2375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
2395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
2405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_sample5() {
241e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
2425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
2435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
2445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
2465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
2475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
2485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
2495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
2515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends support.Activity { \n" +
2525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <fields>; \n" +
2535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !static <methods>; \n" +
2545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public support.Fragment height; \n" +
2555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <fields>; \n" +
2565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public not.related.Type width; public support.Fragment width; \n" +
2575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  ignoreMe; \n" +
2585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public support.Fragment get(); \n" +
259982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
260982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-dontwarn support.**"
2615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
2635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * extends test.Activity { \n" +
2645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <fields>; \n" +
2655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !static <methods>; \n" +
2665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public test.Fragment height; \n" +
2675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <fields>; \n" +
2685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public not.related.Type width; public test.Fragment width; \n" +
2695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  ignoreMe; \n" +
2705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public test.Fragment get(); \n" +
271982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
272982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-dontwarn test.**"
2735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
2755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis}