diff options
author | 2018-05-29 08:52:56 -0700 | |
---|---|---|
committer | 2018-05-29 08:54:21 -0700 | |
commit | 072cf92c7d83b89362584bfbbefae76a37c1dcef (patch) | |
tree | 502931ffcdb50ea57abdd324b4f44a50e81b2da4 /src/main | |
parent | f90ed652e223fffdf3f64cf1d9f49663be540b18 (diff) |
Properly expose asset provider for targets without explicit manifest
RELNOTES: none
PiperOrigin-RevId: 198402335
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java | 9 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java | 37 |
2 files changed, 16 insertions, 30 deletions
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 b4b5ff51ca..3d2bc56f2c 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 @@ -1195,7 +1195,7 @@ public abstract class AndroidSkylarkData { resourceApk.getArtifact(), resourceApk.getResourceProguardConfig(), resourceApk.toResourceInfo(ctx.getLabel()), - resourceApk.toAssetsInfo(ctx.getLabel()).get(), + resourceApk.toAssetsInfo(ctx.getLabel()), resourceApk.toManifestInfo().get()); } catch (RuleErrorException e) { @@ -1313,11 +1313,10 @@ public abstract class AndroidSkylarkData { ResourceApk resourceApk, Label label) { ImmutableMap.Builder<Provider, NativeInfo> builder = ImmutableMap.builder(); - builder.put(AndroidResourcesInfo.PROVIDER, resourceApk.toResourceInfo(label)); + builder + .put(AndroidResourcesInfo.PROVIDER, resourceApk.toResourceInfo(label)) + .put(AndroidAssetsInfo.PROVIDER, resourceApk.toAssetsInfo(label)); - resourceApk - .toAssetsInfo(label) - .ifPresent(info -> builder.put(AndroidAssetsInfo.PROVIDER, info)); resourceApk.toManifestInfo().ifPresent(info -> builder.put(AndroidManifestInfo.PROVIDER, info)); builder.put(JavaInfo.PROVIDER, getJavaInfoForRClassJar(resourceApk.getResourceJavaClassJar())); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java index 99d545d097..bda6e3108e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java @@ -227,18 +227,12 @@ public final class ResourceApk { return resourceDeps.toInfo(validatedResources); } - // TODO(b/77574966): Stop returning an Optional once we get rid of ResourceContainer and can - // guarantee that only properly merged assets are passed into this object. - Optional<AndroidAssetsInfo> toAssetsInfo(Label label) { + AndroidAssetsInfo toAssetsInfo(Label label) { if (primaryAssets instanceof MergedAndroidAssets) { MergedAndroidAssets merged = (MergedAndroidAssets) primaryAssets; - AndroidAssetsInfo assetsInfo = merged.toProvider(); - return Optional.of(assetsInfo); - } else if (primaryAssets == null) { - return Optional.of(assetDeps.toInfo(label)); - } else { - return Optional.empty(); + return merged.toProvider(); } + return assetDeps.toInfo(label); } // TODO(b/77574966): Remove this cast once we get rid of ResourceContainer and can guarantee @@ -264,26 +258,19 @@ public final class ResourceApk { Optional<AndroidManifestInfo> manifestInfo = toManifestInfo(); manifestInfo.ifPresent(builder::addNativeDeclaredProvider); - Optional<AndroidAssetsInfo> assetsInfo = toAssetsInfo(label); - if (assetsInfo.isPresent()) { - builder.addNativeDeclaredProvider(assetsInfo.get()); - if (assetsInfo.get().getValidationResult() != null) { - // Asset merging output isn't consumed by anything. Require it to be run by top-level - // targets - // so we can validate there are no asset merging conflicts. - builder.addOutputGroup( - OutputGroupInfo.HIDDEN_TOP_LEVEL, assetsInfo.get().getValidationResult()); + AndroidAssetsInfo assetsInfo = toAssetsInfo(label); + builder.addNativeDeclaredProvider(assetsInfo); + if (assetsInfo.getValidationResult() != null) { + // Asset merging output isn't consumed by anything. Require it to be run by top-level + // targets + // so we can validate there are no asset merging conflicts. + builder.addOutputGroup(OutputGroupInfo.HIDDEN_TOP_LEVEL, assetsInfo.getValidationResult()); } - } - if (manifestInfo.isPresent() && assetsInfo.isPresent() && !isLibrary) { + if (manifestInfo.isPresent() && !isLibrary) { builder.addNativeDeclaredProvider( AndroidBinaryDataInfo.of( - resourceApk, - resourceProguardConfig, - resourceInfo, - assetsInfo.get(), - manifestInfo.get())); + resourceApk, resourceProguardConfig, resourceInfo, assetsInfo, manifestInfo.get())); } if (includeSkylarkApiProvider) { |