Desugared library: enable checksums

Bug: 158746302
Change-Id: Ic2d6b3da6e26a0ffb5db548ac604564b9b008fb7
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index e116676..48f2f7a 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -25,6 +25,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.function.BiPredicate;
 import java.util.function.Consumer;
 
 /** Immutable command structure for an invocation of the {@link L8} library compiler. */
@@ -86,6 +87,8 @@
       StringConsumer mainDexListConsumer,
       int minApiLevel,
       Reporter diagnosticsHandler,
+      boolean encodeChecksum,
+      BiPredicate<String, Long> dexClassChecksumFilter,
       DesugaredLibraryConfiguration libraryConfiguration,
       List<AssertionsConfiguration> assertionsConfiguration,
       List<Consumer<Inspector>> outputInspections,
@@ -100,8 +103,8 @@
         diagnosticsHandler,
         DesugarState.ON,
         false,
-        false,
-        (name, checksum) -> true,
+        encodeChecksum,
+        dexClassChecksumFilter,
         assertionsConfiguration,
         outputInspections,
         threadCount);
@@ -296,6 +299,8 @@
                     libraryConfiguration.getSynthesizedLibraryClassesPackagePrefix())
                 .setMinApiLevel(getMinApiLevel())
                 .setMode(getMode())
+                .setIncludeClassesChecksum(getIncludeClassesChecksum())
+                .setDexClassChecksumFilter(getDexClassChecksumFilter())
                 .setProgramConsumer(getProgramConsumer());
         for (ClassFileResourceProvider libraryResourceProvider :
             inputs.getLibraryResourceProviders()) {
@@ -316,6 +321,8 @@
                     libraryConfiguration.getSynthesizedLibraryClassesPackagePrefix())
                 .setMinApiLevel(getMinApiLevel())
                 .setMode(getMode())
+                .setIncludeClassesChecksum(getIncludeClassesChecksum())
+                .setDexClassChecksumFilter(getDexClassChecksumFilter())
                 .setProgramConsumer(getProgramConsumer());
         for (ClassFileResourceProvider libraryResourceProvider :
             inputs.getLibraryResourceProviders()) {
@@ -332,6 +339,8 @@
           getMainDexListConsumer(),
           getMinApiLevel(),
           getReporter(),
+          getIncludeClassesChecksum(),
+          getDexClassChecksumFilter(),
           libraryConfiguration,
           getAssertionsConfiguration(),
           getOutputInspections(),
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
similarity index 72%
rename from src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java
rename to src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
index 8280f92..42df609 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibaryChecksumsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryChecksumsTest.java
@@ -3,8 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.desugar.desugaredlibrary;
 
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.CompilationMode;
@@ -16,7 +14,6 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
@@ -26,14 +23,14 @@
 import org.junit.runners.Parameterized;
 
 @RunWith(Parameterized.class)
-public class DesugaredLibaryChecksumsTest extends TestBase {
+public class DesugaredLibraryChecksumsTest extends TestBase {
 
   @Parameterized.Parameters(name = "{0}")
   public static TestParametersCollection data() {
     return getTestParameters().withNoneRuntime().build();
   }
 
-  public DesugaredLibaryChecksumsTest(TestParameters parameters) {
+  public DesugaredLibraryChecksumsTest(TestParameters parameters) {
     parameters.assertNoneRuntime();
   }
 
@@ -52,16 +49,9 @@
             .setMinApiLevel(AndroidApiLevel.B.getLevel())
             .setOutput(out, OutputMode.DexIndexed)
             .build());
-
-    try {
-      CodeInspector inspector = new CodeInspector(out);
-      for (FoundClassSubject clazz : inspector.allClasses()) {
-        assertTrue(clazz.getDexProgramClass().getChecksum() > 0);
-      }
-    } catch (CompilationError e) {
-      // TODO(b/158746302): Desugared library should support checksums.
-      //  also, the failure should have occured in the L8.run above!
-      assertThat(e.getMessage(), containsString("has no checksum"));
+    CodeInspector inspector = new CodeInspector(out);
+    for (FoundClassSubject clazz : inspector.allClasses()) {
+      assertTrue(clazz.getDexProgramClass().getChecksum() != 0);
     }
   }
 }