Create default ProguardConfiguration through the builder...

...to allow ProguardConfigurationConsumer operate on the default
configuration.

Bug:
Change-Id: Ib111555fdf8a83a278a632fa70ca58ad1610ba20
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 0af7f92..9a11817 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -211,9 +211,10 @@
           throw new CompilationException(e.getMessage(), e.getCause());
         }
       }
-      ProguardConfiguration configuration;
+
+      ProguardConfiguration.Builder configurationBuilder;
       if (proguardConfigs.isEmpty()) {
-        configuration = ProguardConfiguration.defaultConfiguration(factory);
+        configurationBuilder = ProguardConfiguration.builderInitializedWithDefaults(factory);
       } else {
         ProguardConfigurationParser parser =
             new ProguardConfigurationParser(factory, getDiagnosticsHandler());
@@ -222,15 +223,16 @@
         } catch (ProguardRuleParserException e) {
           throw new CompilationException(e.getMessage(), e.getCause());
         }
-        ProguardConfiguration.Builder configurationBuilder = parser.getConfigurationBuilder();
-        if (proguardConfigurationConsumer != null) {
-          proguardConfigurationConsumer.accept(configurationBuilder);
-        }
-        configuration = configurationBuilder.build();
-        getAppBuilder().addProgramFiles(configuration.getInjars());
-        getAppBuilder().addLibraryFiles(configuration.getLibraryjars());
+        configurationBuilder = parser.getConfigurationBuilder();
       }
 
+      if (proguardConfigurationConsumer != null) {
+        proguardConfigurationConsumer.accept(configurationBuilder);
+      }
+      ProguardConfiguration configuration = configurationBuilder.build();
+      getAppBuilder().addProgramFiles(configuration.getInjars());
+      getAppBuilder().addLibraryFiles(configuration.getLibraryjars());
+
       // TODO(b/64802420): setProguardMapFile if configuration.hasApplyMappingFile
 
       boolean useTreeShaking = treeShaking.orElse(configuration.isShrinking());
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 fd08f51..d23822f 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -295,12 +295,17 @@
     return new Builder(dexItemFactory);
   }
 
-  public DexItemFactory getDexItemFactory() {
-    return 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 boolean isDefaultConfiguration() {
-    return false;
+  public DexItemFactory getDexItemFactory() {
+    return dexItemFactory;
   }
 
   public ImmutableList<FilteredClassPath> getInjars() {
@@ -404,44 +409,10 @@
   }
 
   public static ProguardConfiguration defaultConfiguration(DexItemFactory dexItemFactory) {
-    return new DefaultProguardConfiguration(dexItemFactory);
-  }
-
-  public static class DefaultProguardConfiguration extends ProguardConfiguration {
-
-    public DefaultProguardConfiguration(DexItemFactory factory) {
-      super(factory,
-          ImmutableList.of()    /* injars */,
-          ImmutableList.of()    /* libraryjars */,
-          PackageObfuscationMode.NONE,
-          ""                    /* package prefix */,
-          false                 /* allowAccessModification */,
-          false                 /* ignoreWarnings */,
-          true                  /* optimizing */,
-          false                 /* obfuscating */,
-          false                 /* shrinking */,
-          false                 /* printUsage */,
-          null                  /* printUsageFile */,
-          false                 /* printMapping */,
-          null                  /* printMappingFile */,
-          null                  /* applyMapping */,
-          false                 /* verbose */,
-          null                  /* renameSourceFileAttribute */,
-          KeepAttributeOptions.KEEP_ALL,
-          ProguardClassNameList.emptyList(),
-          ImmutableList.of(ProguardKeepRule.defaultKeepAllRule()),
-          false                 /* printSeeds */,
-          null                  /* seedFile */,
-          ImmutableList.of()    /* obfuscationDictionary */,
-          ImmutableList.of()    /* classObfuscationDictionary */,
-          ImmutableList.of()    /* packageObfuscationDictionary */,
-          false                 /* useUniqueClassMemberNames*/,
-          false                 /* keepParameterNames */);
-    }
-
-    @Override
-    public boolean isDefaultConfiguration() {
-      return true;
+    try {
+      return builderInitializedWithDefaults(dexItemFactory).build();
+    } catch(CompilationException e) {
+      throw new RuntimeException(); // Building a builder initialized with defaults will not throw CompilationException because DictionaryReader is called with empty lists.
     }
   }