Include number of include/exclude patterns in R8 partial metadata

Bug: b/365934833
Change-Id: I7e3c4418db8f6d71aad3610c775d9fcf692d2f40
diff --git a/src/main/java/com/android/tools/r8/metadata/R8PartialCompilationMetadata.java b/src/main/java/com/android/tools/r8/metadata/R8PartialCompilationMetadata.java
index 541a2d5..bcb025d 100644
--- a/src/main/java/com/android/tools/r8/metadata/R8PartialCompilationMetadata.java
+++ b/src/main/java/com/android/tools/r8/metadata/R8PartialCompilationMetadata.java
@@ -9,5 +9,9 @@
 
   List<String> getCommonIncludePatterns();
 
+  int getNumberOfExcludePatterns();
+
+  int getNumberOfIncludePatterns();
+
   R8PartialCompilationStatsMetadata getStatsMetadata();
 }
diff --git a/src/main/java/com/android/tools/r8/metadata/impl/R8PartialCompilationMetadataImpl.java b/src/main/java/com/android/tools/r8/metadata/impl/R8PartialCompilationMetadataImpl.java
index a5b2787..355c36f 100644
--- a/src/main/java/com/android/tools/r8/metadata/impl/R8PartialCompilationMetadataImpl.java
+++ b/src/main/java/com/android/tools/r8/metadata/impl/R8PartialCompilationMetadataImpl.java
@@ -35,12 +35,25 @@
   private final List<String> commonIncludePatterns;
 
   @Expose
+  @SerializedName("numberOfExcludePatterns")
+  private final int numberOfExcludePatterns;
+
+  @Expose
+  @SerializedName("numberOfIncludePatterns")
+  private final int numberOfIncludePatterns;
+
+  @Expose
   @SerializedName("stats")
   private final R8PartialCompilationStatsMetadata statsMetadata;
 
   private R8PartialCompilationMetadataImpl(
-      List<String> commonIncludePatterns, R8PartialCompilationStatsMetadata statsMetadata) {
+      List<String> commonIncludePatterns,
+      int numberOfExcludePatterns,
+      int numberOfIncludePatterns,
+      R8PartialCompilationStatsMetadata statsMetadata) {
     this.commonIncludePatterns = commonIncludePatterns;
+    this.numberOfExcludePatterns = numberOfExcludePatterns;
+    this.numberOfIncludePatterns = numberOfIncludePatterns;
     this.statsMetadata = statsMetadata;
   }
 
@@ -48,6 +61,8 @@
     if (options.partialCompilationConfiguration.isEnabled()) {
       return new R8PartialCompilationMetadataImpl(
           createCommonIncludePatterns(options.partialCompilationConfiguration),
+          options.partialCompilationConfiguration.getExcludePredicates().size(),
+          options.partialCompilationConfiguration.getIncludePredicates().size(),
           options.getR8PartialR8SubCompilationOptions().getStatsMetadataBuilder().build());
     }
     return null;
@@ -73,6 +88,16 @@
   }
 
   @Override
+  public int getNumberOfExcludePatterns() {
+    return numberOfExcludePatterns;
+  }
+
+  @Override
+  public int getNumberOfIncludePatterns() {
+    return numberOfIncludePatterns;
+  }
+
+  @Override
   public R8PartialCompilationStatsMetadata getStatsMetadata() {
     return statsMetadata;
   }
diff --git a/src/main/java/com/android/tools/r8/partial/predicate/R8PartialPredicateCollection.java b/src/main/java/com/android/tools/r8/partial/predicate/R8PartialPredicateCollection.java
index 7edc478..4322fe2 100644
--- a/src/main/java/com/android/tools/r8/partial/predicate/R8PartialPredicateCollection.java
+++ b/src/main/java/com/android/tools/r8/partial/predicate/R8PartialPredicateCollection.java
@@ -29,6 +29,10 @@
     return predicates.iterator();
   }
 
+  public int size() {
+    return predicates.size();
+  }
+
   public boolean test(DexProgramClass clazz) {
     DexString descriptor = clazz.getType().getDescriptor();
     for (R8PartialPredicate predicate : predicates) {
diff --git a/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java b/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
index efc5a86..7793781 100644
--- a/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/metadata/R8BuildMetadataTest.java
@@ -203,6 +203,8 @@
       assertEquals(
           Lists.newArrayList("androidx.**", "kotlin.**", "kotlinx.**"),
           partialCompilationMetadata.getCommonIncludePatterns());
+      assertEquals(0, partialCompilationMetadata.getNumberOfExcludePatterns());
+      assertEquals(3, partialCompilationMetadata.getNumberOfIncludePatterns());
 
       R8PartialCompilationStatsMetadata partialCompilationStatsMetadata =
           partialCompilationMetadata.getStatsMetadata();