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) {}
+ }
}