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 ClassSpecTest_NamedCtorSelector { 225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_ctorSelector() { 24e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment" 315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " support.Activity(); \n" + 355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " support.Activity(...); \n" + 365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " support.Activity(*); \n" + 375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " support.Activity(support.Activity); \n" + 385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " support.Activity(support.Activity, support.Fragment, keep.Please); \n" + 395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " test.Activity(); \n" + 445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " test.Activity(...); \n" + 455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " test.Activity(*); \n" + 465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " test.Activity(test.Activity); \n" + 475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " test.Activity(test.Activity, test.Fragment, keep.Please); \n" + 485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_ctorSelector_modifiers() { 53e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment" 605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public support.Activity(); \n" + 645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static support.Activity(...); \n" + 655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " !private support.Activity(*); \n" + 665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " !public !static support.Activity(support.Activity); \n" + 67e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " !protected support.Activity(support.Activity, support.Fragment, keep.Please);" + 68e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " \n" + 695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public test.Activity(); \n" + 745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static test.Activity(...); \n" + 755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " !private test.Activity(*); \n" + 765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " !public !static test.Activity(test.Activity); \n" + 775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " !protected test.Activity(test.Activity, test.Fragment, keep.Please); \n" + 785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 815d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_ctorSelector_annotation() { 83e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment", 905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Annotation" to "test/Annotation" 915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation support.Activity(); \n" + 955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation support.Activity(...); \n" + 965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation support.Activity(*); \n" + 975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation support.Activity(support.Activity); \n" + 98e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " @support.Annotation support.Activity(support.Activity, support.Fragment, " + 99e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "keep.Please); \n" + 1005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 1035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 1045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation test.Activity(); \n" + 1055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation test.Activity(...); \n" + 1065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation test.Activity(*); \n" + 1075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation test.Activity(test.Activity); \n" + 1085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation test.Activity(test.Activity, test.Fragment, keep.Please); \n" + 1095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 1125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 1135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_ctorSelector_modifiers_annotation() { 114e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 1155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 1165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 1175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 1195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 1205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment", 1215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Annotation" to "test/Annotation" 1225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 1245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 1255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation public support.Activity(); \n" + 1265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation public static support.Activity(...); \n" + 1275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation !private support.Activity(*); \n" + 1285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation !public !static support.Activity(support.Activity); \n" + 129e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " @support.Annotation !protected support.Activity(support.Activity, " + 130e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "support.Fragment, keep.Please); \n" + 1315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 1345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 1355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation public test.Activity(); \n" + 1365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation public static test.Activity(...); \n" + 1375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation !private test.Activity(*); \n" + 1385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation !public !static test.Activity(test.Activity); \n" + 139e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " @test.Annotation !protected test.Activity(test.Activity, test.Fragment, " + 140e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "keep.Please); \n" + 1415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 1445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 1455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_ctorSelector_modifiers_annotation_spaces() { 146e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 1475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 1485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 1495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 1515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 1525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment", 1535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Annotation" to "test/Annotation" 1545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 1565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 1575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation !protected \t support.Activity( support.Activity ); \n" + 1585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 1615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * { \n" + 1625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation !protected \t test.Activity(test.Activity); \n" + 1635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 166982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis 167982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis @Test fun proGuard_ctorSelector_multiple() { 168982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis ProGuardTester() 169982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis .forGivenPrefixes( 170982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "support/" 171982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis ) 172982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis .forGivenProGuardMapSet("support.**" to setOf("support.**", "androidx.**")) 173982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis .testThatGivenProGuard( 174982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-keep public class * { \n" + 175982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis " support.**(support.**); \n" + 176982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}" 177982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis ) 178982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis .rewritesTo( 179982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-keep public class * { \n" + 180982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis " support.**(support.**); \n" + 181982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}\n" + 182982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-keep public class * { \n" + 183982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis " androidx.**(support.**); \n" + 184982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}\n" + 185982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-keep public class * { \n" + 186982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis " support.**(androidx.**); \n" + 187982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}\n" + 188982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-keep public class * { \n" + 189982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis " androidx.**(androidx.**); \n" + 190982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}" 191982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis ) 192982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis } 1935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis}