Change minification tests to also cover aggresive mode.

Bug:
Change-Id: I9e3216e01d26f89bd5d32545757c09fffb1547b4
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index c417787..384c1ff 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -348,4 +348,14 @@
     DexApplication dexApplication = new ApplicationReader(app, options, new Timing("XX")).read();
     System.out.println(SmaliWriter.smali(dexApplication, options));
   }
+
+  public enum MinifyMode {
+    NONE,
+    JAVA,
+    AGGRESSIVE;
+
+    public boolean isMinify() {
+      return this != NONE;
+    }
+  }
 }
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index f3fd9d2..65e7dca 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -135,7 +135,7 @@
     setUp(null, null);
   }
 
-  protected static List<String> proguardConfigurations = Collections.<String>emptyList();
+  protected static List<String> proguardConfigurations = Collections.emptyList();
   protected static boolean writeProguardMap = false;
 
   protected static void setUp(
diff --git a/src/test/java/com/android/tools/r8/debug/MinificationTest.java b/src/test/java/com/android/tools/r8/debug/MinificationTest.java
index db41173..f4d566c 100644
--- a/src/test/java/com/android/tools/r8/debug/MinificationTest.java
+++ b/src/test/java/com/android/tools/r8/debug/MinificationTest.java
@@ -3,8 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.debug;
 
+import com.android.tools.r8.TestBase.MinifyMode;
 import com.google.common.collect.ImmutableList;
-import java.util.Arrays;
 import java.util.Collection;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -19,35 +19,41 @@
 
   @Parameterized.Parameters(name = "minification: {0}, proguardMap: {1}")
   public static Collection minificationControl() {
-    return Arrays.asList(new Object[][] {{false, false}, {true, false}, {true, true}});
+    ImmutableList.Builder<Object> builder = ImmutableList.builder();
+    for (MinifyMode mode : MinifyMode.values()) {
+      builder.add((Object) new Object[]{mode, false});
+      if (mode.isMinify()) {
+        builder.add((Object) new Object[]{mode, true});
+      }
+    }
+    return builder.build();
   }
 
   private static boolean firstRun = true;
-  private static boolean minificationEnabled;
+  private static MinifyMode minificationMode;
 
-  public MinificationTest(boolean enableMinification, boolean writeProguardMap) throws Exception {
+  public MinificationTest(MinifyMode minificationMode, boolean writeProguardMap) throws Exception {
     // TODO(tamaskenez) The way we're shadowing and calling the static setUp() methods should be
     // updated when we refactor DebugTestBase.
     if (firstRun
-        || this.minificationEnabled != enableMinification
-        || this.writeProguardMap != writeProguardMap) {
+        || MinificationTest.minificationMode != minificationMode
+        || DebugTestBase.writeProguardMap != writeProguardMap) {
 
       firstRun = false;
-      this.minificationEnabled = enableMinification;
-      this.writeProguardMap = writeProguardMap;
+      MinificationTest.minificationMode = minificationMode;
+      DebugTestBase.writeProguardMap = writeProguardMap;
 
-      if (minificationEnabled) {
-        proguardConfigurations =
-            ImmutableList.of(
-                "-keep public class Minified { public static void main(java.lang.String[]); }");
-        setUp(
-            null,
-            pg -> {
-              pg.addKeepAttributePatterns(ImmutableList.of("SourceFile", "LineNumberTable"));
-            });
-      } else {
-        setUp(null, null);
+      if (MinificationTest.minificationMode.isMinify()) {
+        ImmutableList.Builder<String> builder = ImmutableList.builder();
+        builder.add("-keep public class Minified { public static void main(java.lang.String[]); }");
+        builder.add("-keepattributes SourceFile");
+        builder.add("-keepattributes LineNumberTable");
+        if (minificationMode == MinifyMode.AGGRESSIVE) {
+          builder.add("-overloadaggressively");
+        }
+        proguardConfigurations = builder.build();
       }
+      setUp(null, null);
     }
   }
 
@@ -56,7 +62,7 @@
 
   @Test
   public void testBreakInMainClass() throws Throwable {
-    boolean minifiedNames = (minificationEnabled && !writeProguardMap);
+    boolean minifiedNames = (minificationMode.isMinify() && !writeProguardMap);
     final String className = "Minified";
     final String methodName = minifiedNames ? "a" : "test";
     final String signature = "()V";
@@ -79,7 +85,7 @@
 
   @Test
   public void testBreakInPossiblyRenamedClass() throws Throwable {
-    boolean minifiedNames = (minificationEnabled && !writeProguardMap);
+    boolean minifiedNames = (minificationMode.isMinify() && !writeProguardMap);
     final String className = "Minified";
     final String innerClassName = minifiedNames ? "a" : "Minified$Inner";
     final String innerMethodName = minifiedNames ? "a" : "innerTest";
diff --git a/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java b/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
index c45ae37..b477ee8 100644
--- a/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/TreeShakingTest.java
@@ -7,6 +7,7 @@
 
 import com.android.tools.r8.CompilationException;
 import com.android.tools.r8.R8Command;
+import com.android.tools.r8.TestBase.MinifyMode;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
 import com.android.tools.r8.dex.Constants;
@@ -67,34 +68,29 @@
   );
   private static final Set<String> IGNORED = ImmutableSet.of(
       // there's no point in running those without obfuscation
-      "shaking1:keep-rules-repackaging.txt:DEX:false",
-      "shaking1:keep-rules-repackaging.txt:JAR:false",
-      "shaking16:keep-rules-1.txt:DEX:false",
-      "shaking16:keep-rules-1.txt:JAR:false",
-      "shaking16:keep-rules-2.txt:DEX:false",
-      "shaking16:keep-rules-2.txt:JAR:false",
-      "shaking15:keep-rules.txt:DEX:false",
-      "shaking15:keep-rules.txt:JAR:false",
-      "minifygeneric:keep-rules.txt:DEX:false",
-      "minifygeneric:keep-rules.txt:JAR:false",
-      "minifygenericwithinner:keep-rules.txt:DEX:false",
-      "minifygenericwithinner:keep-rules.txt:JAR:false",
-      // TODO(62048823): Inlining tests don't use allowaccessmodification.
-      "inlining:keep-rules.txt:DEX:true",
-      "inlining:keep-rules.txt:JAR:true",
-      "inlining:keep-rules-discard.txt:DEX:true",
-      "inlining:keep-rules-discard.txt:JAR:true"
+      "shaking1:keep-rules-repackaging.txt:DEX:NONE",
+      "shaking1:keep-rules-repackaging.txt:JAR:NONE",
+      "shaking16:keep-rules-1.txt:DEX:NONE",
+      "shaking16:keep-rules-1.txt:JAR:NONE",
+      "shaking16:keep-rules-2.txt:DEX:NONE",
+      "shaking16:keep-rules-2.txt:JAR:NONE",
+      "shaking15:keep-rules.txt:DEX:NONE",
+      "shaking15:keep-rules.txt:JAR:NONE",
+      "minifygeneric:keep-rules.txt:DEX:NONE",
+      "minifygeneric:keep-rules.txt:JAR:NONE",
+      "minifygenericwithinner:keep-rules.txt:DEX:NONE",
+      "minifygenericwithinner:keep-rules.txt:JAR:NONE"
   );
 
   // TODO(65355452): Reenable or remove inlining tests.
   private static Set<String> SKIPPED = ImmutableSet.of("inlining");
 
-  private final boolean minify;
+  private final MinifyMode minify;
 
   private enum Frontend {
     DEX, JAR
-  }
 
+  }
   private final Frontend kind;
   private final String originalDex;
   private final String programFile;
@@ -102,13 +98,14 @@
   private final List<String> keepRulesFiles;
   private final Consumer<DexInspector> inspection;
   private final BiConsumer<String, String> outputComparator;
+
   private BiConsumer<DexInspector, DexInspector> dexComparator;
 
   @Rule
   public TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest();
 
   public TreeShakingTest(String test, Frontend kind, String mainClass, List<String> keepRulesFiles,
-      boolean minify, Consumer<DexInspector> inspection,
+      MinifyMode minify, Consumer<DexInspector> inspection,
       BiConsumer<String, String> outputComparator,
       BiConsumer<DexInspector, DexInspector> dexComparator) {
     this.kind = kind;
@@ -141,9 +138,10 @@
             .addProguardConfigurationConsumer(builder -> {
               builder.setPrintMapping(true);
               builder.setPrintMappingFile(out.resolve(AndroidApp.DEFAULT_PROGUARD_MAP_FILE));
+              builder.setOverloadAggressively(minify == MinifyMode.AGGRESSIVE);
+              builder.setObfuscating(minify.isMinify());
             })
             .addLibraryFiles(JAR_LIBRARIES)
-            .setMinification(minify)
             .build();
     ToolHelper.runR8(command, options -> {
       options.inlineAccessors = inline;
@@ -414,6 +412,7 @@
     Assert.assertFalse(inspector.clazz("nestedproto1.GeneratedNestedProto$NestedTwo").isPresent());
   }
 
+
   private static void nestedproto2UnusedFieldsAreGone(DexInspector inspector) {
     ClassSubject protoClass = inspector.clazz("nestedproto2.GeneratedNestedProto$Outer");
     Assert.assertTrue(protoClass.isPresent());
@@ -426,7 +425,6 @@
     Assert.assertFalse(inspector.clazz("nestedproto2.GeneratedNestedProto$NestedTwo").isPresent());
   }
 
-
   private static void enumprotoUnusedFieldsAreGone(DexInspector inspector) {
     ClassSubject protoClass = inspector.clazz("enumproto.GeneratedEnumProto$Enum");
     Assert.assertTrue(protoClass.isPresent());
@@ -833,18 +831,16 @@
     if (SKIPPED.contains(test)) {
       return;
     }
-    addTestCase(testCases, test, Frontend.JAR, mainClass, keepName, keepList, false, inspection,
-        outputComparator, dexComparator);
-    addTestCase(testCases, test, Frontend.DEX, mainClass, keepName, keepList, false, inspection,
-        outputComparator, dexComparator);
-    addTestCase(testCases, test, Frontend.JAR, mainClass, keepName, keepList, true, inspection,
-        outputComparator, dexComparator);
-    addTestCase(testCases, test, Frontend.DEX, mainClass, keepName, keepList, true, inspection,
-        outputComparator, dexComparator);
+    for (MinifyMode mode : MinifyMode.values()) {
+      addTestCase(testCases, test, Frontend.JAR, mainClass, keepName, keepList, mode, inspection,
+          outputComparator, dexComparator);
+      addTestCase(testCases, test, Frontend.DEX, mainClass, keepName, keepList, mode, inspection,
+          outputComparator, dexComparator);
+    }
   }
 
   private static void addTestCase(List<Object[]> testCases, String test, Frontend kind,
-      String mainClass, String keepName, List<String> keepList, boolean minify,
+      String mainClass, String keepName, List<String> keepList, MinifyMode minify,
       Consumer<DexInspector> inspection, BiConsumer<String, String> outputComparator,
       BiConsumer<DexInspector, DexInspector> dexComparator) {
     if (!IGNORED_FLAGS.contains(test + ":" + keepName)
@@ -910,13 +906,15 @@
     if (dexComparator != null) {
       DexInspector ref = new DexInspector(Paths.get(originalDex));
       DexInspector inspector = new DexInspector(generated,
-          minify ? temp.getRoot().toPath().resolve(DEFAULT_PROGUARD_MAP_FILE).toString() : null);
+          minify.isMinify() ? temp.getRoot().toPath().resolve(DEFAULT_PROGUARD_MAP_FILE).toString()
+              : null);
       dexComparator.accept(ref, inspector);
     }
 
     if (inspection != null) {
       DexInspector inspector = new DexInspector(generated,
-          minify ? temp.getRoot().toPath().resolve(DEFAULT_PROGUARD_MAP_FILE).toString() : null);
+          minify.isMinify() ? temp.getRoot().toPath().resolve(DEFAULT_PROGUARD_MAP_FILE).toString()
+              : null);
       inspection.accept(inspector);
     }
   }