Revert "Proguard config builder: add keep-all rule/attrs if nothing specified."

This reverts commit 30ebba33c9f110a8cd3196cdea1c2c47df38bad8.

Reason for revert: breaks some tests: http://storage.googleapis.com/r8-test-results/c0ff09e6-bac6-4ded-b776-b5b15342d83b/test/index.html

Change-Id: I2e08b5950b9949879bcb87b5ef182aa0505217ab
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index f7ff70e..564aa9c 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -214,7 +214,7 @@
 
       ProguardConfiguration.Builder configurationBuilder;
       if (proguardConfigs.isEmpty()) {
-        configurationBuilder = ProguardConfiguration.builder(factory);
+        configurationBuilder = ProguardConfiguration.builderInitializedWithDefaults(factory);
       } else {
         ProguardConfigurationParser parser =
             new ProguardConfigurationParser(factory, getDiagnosticsHandler());
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
index 2bd956f..dc800a3 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -19,13 +19,13 @@
 
     private final List<FilteredClassPath> injars = new ArrayList<>();
     private final List<FilteredClassPath> libraryjars = new ArrayList<>();
-    private PackageObfuscationMode packageObfuscationMode = PackageObfuscationMode.NONE;
-    private String packagePrefix = "";
+    private PackageObfuscationMode packageObfuscationMode;
+    private String packagePrefix;
     private boolean allowAccessModification;
     private boolean ignoreWarnings;
-    private boolean optimizing = true;
-    private boolean obfuscating = true;
-    private boolean shrinking = true;
+    private boolean optimizing;
+    private boolean obfuscating;
+    private boolean shrinking;
     private boolean printUsage;
     private Path printUsageFile;
     private boolean printMapping;
@@ -34,7 +34,7 @@
     private boolean verbose;
     private String renameSourceFileAttribute;
     private final List<String> keepAttributePatterns = new ArrayList<>();
-    private ProguardClassNameList dontWarnPatterns = ProguardClassNameList.emptyList();
+    private ProguardClassNameList dontWarnPatterns;
     protected final List<ProguardConfigurationRule> rules = new ArrayList<>();
     private final DexItemFactory dexItemFactory;
     private boolean printSeeds;
@@ -48,6 +48,36 @@
 
     private Builder(DexItemFactory dexItemFactory) {
       this.dexItemFactory = dexItemFactory;
+      resetProguardDefaults();
+    }
+
+    public void resetProguardDefaults() {
+      injars.clear();
+      libraryjars.clear();
+      packageObfuscationMode = PackageObfuscationMode.NONE;
+      packagePrefix = "";
+      allowAccessModification = false;
+      ignoreWarnings = false;
+      optimizing = true;
+      obfuscating = true;
+      shrinking = true;
+      printUsage = false;
+      printUsageFile = null;
+      printMapping = false;
+      printMappingFile = null;
+      applyMappingFile = null;
+      verbose = false;
+      renameSourceFileAttribute = null;
+      keepAttributePatterns.clear();
+      dontWarnPatterns = ProguardClassNameList.emptyList();
+      rules.clear();
+      printSeeds = false;
+      seedFile = null;
+      obfuscationDictionary = null;
+      classObfuscationDictionary = null;
+      packageObfuscationDictionary = null;
+      useUniqueClassMemberNames = false;
+      keepParameterNames = false;
     }
 
     public void addInjars(List<FilteredClassPath> injars) {
@@ -177,14 +207,6 @@
     }
 
     public ProguardConfiguration build() throws CompilationException {
-      if (rules.isEmpty()) {
-        setObfuscating(false);
-        setShrinking(false);
-        addRule(ProguardKeepRule.defaultKeepAllRule());
-      }
-      if (keepAttributePatterns.isEmpty()) {
-        addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL);
-      }
       return new ProguardConfiguration(
           dexItemFactory,
           injars,
@@ -312,6 +334,15 @@
     return new Builder(dexItemFactory);
   }
 
+  public static Builder builderInitializedWithDefaults(DexItemFactory dexItemFactory) {
+    Builder builder = new Builder(dexItemFactory);
+    builder.setObfuscating(false);
+    builder.setShrinking(false);
+    builder.addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL);
+    builder.addRule(ProguardKeepRule.defaultKeepAllRule());
+    return builder;
+  }
+
   public DexItemFactory getDexItemFactory() {
     return dexItemFactory;
   }
@@ -422,7 +453,7 @@
 
   public static ProguardConfiguration defaultConfiguration(DexItemFactory dexItemFactory) {
     try {
-      return builder(dexItemFactory).build();
+      return builderInitializedWithDefaults(dexItemFactory).build();
     } catch(CompilationException e) {
       // Building a builder initialized with defaults will not throw CompilationException because
       // DictionaryReader is called with empty lists.
diff --git a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
index 029e083..427c253 100644
--- a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
+++ b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
@@ -21,6 +21,8 @@
     setUp(
         null,
         pg -> {
+          pg.resetProguardDefaults();
+          pg.addRule(ProguardKeepRule.defaultKeepAllRule());
           pg.setRenameSourceFileAttribute(TEST_FILE);
           pg.addKeepAttributePatterns(ImmutableList.of("SourceFile", "LineNumberTable"));
         });