aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-07-25 12:24:57 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-25 12:26:31 -0700
commitbeb5530f8c1717976736aaa30c2c8098bf34e845 (patch)
tree73f6a94673f117382ff8fcd7cbe035404097559a /src/main/java/com/google
parentc8895b5ee40fb10d5596e47ac8a081937b697ee2 (diff)
Allow the AndroidResourcesInfo to be created from Skylark.
RELNOTES: none. PiperOrigin-RevId: 206035420
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java73
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java186
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java24
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java117
9 files changed, 394 insertions, 43 deletions
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 a2afaa68ad..919c42b10a 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
@@ -16,25 +16,21 @@ package com.google.devtools.build.lib.rules.android;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
/** A provider that supplies ResourceContainers from its transitive closure. */
@Immutable
-public class AndroidResourcesInfo extends NativeInfo implements AndroidResourcesInfoApi {
+public class AndroidResourcesInfo extends NativeInfo
+ implements AndroidResourcesInfoApi<Artifact, ValidatedAndroidData, ProcessedAndroidManifest> {
- private static final String SKYLARK_NAME = "AndroidResourcesInfo";
-
- /**
- * Provider instance for {@link AndroidResourcesInfo}.
- */
- public static final AndroidResourcesInfoProvider PROVIDER =
- new AndroidResourcesInfoProvider();
+ public static final String PROVIDER_NAME = "AndroidResourcesInfo";
+ public static final Provider PROVIDER = new Provider();
/*
* Local information about the target that produced this provider, for tooling. These values will
@@ -97,11 +93,12 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources
this.transitiveRTxt = transitiveRTxt;
}
- /** Returns the label that is associated with this piece of information. */
+ @Override
public Label getLabel() {
return label;
}
+ @Override
public ProcessedAndroidManifest getManifest() {
return manifest;
}
@@ -111,16 +108,17 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources
return rTxt;
}
- /** Returns the transitive ResourceContainers for the label. */
+ @Override
public NestedSet<ValidatedAndroidData> getTransitiveAndroidResources() {
return transitiveAndroidResources;
}
- /** Returns the immediate ResourceContainers for the label. */
+ @Override
public NestedSet<ValidatedAndroidData> getDirectAndroidResources() {
return directAndroidResources;
}
+ @Override
public NestedSet<Artifact> getTransitiveResources() {
return transitiveResources;
}
@@ -131,42 +129,79 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources
return transitiveAssets;
}
+ @Override
public NestedSet<Artifact> getTransitiveManifests() {
return transitiveManifests;
}
+ @Override
public NestedSet<Artifact> getTransitiveAapt2RTxt() {
return transitiveAapt2RTxt;
}
+ @Override
public NestedSet<Artifact> getTransitiveSymbolsBin() {
return transitiveSymbolsBin;
}
+ @Override
public NestedSet<Artifact> getTransitiveCompiledSymbols() {
return transitiveCompiledSymbols;
}
+ @Override
public NestedSet<Artifact> getTransitiveStaticLib() {
return transitiveStaticLib;
}
+ @Override
public NestedSet<Artifact> getTransitiveRTxt() {
return transitiveRTxt;
}
/** Provider for {@link AndroidResourcesInfo}. */
- public static class AndroidResourcesInfoProvider extends BuiltinProvider<AndroidResourcesInfo>
- implements AndroidResourcesInfoApiProvider {
+ public static class Provider extends BuiltinProvider<AndroidResourcesInfo>
+ implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<
+ Artifact, ValidatedAndroidData, ProcessedAndroidManifest> {
- private AndroidResourcesInfoProvider() {
- super(SKYLARK_NAME, AndroidResourcesInfo.class);
+ private Provider() {
+ super(PROVIDER_NAME, AndroidResourcesInfo.class);
}
@Override
- public AndroidResourcesInfo createInfo(SkylarkDict<?, ?> kwargs, Location loc)
+ public AndroidResourcesInfo createInfo(
+ Label label,
+ ProcessedAndroidManifest manifest,
+ Artifact rTxt,
+ SkylarkNestedSet transitiveAndroidResources,
+ SkylarkNestedSet directAndroidResources,
+ SkylarkNestedSet transitiveResources,
+ SkylarkNestedSet transitiveAssets,
+ SkylarkNestedSet transitiveManifests,
+ SkylarkNestedSet transitiveAapt2RTxt,
+ SkylarkNestedSet transitiveSymbolsBin,
+ SkylarkNestedSet transitiveCompiledSymbols,
+ SkylarkNestedSet transitiveStaticLib,
+ SkylarkNestedSet transitiveRTxt)
throws EvalException {
- return throwUnsupportedConstructorException(loc);
+ return new AndroidResourcesInfo(
+ label,
+ manifest,
+ rTxt,
+ nestedSet(transitiveAndroidResources, ValidatedAndroidData.class),
+ nestedSet(directAndroidResources, ValidatedAndroidData.class),
+ nestedSet(transitiveResources, Artifact.class),
+ nestedSet(transitiveAssets, Artifact.class),
+ nestedSet(transitiveManifests, Artifact.class),
+ nestedSet(transitiveAapt2RTxt, Artifact.class),
+ nestedSet(transitiveSymbolsBin, Artifact.class),
+ nestedSet(transitiveCompiledSymbols, Artifact.class),
+ nestedSet(transitiveStaticLib, Artifact.class),
+ nestedSet(transitiveRTxt, Artifact.class));
+ }
+
+ private <T> NestedSet<T> nestedSet(SkylarkNestedSet from, Class<T> with) {
+ return NestedSetBuilder.<T>stableOrder().addTransitive(from.getSet(with)).build();
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java
index 3aea312672..5d515c03f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.android;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestApi;
import javax.annotation.Nullable;
/**
@@ -22,7 +23,7 @@ import javax.annotation.Nullable;
*
* <p>TODO(b/30817309) Just use {@link StampedAndroidManifest} once the legacy merger is removed.
*/
-public class ProcessedAndroidManifest extends StampedAndroidManifest {
+public class ProcessedAndroidManifest extends StampedAndroidManifest implements AndroidManifestApi {
ProcessedAndroidManifest(Artifact manifest, @Nullable String pkg, boolean exported) {
super(manifest, pkg, exported);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java
index 97bc3738f3..4f18b35899 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java
@@ -17,6 +17,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
+import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi;
/**
* A {@link CompiledMergableAndroidData} that has been fully processed, validated, and packaged.
@@ -27,7 +28,7 @@ import com.google.devtools.build.lib.packages.RuleErrorConsumer;
* ResourceContainer} is removed, this interface can be replaced with {@link
* ValidatedAndroidResources}
*/
-public interface ValidatedAndroidData extends CompiledMergableAndroidData {
+public interface ValidatedAndroidData extends CompiledMergableAndroidData, ValidatedAndroidDataApi {
Artifact getRTxt();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java
index 7eb708d3e7..81ecedd6ce 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java
@@ -31,7 +31,8 @@ public class AndroidBootstrap implements Bootstrap {
private final ApkInfoApiProvider apkInfoProvider;
private final AndroidInstrumentationInfoApiProvider<?> androidInstrumentationInfoProvider;
private final AndroidDeviceBrokerInfoApiProvider androidDeviceBrokerInfoProvider;
- private final AndroidResourcesInfoApiProvider androidResourcesInfoProvider;
+ private final AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<?, ?, ?>
+ androidResourcesInfoProvider;
private final AndroidNativeLibsInfoApiProvider androidNativeLibsInfoProvider;
public AndroidBootstrap(
@@ -39,7 +40,7 @@ public class AndroidBootstrap implements Bootstrap {
ApkInfoApiProvider apkInfoProvider,
AndroidInstrumentationInfoApiProvider<?> androidInstrumentationInfoProvider,
AndroidDeviceBrokerInfoApiProvider androidDeviceBrokerInfoProvider,
- AndroidResourcesInfoApiProvider androidResourcesInfoProvider,
+ AndroidResourcesInfoApiProvider<?, ?, ?> androidResourcesInfoProvider,
AndroidNativeLibsInfoApiProvider androidNativeLibsInfoProvider) {
this.androidCommon = androidCommon;
this.apkInfoProvider = apkInfoProvider;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java
new file mode 100644
index 0000000000..d128e2f415
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java
@@ -0,0 +1,24 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.skylarkbuildapi.android;
+
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+
+/** Wraps an Android Manifest and provides utilities for working with it */
+@SkylarkModule(
+ name = "AndroidManifestApi",
+ doc = "Wraps an Android Manifest and provides utilities to work with it.",
+ category = SkylarkModuleCategory.PROVIDER)
+public interface AndroidManifestApi {}
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 e9c6788f32..a723c7f467 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
@@ -13,29 +13,45 @@
// limitations under the License.
package com.google.devtools.build.lib.skylarkbuildapi.android;
-import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
/** A provider that supplies resource information from its transitive closure. */
@SkylarkModule(
name = "AndroidResourcesInfo",
doc = "Android resources provided by a rule",
category = SkylarkModuleCategory.PROVIDER)
-public interface AndroidResourcesInfoApi extends StructApi {
+public interface AndroidResourcesInfoApi<
+ FileT extends FileApi,
+ ValidatedAndroidDataT extends ValidatedAndroidDataApi,
+ AndroidManifestT extends AndroidManifestApi>
+ extends StructApi {
/**
* Name of this info object.
*/
public static String NAME = "AndroidResourcesInfo";
+ /** Returns the label that is associated with this piece of information. */
+ @SkylarkCallable(
+ name = "label",
+ doc = "Returns the label that is associated with this piece of information.",
+ structField = true)
+ Label getLabel();
+
+ @SkylarkCallable(name = "manifest", doc = "", documented = false, structField = true)
+ AndroidManifestT getManifest();
+
/** Returns the compiletime r.txt file for the target. */
@SkylarkCallable(
name = "compiletime_r_txt",
@@ -44,20 +60,170 @@ public interface AndroidResourcesInfoApi extends StructApi {
+ " stubbed out compiletime file and should not be built into APKs, inherited from"
+ " dependencies, or used at runtime.",
structField = true)
- FileApi getRTxt();
+ FileT getRTxt();
+
+ /** Returns the transitive ResourceContainers for the label. */
+ @SkylarkCallable(
+ name = "transitive_android_resources",
+ doc = "Returns the transitive ResourceContainers for the label.",
+ structField = true)
+ NestedSet<ValidatedAndroidDataT> getTransitiveAndroidResources();
+
+ /** Returns the immediate ResourceContainers for the label. */
+ @SkylarkCallable(
+ name = "direct_android_resources",
+ doc = "Returns the immediate ResourceContainers for the label.",
+ structField = true)
+ NestedSet<ValidatedAndroidDataT> getDirectAndroidResources();
+
+ @SkylarkCallable(name = "transitive_resources", doc = "", documented = false, structField = true)
+ NestedSet<FileT> getTransitiveResources();
+
+ @SkylarkCallable(name = "transitive_resources", doc = "", documented = false, structField = true)
+ NestedSet<FileT> getTransitiveManifests();
+
+ @SkylarkCallable(
+ name = "transitive_aapt2_r_txt",
+ doc = "",
+ documented = false,
+ structField = true)
+ NestedSet<FileT> getTransitiveAapt2RTxt();
+
+ @SkylarkCallable(
+ name = "transitive_symbols_bin",
+ doc = "",
+ documented = false,
+ structField = true)
+ NestedSet<FileT> getTransitiveSymbolsBin();
+
+ @SkylarkCallable(
+ name = "transitive_compiled_symbols",
+ doc = "",
+ documented = false,
+ structField = true)
+ NestedSet<FileT> getTransitiveCompiledSymbols();
+
+ @SkylarkCallable(name = "transitive_static_lib", doc = "", documented = false, structField = true)
+ NestedSet<FileT> getTransitiveStaticLib();
+
+ @SkylarkCallable(name = "transitive_r_txt", doc = "", documented = false, structField = true)
+ NestedSet<FileT> getTransitiveRTxt();
/** Provider for {@link AndroidResourcesInfoApi}. */
@SkylarkModule(name = "Provider", doc = "", documented = false)
- public interface AndroidResourcesInfoApiProvider extends ProviderApi {
+ public interface AndroidResourcesInfoApiProvider<
+ FileT extends FileApi,
+ ValidatedAndroidDataT extends ValidatedAndroidDataApi,
+ AndroidManifestT extends AndroidManifestApi>
+ extends ProviderApi {
@SkylarkCallable(
name = "AndroidResourcesInfo",
- // This is left undocumented as it throws a "not-implemented in Skylark" error when invoked.
documented = false,
- extraKeywords = @Param(name = "kwargs"),
- useLocation = true,
+ parameters = {
+ @Param(
+ name = "label",
+ doc = "A label of the target.",
+ positional = true,
+ named = false,
+ type = Label.class),
+ @Param(
+ name = "manifest",
+ positional = true,
+ named = false,
+ type = AndroidManifestApi.class),
+ @Param(name = "r_txt", positional = true, named = false, type = FileApi.class),
+ @Param(
+ name = "transitive_android_resources",
+ doc =
+ "A depset of ValidatedAndroidData of Android Resources in the transitive "
+ + "closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = ValidatedAndroidDataApi.class),
+ @Param(
+ name = "direct_android_resources",
+ doc = "A depset of ValidatedAndroidData of Android Resources for the target.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = ValidatedAndroidDataApi.class),
+ @Param(
+ name = "transitive_resources",
+ doc = "A depset of Artifacts of Android Resource files in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_assets",
+ doc = "A depset of Artifacts of Android Assets in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_manifests",
+ doc = "A depset of Artifacts of Android Manifests in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_aapt2_r_txt",
+ doc = "A depset of Artifacts of Android AAPT2 R.txt files in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_symbols_bin",
+ doc = "A depset of Artifacts of Android symbols files in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_compiled_symbols",
+ doc =
+ "A depset of Artifacts of Android compiled symbols files in the transitive "
+ + "closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_static_lib",
+ doc = "A depset of Artifacts of static lib files in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ @Param(
+ name = "transitive_r_txt",
+ doc = "A depset of Artifacts of Android AAPT R.txt files in the transitive closure.",
+ positional = true,
+ named = false,
+ type = SkylarkNestedSet.class,
+ generic1 = FileApi.class),
+ },
selfCall = true)
- public AndroidResourcesInfoApi createInfo(
- SkylarkDict<?, ?> kwargs, Location loc) throws EvalException;
+ @SkylarkConstructor(objectType = AndroidResourcesInfoApi.class)
+ AndroidResourcesInfoApi<FileT, ValidatedAndroidDataT, AndroidManifestT> createInfo(
+ Label label,
+ AndroidManifestT manifest,
+ FileT rTxt,
+ SkylarkNestedSet transitiveAndroidResources,
+ SkylarkNestedSet directAndroidResources,
+ SkylarkNestedSet transitiveResources,
+ SkylarkNestedSet transitiveAssets,
+ SkylarkNestedSet transitiveManifests,
+ SkylarkNestedSet transitiveAapt2RTxt,
+ SkylarkNestedSet transitiveSymbolsBin,
+ SkylarkNestedSet transitiveCompiledSymbols,
+ SkylarkNestedSet transitiveStaticLib,
+ SkylarkNestedSet transitiveRTxt)
+ throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
new file mode 100644
index 0000000000..f8dc08abb4
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java
@@ -0,0 +1,24 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.skylarkbuildapi.android;
+
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+
+/** Validated Android data which can be merged together with assets from dependencies. */
+@SkylarkModule(
+ name = "ValidatedAndroidDataApi",
+ doc = "Validated Android data which can be merged together with assets from dependencies.",
+ category = SkylarkModuleCategory.PROVIDER)
+public interface ValidatedAndroidDataApi {}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
index da88053956..f1e173ae82 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
@@ -14,8 +14,10 @@ java_library(
srcs = glob(["*.java"]),
deps = [
"//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
"//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android",
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 4de9a12369..ecf8c1232f 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
@@ -14,17 +14,43 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.events.Location;
+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.AndroidResourcesInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
-/**
- * Fake implementation of {@link AndroidResourcesInfoApi}.
- */
-public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi {
+/** Fake implementation of {@link AndroidResourcesInfoApi}. */
+public class FakeAndroidResourcesInfo extends NativeInfo
+ implements AndroidResourcesInfoApi<
+ FileApi,
+ FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi,
+ FakeAndroidResourcesInfo.FakeAndroidManifestApi> {
+
+ public static final String PROVIDER_NAME = "FakeAndroidResourcesInfo";
+ public static final FakeAndroidResourcesInfoProvider PROVIDER =
+ new FakeAndroidResourcesInfoProvider();
+
+ FakeAndroidResourcesInfo() {
+ super(PROVIDER);
+ }
+
+ @Override
+ public Label getLabel() {
+ return null;
+ }
+
+ @Override
+ public FakeAndroidManifestApi getManifest() {
+ return null;
+ }
@Override
public FileApi getRTxt() {
@@ -32,6 +58,51 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi {
}
@Override
+ public NestedSet<FakeValidatedAndroidDataApi> getTransitiveAndroidResources() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FakeValidatedAndroidDataApi> getDirectAndroidResources() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveResources() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveManifests() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveAapt2RTxt() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveSymbolsBin() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveCompiledSymbols() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveStaticLib() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveRTxt() {
+ return null;
+ }
+
+ @Override
public String toProto(Location loc) throws EvalException {
return "";
}
@@ -44,13 +115,33 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi {
@Override
public void repr(SkylarkPrinter printer) {}
- /**
- * Fake implementation of {@link AndroidResourcesInfoApiProvider}.
- */
- public static class FakeAndroidResourcesInfoProvider implements AndroidResourcesInfoApiProvider {
+ /** Fake implementation of {@link AndroidResourcesInfoApiProvider}. */
+ public static class FakeAndroidResourcesInfoProvider
+ extends BuiltinProvider<FakeAndroidResourcesInfo>
+ implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<
+ FileApi,
+ FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi,
+ FakeAndroidResourcesInfo.FakeAndroidManifestApi> {
+
+ public FakeAndroidResourcesInfoProvider() {
+ super(PROVIDER_NAME, FakeAndroidResourcesInfo.class);
+ }
@Override
- public AndroidResourcesInfoApi createInfo(SkylarkDict<?, ?> kwargs, Location loc)
+ public FakeAndroidResourcesInfo createInfo(
+ Label label,
+ FakeAndroidManifestApi manifest,
+ FileApi rTxt,
+ SkylarkNestedSet transitiveAndroidResources,
+ SkylarkNestedSet directAndroidResources,
+ SkylarkNestedSet transitiveResources,
+ SkylarkNestedSet transitiveAssets,
+ SkylarkNestedSet transitiveManifests,
+ SkylarkNestedSet transitiveAapt2RTxt,
+ SkylarkNestedSet transitiveSymbolsBin,
+ SkylarkNestedSet transitiveCompiledSymbols,
+ SkylarkNestedSet transitiveStaticLib,
+ SkylarkNestedSet transitiveRTxt)
throws EvalException {
return new FakeAndroidResourcesInfo();
}
@@ -58,4 +149,10 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi {
@Override
public void repr(SkylarkPrinter printer) {}
}
+
+ /** Fake implementation of {@link ValidatedAndroidDataApi}. */
+ public static class FakeValidatedAndroidDataApi implements ValidatedAndroidDataApi {}
+
+ /** Fake implementation of {@link AndroidManifestApi}. */
+ public static class FakeAndroidManifestApi implements AndroidManifestApi {}
}