Reapply "Initial setup for doing legacy resource shrinking in R8"

This reverts commit 8ea20ac4540f3800f13f5f54c52d3456bf9409fe.

Bug: 305892375
Bug: 287398085

Change-Id: If6e6ee396cd6dcee4619b733d94f6dd456e4b7b6
diff --git a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
index 5f9bec6..d8ac6a9 100644
--- a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
+++ b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
@@ -32,7 +32,7 @@
     r8ResourceShrinkerModel.instantiateFromResourceTable(inputStream);
   }
 
-  private static class R8ResourceShrinkerModel extends ResourceShrinkerModel {
+  public static class R8ResourceShrinkerModel extends ResourceShrinkerModel {
 
     public R8ResourceShrinkerModel(
         ShrinkerDebugReporter debugReporter, boolean supportMultipackages) {
@@ -40,25 +40,29 @@
     }
 
     // Similar to instantiation in ProtoResourceTableGatherer, but using an inputstream.
-    public void instantiateFromResourceTable(InputStream inputStream) {
+    void instantiateFromResourceTable(InputStream inputStream) {
       try {
         ResourceTable resourceTable = ResourceTable.parseFrom(inputStream);
-        ResourceTableUtilKt.entriesSequence(resourceTable)
-            .iterator()
-            .forEachRemaining(
-                entryWrapper -> {
-                  ResourceType resourceType = ResourceType.fromClassName(entryWrapper.getType());
-                  if (resourceType != ResourceType.STYLEABLE) {
-                    this.addResource(
-                        resourceType,
-                        entryWrapper.getPackageName(),
-                        ResourcesUtil.resourceNameToFieldName(entryWrapper.getEntry().getName()),
-                        entryWrapper.getId());
-                  }
-                });
+        instantiateFromResourceTable(resourceTable);
       } catch (IOException ex) {
         throw new RuntimeException(ex);
       }
     }
+
+    void instantiateFromResourceTable(ResourceTable resourceTable) {
+      ResourceTableUtilKt.entriesSequence(resourceTable)
+          .iterator()
+          .forEachRemaining(
+              entryWrapper -> {
+                ResourceType resourceType = ResourceType.fromClassName(entryWrapper.getType());
+                if (resourceType != ResourceType.STYLEABLE) {
+                  this.addResource(
+                      resourceType,
+                      entryWrapper.getPackageName(),
+                      ResourcesUtil.resourceNameToFieldName(entryWrapper.getEntry().getName()),
+                      entryWrapper.getId());
+                }
+              });
+    }
   }
 }