Pass around the AndroidManifestInfo instead of the ProcessedAndroidManifest this makes the api's cleaner in Skylark. Allows us to avoid exposing non-provider objects.

RELNOTES: none.
PiperOrigin-RevId: 210213248
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryAarInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryAarInfo.java
index e829a43..c6bac65 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryAarInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryAarInfo.java
@@ -108,7 +108,7 @@
           dataContext,
           resourceApk.getPrimaryResources(),
           resourceApk.getPrimaryAssets(),
-          resourceApk.getProcessedManifest(),
+          resourceApk.getProcessedManifest().toProvider(),
           resourceApk.getRTxt(),
           libraryClassJar,
           localProguardSpecs);
@@ -118,7 +118,7 @@
         AndroidDataContext dataContext,
         AndroidResources primaryResources,
         AndroidAssets primaryAssets,
-        ProcessedAndroidManifest manifest,
+        AndroidManifestInfo manifest,
         Artifact rTxt,
         Artifact libraryClassJar,
         ImmutableList<Artifact> localProguardSpecs)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidManifestInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidManifestInfo.java
index 872881f..6470b80 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidManifestInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidManifestInfo.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.syntax.SkylarkType;
 
 /** A provider of information about this target's manifest. */
-public class AndroidManifestInfo extends NativeInfo implements AndroidManifestInfoApi {
+public class AndroidManifestInfo extends NativeInfo implements AndroidManifestInfoApi<Artifact> {
   private static final String SKYLARK_NAME = "AndroidManifestInfo";
 
   private static final FunctionSignature.WithValues<Object, SkylarkType> SIGNATURE =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
index 2f4db3c..9faba57 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
@@ -27,8 +27,7 @@
 /** A provider that supplies ResourceContainers from its transitive closure. */
 @Immutable
 public class AndroidResourcesInfo extends NativeInfo
-    implements AndroidResourcesInfoApi<
-        Artifact, ValidatedAndroidResources, ProcessedAndroidManifest> {
+    implements AndroidResourcesInfoApi<Artifact, ValidatedAndroidResources, AndroidManifestInfo> {
 
   public static final String PROVIDER_NAME = "AndroidResourcesInfo";
   public static final Provider PROVIDER = new Provider();
@@ -44,7 +43,7 @@
 
   // An updated manifest - resource processing sometimes does additional manifest processing
   // TODO(b/30817309): Remove this once resource processing no longer does manifest processing
-  private final ProcessedAndroidManifest manifest;
+  private final AndroidManifestInfo manifest;
 
   // An R.txt file containing a list of all transitive resources this target expected
   private final Artifact rTxt;
@@ -65,7 +64,7 @@
 
   AndroidResourcesInfo(
       Label label,
-      ProcessedAndroidManifest manifest,
+      AndroidManifestInfo manifest,
       Artifact rTxt,
       NestedSet<ValidatedAndroidResources> transitiveAndroidResources,
       NestedSet<ValidatedAndroidResources> directAndroidResources,
@@ -97,7 +96,7 @@
   }
 
   @Override
-  public ProcessedAndroidManifest getManifest() {
+  public AndroidManifestInfo getManifest() {
     return manifest;
   }
 
@@ -154,7 +153,7 @@
   /** Provider for {@link AndroidResourcesInfo}. */
   public static class Provider extends BuiltinProvider<AndroidResourcesInfo>
       implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<
-          Artifact, ValidatedAndroidResources, ProcessedAndroidManifest> {
+          Artifact, ValidatedAndroidResources, AndroidManifestInfo> {
 
     private Provider() {
       super(PROVIDER_NAME, AndroidResourcesInfo.class);
@@ -163,7 +162,7 @@
     @Override
     public AndroidResourcesInfo createInfo(
         Label label,
-        ProcessedAndroidManifest manifest,
+        AndroidManifestInfo manifest,
         Artifact rTxt,
         SkylarkNestedSet transitiveAndroidResources,
         SkylarkNestedSet directAndroidResources,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index c8e807f..be560f3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -341,7 +341,7 @@
     // Expose the updated manifest that was changed by resource processing
     // TODO(b/30817309): Use the base manifest once manifests are no longer changed in resource
     // processing
-    AndroidManifestInfo manifestInfo = resourcesInfo.getManifest().toProvider();
+    AndroidManifestInfo manifestInfo = resourcesInfo.getManifest();
 
     return SkylarkDict.copyOf(
         /* env = */ null,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
index faea37c..e91732c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
@@ -247,7 +247,7 @@
     }
     return new AndroidResourcesInfo(
         newDirectResource.getLabel(),
-        newDirectResource.getProcessedManifest(),
+        newDirectResource.getProcessedManifest().toProvider(),
         newDirectResource.getRTxt(),
         NestedSetBuilder.<ValidatedAndroidResources>naiveLinkOrder()
             .addTransitive(transitiveResourceContainers)
@@ -285,7 +285,7 @@
     }
     return new AndroidResourcesInfo(
         label,
-        manifest,
+        manifest.toProvider(),
         rTxt,
         transitiveResourceContainers,
         directResourceContainers,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestInfoApi.java
index 5645d9f..0740540 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestInfoApi.java
@@ -28,14 +28,14 @@
             + "Information about the Android manifest provided by a rule.",
     documented = false,
     category = SkylarkModuleCategory.PROVIDER)
-public interface AndroidManifestInfoApi extends StructApi {
+public interface AndroidManifestInfoApi<FileT extends FileApi> extends StructApi {
 
   @SkylarkCallable(
       name = "manifest",
       doc = "This target's manifest, merged with manifests from dependencies",
       documented = false,
       structField = true)
-  FileApi getManifest();
+  FileT getManifest();
 
   @SkylarkCallable(
       name = "package",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
index 17dfef0..b0e580e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
@@ -38,7 +38,7 @@
 public interface AndroidResourcesInfoApi<
         FileT extends FileApi,
         ValidatedAndroidDataT extends ValidatedAndroidDataApi,
-        AndroidManifestT extends AndroidManifestApi>
+        AndroidManifestInfoT extends AndroidManifestInfoApi<FileT>>
     extends StructApi {
 
   /**
@@ -55,7 +55,7 @@
   Label getLabel();
 
   @SkylarkCallable(name = "manifest", doc = "", documented = false, structField = true)
-  AndroidManifestT getManifest();
+  AndroidManifestInfoT getManifest();
 
   /** Returns the compiletime r.txt file for the target. */
   @SkylarkCallable(
@@ -127,7 +127,7 @@
   public interface AndroidResourcesInfoApiProvider<
           FileT extends FileApi,
           ValidatedAndroidDataT extends ValidatedAndroidDataApi,
-          AndroidManifestT extends AndroidManifestApi>
+          AndroidManifestInfoT extends AndroidManifestInfoApi<FileT>>
       extends ProviderApi {
 
     @SkylarkCallable(
@@ -145,7 +145,7 @@
               name = "manifest",
               positional = true,
               named = false,
-              type = AndroidManifestApi.class),
+              type = AndroidManifestInfoApi.class),
           @Param(name = "r_txt", positional = true, named = false, type = FileApi.class),
           @Param(
               name = "transitive_android_resources",
@@ -217,9 +217,9 @@
         },
         selfCall = true)
     @SkylarkConstructor(objectType = AndroidResourcesInfoApi.class, receiverNameForDoc = NAME)
-    AndroidResourcesInfoApi<FileT, ValidatedAndroidDataT, AndroidManifestT> createInfo(
+    AndroidResourcesInfoApi<FileT, ValidatedAndroidDataT, AndroidManifestInfoT> createInfo(
         Label label,
-        AndroidManifestT manifest,
+        AndroidManifestInfoT manifest,
         FileT rTxt,
         SkylarkNestedSet transitiveAndroidResources,
         SkylarkNestedSet directAndroidResources,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
index 96654cd..9a4acff 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
@@ -20,7 +20,7 @@
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.NativeInfo;
 import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
-import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
@@ -32,7 +32,7 @@
     implements AndroidResourcesInfoApi<
         FileApi,
         FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi,
-        FakeAndroidResourcesInfo.FakeAndroidManifestApi> {
+        FakeAndroidResourcesInfo.FakeAndroidManifestInfoApi> {
 
   public static final String PROVIDER_NAME = "FakeAndroidResourcesInfo";
   public static final FakeAndroidResourcesInfoProvider PROVIDER =
@@ -48,7 +48,7 @@
   }
 
   @Override
-  public FakeAndroidManifestApi getManifest() {
+  public FakeAndroidManifestInfoApi getManifest() {
     return null;
   }
 
@@ -121,7 +121,7 @@
       implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<
           FileApi,
           FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi,
-          FakeAndroidResourcesInfo.FakeAndroidManifestApi> {
+          FakeAndroidResourcesInfo.FakeAndroidManifestInfoApi> {
 
     public FakeAndroidResourcesInfoProvider() {
       super(PROVIDER_NAME, FakeAndroidResourcesInfo.class);
@@ -130,7 +130,7 @@
     @Override
     public FakeAndroidResourcesInfo createInfo(
         Label label,
-        FakeAndroidManifestApi manifest,
+        FakeAndroidManifestInfoApi manifest,
         FileApi rTxt,
         SkylarkNestedSet transitiveAndroidResources,
         SkylarkNestedSet directAndroidResources,
@@ -152,6 +152,35 @@
   /** Fake implementation of {@link ValidatedAndroidDataApi}. */
   public static class FakeValidatedAndroidDataApi implements ValidatedAndroidDataApi {}
 
-  /** Fake implementation of {@link AndroidManifestApi}. */
-  public static class FakeAndroidManifestApi implements AndroidManifestApi {}
+  /** Fake implementation of {@link AndroidManifestInfoApi}. */
+  public static class FakeAndroidManifestInfoApi implements AndroidManifestInfoApi<FileApi> {
+
+    @Override
+    public FileApi getManifest() {
+      return null;
+    }
+
+    @Override
+    public boolean exportsManifest() {
+      return false;
+    }
+
+    @Override
+    public String getPackage() {
+      return null;
+    }
+
+    @Override
+    public String toProto(Location loc) throws EvalException {
+      return "";
+    }
+
+    @Override
+    public String toJson(Location loc) throws EvalException {
+      return "";
+    }
+
+    @Override
+    public void repr(SkylarkPrinter printer) {}
+  }
 }