aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2018-08-03 15:20:44 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-03 15:22:40 -0700
commit0cb8590de83b9250eee198a3f82078aad74f42b5 (patch)
tree33a21822d0c6017c9029d03422182b7a08098292
parent1225e4ad5dff72b63953639b4c4c4281f8b46ea5 (diff)
Reduce and centralize databinding context instances.
Due to some of the vagaries of skylark and multiple entry points, the databinding context is currently updated by the parse action. RELNOTES: None PiperOrigin-RevId: 207333111
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java59
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java63
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java65
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java12
17 files changed, 210 insertions, 145 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index a7a980cd30..d021892d8f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -104,7 +104,12 @@ public class AarImport implements RuleConfiguredTargetFactory {
boolean neverlink = JavaCommon.isNeverLink(ruleContext);
ValidatedAndroidResources validatedResources =
AndroidResources.forAarImport(resources)
- .process(ruleContext, dataContext, manifest, neverlink);
+ .process(
+ ruleContext,
+ dataContext,
+ manifest,
+ DataBinding.contextFrom(ruleContext),
+ neverlink);
MergedAndroidAssets mergedAssets =
AndroidAssets.forAarImport(assets)
.process(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index a413f0c280..959ffe83dd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -239,7 +239,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
? ruleContext
.getPrerequisite("feature_after", Mode.TARGET, ApkInfo.PROVIDER)
.getApk()
- : null)
+ : null,
+ DataBinding.contextFrom(ruleContext))
.generateRClass(dataContext, aaptVersion);
} else {
applicationManifest =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
index 1a7e53b9ae..58ef404322 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
@@ -174,7 +174,12 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
ValidatedAndroidResources resources =
AndroidResources.from(ruleContext, "resource_files")
- .process(ruleContext, dataContext, manifest, isNeverLink);
+ .process(
+ ruleContext,
+ dataContext,
+ manifest,
+ DataBinding.contextFrom(ruleContext),
+ isNeverLink);
MergedAndroidAssets assets =
AndroidAssets.from(ruleContext)
@@ -212,6 +217,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
resourceApk =
ResourceApk.processFromTransitiveLibraryData(
dataContext,
+ DataBinding.contextFrom(ruleContext),
resourceDeps,
assetDeps,
StampedAndroidManifest.createEmpty(ruleContext, /* exported = */ false));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index f32ea9c9bf..6d02827921 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -37,6 +37,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import com.google.devtools.build.lib.rules.java.ClasspathConfiguredFragment;
import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder;
import com.google.devtools.build.lib.rules.java.JavaCommon;
@@ -100,6 +101,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
buildResourceApk(
dataContext,
androidSemantics,
+ DataBinding.contextFrom(ruleContext),
AndroidManifest.fromAttributes(ruleContext, dataContext),
AndroidResources.from(ruleContext, "resource_files"),
AndroidAssets.from(ruleContext),
@@ -557,6 +559,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
static ResourceApk buildResourceApk(
AndroidDataContext dataContext,
AndroidSemantics androidSemantics,
+ DataBindingContext dataBindingContext,
AndroidManifest manifest,
AndroidResources resources,
AndroidAssets assets,
@@ -576,6 +579,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
return ProcessedAndroidData.processLocalTestDataFrom(
dataContext,
+ dataBindingContext,
stamped,
manifestValues,
aaptVersion,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java
index aff8128419..e5fe55a0db 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java
@@ -19,6 +19,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Streams;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import com.google.devtools.build.lib.vfs.PathFragment;
import javax.annotation.Nullable;
@@ -118,7 +119,8 @@ public class AndroidResourceParsingActionBuilder {
public ParsedAndroidResources build(
AndroidDataContext dataContext,
AndroidResources androidResources,
- StampedAndroidManifest manifest) {
+ StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext) {
if (dataBindingInfoZip != null) {
// Manifest information is needed for data binding
setManifest(manifest.getManifest());
@@ -129,7 +131,12 @@ public class AndroidResourceParsingActionBuilder {
build(dataContext);
return ParsedAndroidResources.of(
- androidResources, output, compiledSymbols, dataContext.getLabel(), manifest);
+ androidResources,
+ output,
+ compiledSymbols,
+ dataContext.getLabel(),
+ manifest,
+ dataBindingContext);
}
public ParsedAndroidAssets build(AndroidDataContext dataContext, AndroidAssets assets) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
index ebe36bc995..c78533eb43 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.android;
import com.android.resources.ResourceFolderType;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -136,32 +137,24 @@ public class AndroidResources {
return from(
ruleContext,
ruleContext.getPrerequisites(resourcesAttr, Mode.TARGET, FileProvider.class),
- resourcesAttr,
- DataBinding.contextFrom(ruleContext));
+ resourcesAttr);
}
public static AndroidResources from(
RuleErrorConsumer errorConsumer,
Iterable<FileProvider> resourcesTargets,
- String resourcesAttr,
- DataBindingContext dataBindingContext)
+ String resourcesAttr)
throws RuleErrorException {
- return forResources(
- errorConsumer, getResources(resourcesTargets), resourcesAttr, dataBindingContext);
+ return forResources(errorConsumer, getResources(resourcesTargets), resourcesAttr);
}
/** Returns an {@link AndroidResources} for a list of resource artifacts. */
@VisibleForTesting
public static AndroidResources forResources(
- RuleErrorConsumer ruleErrorConsumer,
- ImmutableList<Artifact> resources,
- String resourcesAttr,
- DataBindingContext dataBindingContext)
+ RuleErrorConsumer ruleErrorConsumer, ImmutableList<Artifact> resources, String resourcesAttr)
throws RuleErrorException {
return new AndroidResources(
- resources,
- getResourceRoots(ruleErrorConsumer, resources, resourcesAttr),
- dataBindingContext);
+ resources, getResourceRoots(ruleErrorConsumer, resources, resourcesAttr));
}
/**
@@ -174,8 +167,7 @@ public class AndroidResources {
}
static AndroidResources empty() {
- return new AndroidResources(
- ImmutableList.of(), ImmutableList.of(), DataBinding.asDisabledDataBindingContext());
+ return new AndroidResources(ImmutableList.of(), ImmutableList.of());
}
/**
@@ -192,8 +184,7 @@ public class AndroidResources {
Preconditions.checkArgument(resourcesDir.isTreeArtifact());
return new AndroidResources(
ImmutableList.of(resourcesDir),
- ImmutableList.of(resourcesDir.getExecPath().getChild("res")),
- DataBinding.asDisabledDataBindingContext());
+ ImmutableList.of(resourcesDir.getExecPath().getChild("res")));
}
/**
@@ -316,20 +307,16 @@ public class AndroidResources {
private final ImmutableList<Artifact> resources;
private final ImmutableList<PathFragment> resourceRoots;
- private final DataBindingContext dataBindingContext;
AndroidResources(AndroidResources other) {
- this(other.resources, other.resourceRoots, other.dataBindingContext);
+ this(other.resources, other.resourceRoots);
}
@VisibleForTesting
public AndroidResources(
- ImmutableList<Artifact> resources,
- ImmutableList<PathFragment> resourceRoots,
- DataBindingContext dataBindingContext) {
+ ImmutableList<Artifact> resources, ImmutableList<PathFragment> resourceRoots) {
this.resources = resources;
this.resourceRoots = resourceRoots;
- this.dataBindingContext = dataBindingContext;
}
private static ImmutableList<Artifact> getResources(Iterable<FileProvider> targets) {
@@ -411,19 +398,18 @@ public class AndroidResources {
return Optional.of(
new AndroidResources(
filtered.get(),
- getResourceRoots(errorConsumer, filtered.get(), DEFAULT_RESOURCES_ATTR),
- dataBindingContext));
+ getResourceRoots(errorConsumer, filtered.get(), DEFAULT_RESOURCES_ATTR)));
}
/** Parses these resources. */
public ParsedAndroidResources parse(
AndroidDataContext dataContext,
StampedAndroidManifest manifest,
- boolean enableDataBinding,
- AndroidAaptVersion aaptVersion)
+ AndroidAaptVersion aaptVersion,
+ DataBindingContext dataBindingContext)
throws InterruptedException {
return ParsedAndroidResources.parseFrom(
- dataContext, this, manifest, enableDataBinding, aaptVersion);
+ dataContext, this, manifest, aaptVersion, dataBindingContext);
}
/**
@@ -434,13 +420,14 @@ public class AndroidResources {
RuleContext ruleContext,
AndroidDataContext dataContext,
StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext,
boolean neverlink)
throws RuleErrorException, InterruptedException {
return process(
dataContext,
manifest,
ResourceDependencies.fromRuleDeps(ruleContext, neverlink),
- DataBinding.isEnabled(ruleContext),
+ dataBindingContext,
AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
}
@@ -448,11 +435,11 @@ public class AndroidResources {
AndroidDataContext dataContext,
StampedAndroidManifest manifest,
ResourceDependencies resourceDeps,
- boolean enableDataBinding,
+ DataBindingContext dataBindingContext,
AndroidAaptVersion aaptVersion)
throws InterruptedException {
- return parse(dataContext, manifest, enableDataBinding, aaptVersion)
- .merge(dataContext, resourceDeps, enableDataBinding, aaptVersion)
+ return parse(dataContext, manifest, aaptVersion, dataBindingContext)
+ .merge(dataContext, resourceDeps, aaptVersion)
.validate(dataContext, aaptVersion);
}
@@ -470,4 +457,12 @@ public class AndroidResources {
public int hashCode() {
return Objects.hash(resources, resourceRoots);
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("resources", resources)
+ .add("resourceRoots", resourceRoots)
+ .toString();
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
index e289c7e319..e1567f0209 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
@@ -18,6 +18,7 @@ import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
import com.google.devtools.build.lib.rules.android.AndroidDataConverter.JoinerType;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import java.util.Collections;
@@ -230,9 +231,12 @@ public class AndroidResourcesProcessorBuilder {
* information.
*/
public ResourceApk buildWithoutLocalResources(
- AndroidDataContext dataContext, StampedAndroidManifest manifest) {
+ AndroidDataContext dataContext,
+ StampedAndroidManifest manifest,
+ DataBindingContext androidDataContext) {
- build(dataContext, AndroidResources.empty(), AndroidAssets.empty(), manifest);
+ build(
+ dataContext, AndroidResources.empty(), AndroidAssets.empty(), manifest, androidDataContext);
return ResourceApk.fromTransitiveResources(
resourceDependencies,
@@ -241,12 +245,16 @@ public class AndroidResourcesProcessorBuilder {
rTxtOut);
}
- public ResourceContainer build(AndroidDataContext dataContext, ResourceContainer primary) {
+ public ResourceContainer build(
+ AndroidDataContext dataContext,
+ ResourceContainer primary,
+ DataBindingContext dataBindingContext) {
build(
dataContext,
primary.getAndroidResources(),
primary.getAndroidAssets(),
- ProcessedAndroidManifest.from(primary));
+ ProcessedAndroidManifest.from(primary),
+ dataBindingContext);
ResourceContainer.Builder builder =
primary.toBuilder().setJavaSourceJar(sourceJarOut).setRTxt(rTxtOut).setSymbols(symbols);
@@ -272,7 +280,8 @@ public class AndroidResourcesProcessorBuilder {
AndroidDataContext dataContext,
AndroidResources primaryResources,
AndroidAssets primaryAssets,
- StampedAndroidManifest primaryManifest) {
+ StampedAndroidManifest primaryManifest,
+ DataBindingContext dataBindingContext) {
if (aaptVersion == AndroidAaptVersion.AAPT2) {
createAapt2ApkAction(dataContext, primaryResources, primaryAssets, primaryManifest);
@@ -294,7 +303,8 @@ public class AndroidResourcesProcessorBuilder {
symbols,
/* compiledSymbols = */ null,
dataContext.getLabel(),
- processedManifest);
+ processedManifest,
+ dataBindingContext);
// Wrap the parsed and merged assets
ParsedAndroidAssets parsedAssets =
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 58fb920d4d..565fd50a89 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
@@ -88,6 +88,7 @@ public abstract class AndroidSkylarkData
}
return ResourceApk.processFromTransitiveLibraryData(
ctx,
+ DataBinding.asDisabledDataBindingContext(),
ResourceDependencies.fromProviders(deps, /* neverlink = */ neverlink),
AssetDependencies.empty(),
StampedAndroidManifest.createEmpty(
@@ -169,19 +170,12 @@ public abstract class AndroidSkylarkData
AndroidAaptVersion aaptVersion = ctx.getAndroidConfig().getAndroidAaptVersion();
ValidatedAndroidResources validated =
- AndroidResources.from(
- errorReporter,
- getFileProviders(resources),
- "resources",
- enableDataBinding
- ? DataBinding.asEnabledDataBindingContextFrom(
- ctx.getActionConstructionContext())
- : DataBinding.asDisabledDataBindingContext())
+ AndroidResources.from(errorReporter, getFileProviders(resources), "resources")
.process(
ctx,
manifest.asStampedManifest(),
ResourceDependencies.fromProviders(deps, neverlink),
- enableDataBinding,
+ DataBinding.contextFrom(enableDataBinding, ctx.getActionConstructionContext()),
aaptVersion);
JavaInfo javaInfo = getJavaInfoForRClassJar(validated.getClassJar());
@@ -383,7 +377,7 @@ public abstract class AndroidSkylarkData
AndroidManifest.forAarImport(androidManifestArtifact),
ResourceDependencies.fromProviders(
getProviders(deps, AndroidResourcesInfo.PROVIDER), /* neverlink = */ false),
- /* enableDataBinding = */ false,
+ DataBinding.asDisabledDataBindingContext(),
aaptVersion);
MergedAndroidAssets mergedAssets =
@@ -428,12 +422,9 @@ public abstract class AndroidSkylarkData
AndroidLocalTestBase.buildResourceApk(
ctx,
getAndroidSemantics(),
+ DataBinding.asDisabledDataBindingContext(),
rawManifest,
- AndroidResources.from(
- errorReporter,
- getFileProviders(resources),
- "resource_files",
- DataBinding.asDisabledDataBindingContext()),
+ AndroidResources.from(errorReporter, getFileProviders(resources), "resource_files"),
AndroidAssets.from(
errorReporter,
listFromNoneable(assets, ConfiguredTarget.class),
@@ -575,13 +566,7 @@ public abstract class AndroidSkylarkData
manifestValues,
settings.aaptVersion,
AndroidResources.from(
- errorReporter,
- getFileProviders(resources),
- "resource_files",
- dataBindingEnabled
- ? DataBinding.asEnabledDataBindingContextFrom(
- ctx.getActionConstructionContext())
- : DataBinding.asDisabledDataBindingContext()),
+ errorReporter, getFileProviders(resources), "resource_files"),
AndroidAssets.from(
errorReporter,
listFromNoneable(assets, ConfiguredTarget.class),
@@ -596,7 +581,8 @@ public abstract class AndroidSkylarkData
crunchPng,
dataBindingEnabled,
/* featureOf = */ null,
- /* featureAfter = */ null)
+ /* featureAfter = */ null,
+ DataBinding.contextFrom(dataBindingEnabled, ctx.getActionConstructionContext()))
.generateRClass(ctx, settings.aaptVersion);
return AndroidBinaryDataInfo.of(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
index d93b8a2b7f..c9e3daea8c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
@@ -418,7 +418,8 @@ public final class ApplicationManifest {
.setSymbols(resourceContainer.getSymbols())
.setSourceJarOut(resourceContainer.getJavaSourceJar());
}
- ResourceContainer processed = builder.build(dataContext, resourceContainer);
+ ResourceContainer processed =
+ builder.build(dataContext, resourceContainer, DataBinding.contextFrom(ruleContext));
ResourceContainer finalContainer =
new RClassGeneratorActionBuilder()
@@ -547,7 +548,7 @@ public final class ApplicationManifest {
.getFragment(AndroidConfiguration.class)
.throwOnResourceConflict())
.setPackageUnderTest(null)
- .build(dataContext, resourceContainer);
+ .build(dataContext, resourceContainer, DataBinding.contextFrom(ruleContext));
// Intentionally skip building an R class JAR - incremental binaries handle this separately.
@@ -630,7 +631,7 @@ public final class ApplicationManifest {
.setRTxtOut(resourceContainer.getRTxt())
.setSymbols(resourceContainer.getSymbols())
.setSourceJarOut(resourceContainer.getJavaSourceJar())
- .build(dataContext, resourceContainer);
+ .build(dataContext, resourceContainer, DataBinding.contextFrom(ruleContext));
ResourceContainer finalContainer =
new RClassGeneratorActionBuilder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
index 86cd131a49..9f295ba832 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.function.Consumer;
/**
@@ -62,6 +63,8 @@ public final class DataBinding {
public static final String DATABINDING_ANNOTATION_PROCESSOR_ATTR =
"$databinding_annotation_processor";
+ public static final String ENABLE_DATA_BINDING_ATTR = "enable_data_binding";
+
/** Contains Android Databinding configuration and resource generation information. */
public interface DataBindingContext {
void supplyLayoutInfo(Consumer<Artifact> consumer);
@@ -79,6 +82,23 @@ public final class DataBinding {
public void supplyLayoutInfo(Consumer<Artifact> consumer) {
consumer.accept(getLayoutInfoFile(actionConstructionContext));
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EnabledDataBindingContext that = (EnabledDataBindingContext) o;
+ return Objects.equals(actionConstructionContext, that.actionConstructionContext);
+ }
+
+ @Override
+ public int hashCode() {
+ return actionConstructionContext.hashCode();
+ }
}
private static final class DisabledDataBindingContext implements DataBindingContext {
@@ -97,6 +117,14 @@ public final class DataBinding {
return asDisabledDataBindingContext();
}
+ /** Supplies a databinding context from a rulecontext. */
+ public static DataBindingContext contextFrom(boolean enabled, ActionConstructionContext context) {
+ if (enabled) {
+ return asEnabledDataBindingContextFrom(context);
+ }
+ return asDisabledDataBindingContext();
+ }
+
/** Supplies an enabled DataBindingContext from the action context. */
public static DataBindingContext asEnabledDataBindingContextFrom(
ActionConstructionContext actionContext) {
@@ -129,8 +157,8 @@ public final class DataBinding {
* binding expressions appear in their layout resources.
*/
public static boolean isEnabled(RuleContext ruleContext) {
- return ruleContext.attributes().has("enable_data_binding", Type.BOOLEAN)
- && ruleContext.attributes().get("enable_data_binding", Type.BOOLEAN);
+ return ruleContext.attributes().has(ENABLE_DATA_BINDING_ATTR, Type.BOOLEAN)
+ && ruleContext.attributes().get(ENABLE_DATA_BINDING_ATTR, Type.BOOLEAN);
}
/** Returns this rule's data binding base output dir (as an execroot-relative path). */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
index ce3bc207e5..f139a2b457 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
@@ -40,7 +40,6 @@ public class MergedAndroidResources extends ParsedAndroidResources {
AndroidDataContext dataContext,
ParsedAndroidResources parsed,
ResourceDependencies resourceDeps,
- boolean enableDataBinding,
AndroidAaptVersion aaptVersion)
throws InterruptedException {
@@ -60,10 +59,7 @@ public class MergedAndroidResources extends ParsedAndroidResources {
.setThrowOnResourceConflict(androidConfiguration.throwOnResourceConflict())
.setUseCompiledMerge(useCompiledMerge);
- if (enableDataBinding) {
- builder.setDataBindingInfoZip(
- DataBinding.getLayoutInfoFile(dataContext.getActionConstructionContext()));
- }
+ parsed.asDataBindingContext().supplyLayoutInfo(builder::setDataBindingInfoZip);
return builder
.setManifestOut(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
index e1b2d4c6c6..240dce0b11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
@@ -13,11 +13,15 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
+import com.android.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;
@@ -29,25 +33,28 @@ public class ParsedAndroidResources extends AndroidResources
@Nullable private final Artifact compiledSymbols;
private final Label label;
private final StampedAndroidManifest manifest;
+ private final DataBindingContext dataBindingContext;
public static ParsedAndroidResources parseFrom(
AndroidDataContext dataContext,
AndroidResources resources,
StampedAndroidManifest manifest,
- boolean enableDataBinding,
- AndroidAaptVersion aaptVersion)
+ AndroidAaptVersion aaptVersion,
+ DataBindingContext dataBindingContext)
throws InterruptedException {
boolean isAapt2 = aaptVersion == AndroidAaptVersion.AAPT2;
AndroidResourceParsingActionBuilder builder = new AndroidResourceParsingActionBuilder();
- if (enableDataBinding && isAapt2) {
+ if (isAapt2) {
// TODO(corysmith): Centralize the data binding processing and zipping into a single
// action. Data binding processing needs to be triggered here as well as the merger to
// avoid aapt2 from throwing an error during compilation.
- builder.setDataBindingInfoZip(
- DataBinding.getSuffixedInfoFile(dataContext.getActionConstructionContext(), "_unused"));
+ dataBindingContext.supplyLayoutInfo(
+ layoutInfo ->
+ builder.setDataBindingInfoZip(
+ getDummyDataBindingArtifact(dataContext.getActionConstructionContext())));
}
return builder
@@ -56,7 +63,12 @@ public class ParsedAndroidResources extends AndroidResources
isAapt2
? dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_COMPILED_SYMBOLS)
: null)
- .build(dataContext, resources, manifest);
+ .build(dataContext, resources, manifest, dataBindingContext);
+ }
+
+ @VisibleForTesting
+ static Artifact getDummyDataBindingArtifact(ActionConstructionContext dataContext) {
+ return dataContext.getUniqueDirectoryArtifact("dummydatabinding", "unused.zip");
}
public static ParsedAndroidResources of(
@@ -64,12 +76,20 @@ public class ParsedAndroidResources extends AndroidResources
Artifact symbols,
@Nullable Artifact compiledSymbols,
Label label,
- StampedAndroidManifest manifest) {
- return new ParsedAndroidResources(resources, symbols, compiledSymbols, label, manifest);
+ StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext) {
+ return new ParsedAndroidResources(
+ resources, symbols, compiledSymbols, label, manifest, dataBindingContext);
}
ParsedAndroidResources(ParsedAndroidResources other, StampedAndroidManifest manifest) {
- this(other, other.symbols, other.compiledSymbols, other.label, manifest);
+ this(
+ other,
+ other.symbols,
+ other.compiledSymbols,
+ other.label,
+ manifest,
+ other.dataBindingContext);
}
protected ParsedAndroidResources(
@@ -77,12 +97,14 @@ public class ParsedAndroidResources extends AndroidResources
Artifact symbols,
@Nullable Artifact compiledSymbols,
Label label,
- StampedAndroidManifest manifest) {
+ StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext) {
super(resources);
this.symbols = symbols;
this.compiledSymbols = compiledSymbols;
this.label = label;
this.manifest = manifest;
+ this.dataBindingContext = dataBindingContext;
}
@Override
@@ -128,11 +150,9 @@ public class ParsedAndroidResources extends AndroidResources
MergedAndroidResources merge(
AndroidDataContext dataContext,
ResourceDependencies resourceDeps,
- boolean enableDataBinding,
AndroidAaptVersion aaptVersion)
throws InterruptedException {
- return MergedAndroidResources.mergeFrom(
- dataContext, this, resourceDeps, enableDataBinding, aaptVersion);
+ return MergedAndroidResources.mergeFrom(dataContext, this, resourceDeps, aaptVersion);
}
@Override
@@ -142,7 +162,8 @@ public class ParsedAndroidResources extends AndroidResources
return super.maybeFilter(errorConsumer, resourceFilter, isDependency)
.map(
resources ->
- ParsedAndroidResources.of(resources, symbols, compiledSymbols, label, manifest));
+ ParsedAndroidResources.of(
+ resources, symbols, compiledSymbols, label, manifest, dataBindingContext));
}
@Override
@@ -162,4 +183,18 @@ public class ParsedAndroidResources extends AndroidResources
public int hashCode() {
return Objects.hash(super.hashCode(), symbols, compiledSymbols, label, manifest);
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("symbols", symbols)
+ .add("compiledSymbols", compiledSymbols)
+ .add("label", label)
+ .add("manifest", manifest)
+ .toString();
+ }
+
+ public DataBindingContext asDataBindingContext() {
+ return dataBindingContext;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
index 484d29649d..f69128afd1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
@@ -19,6 +19,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import com.google.devtools.build.lib.rules.java.ProguardHelper;
import com.google.devtools.build.lib.syntax.Type;
import java.util.List;
@@ -68,7 +69,8 @@ public class ProcessedAndroidData {
boolean crunchPng,
boolean dataBindingEnabled,
@Nullable Artifact featureOf,
- @Nullable Artifact featureAfter)
+ @Nullable Artifact featureAfter,
+ DataBindingContext dataBindingContext)
throws RuleErrorException, InterruptedException {
if (conditionalKeepRules && aaptVersion != AndroidAaptVersion.AAPT2) {
throw errorConsumer.throwWithRuleError(
@@ -96,6 +98,7 @@ public class ProcessedAndroidData {
.setFeatureAfter(featureAfter);
return buildActionForBinary(
dataContext,
+ dataBindingContext,
errorConsumer,
builder,
manifest,
@@ -125,6 +128,7 @@ public class ProcessedAndroidData {
return buildActionForBinary(
dataContext,
+ DataBinding.contextFrom(ruleContext),
ruleContext,
builder,
manifest,
@@ -139,6 +143,7 @@ public class ProcessedAndroidData {
private static ProcessedAndroidData buildActionForBinary(
AndroidDataContext dataContext,
+ DataBindingContext dataBindingContext,
RuleErrorConsumer errorConsumer,
AndroidResourcesProcessorBuilder builder,
StampedAndroidManifest manifest,
@@ -164,12 +169,13 @@ public class ProcessedAndroidData {
.setCrunchPng(crunchPng)
.withResourceDependencies(resourceDeps)
.withAssetDependencies(assetDeps)
- .build(dataContext, resources, assets, manifest);
+ .build(dataContext, resources, assets, manifest, dataBindingContext);
}
/** Processes Android data (assets, resources, and manifest) for android_local_test targets. */
public static ProcessedAndroidData processLocalTestDataFrom(
AndroidDataContext dataContext,
+ DataBindingContext dataBindingContext,
StampedAndroidManifest manifest,
Map<String, String> manifestValues,
AndroidAaptVersion aaptVersion,
@@ -191,12 +197,13 @@ public class ProcessedAndroidData {
.setCrunchPng(false)
.withResourceDependencies(resourceDeps)
.withAssetDependencies(assetDeps)
- .build(dataContext, resources, assets, manifest);
+ .build(dataContext, resources, assets, manifest, dataBindingContext);
}
/** Processes Android data (assets, resources, and manifest) for android_test targets. */
public static ProcessedAndroidData processTestDataFrom(
AndroidDataContext dataContext,
+ DataBindingContext dataBindingContext,
StampedAndroidManifest manifest,
String packageUnderTest,
boolean hasLocalResourceFiles,
@@ -220,7 +227,7 @@ public class ProcessedAndroidData {
.withResourceDependencies(resourceDeps)
.withAssetDependencies(assetDeps);
- return builder.build(dataContext, resources, assets, manifest);
+ return builder.build(dataContext, resources, assets, manifest, dataBindingContext);
}
/**
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 bda6e3108e..2ab400cf93 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
@@ -18,6 +18,7 @@ import com.google.devtools.build.lib.analysis.OutputGroupInfo;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import java.util.Optional;
import javax.annotation.Nullable;
@@ -286,6 +287,7 @@ public final class ResourceApk {
*/
public static ResourceApk processFromTransitiveLibraryData(
AndroidDataContext dataContext,
+ DataBindingContext dataBindingContext,
ResourceDependencies resourceDeps,
AssetDependencies assetDeps,
StampedAndroidManifest manifest)
@@ -303,6 +305,6 @@ public final class ResourceApk {
.withAssetDependencies(assetDeps)
.setDebug(dataContext.useDebug())
.setThrowOnResourceConflict(dataContext.getAndroidConfig().throwOnResourceConflict())
- .buildWithoutLocalResources(dataContext, manifest);
+ .buildWithoutLocalResources(dataContext, manifest, dataBindingContext);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
index de1d6f49b8..c70239b8b3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
@@ -195,11 +195,12 @@ public class ValidatedAndroidResources extends MergedAndroidResources
new MergedAndroidResources(
new ParsedAndroidResources(
// Null out databinding to avoid accidentally propagating ActionCreationContext
- new AndroidResources(getResources(), getResourceRoots(), null),
+ new AndroidResources(getResources(), getResourceRoots()),
getSymbols(),
getCompiledSymbols(),
getLabel(),
- getStampedManifest()),
+ getStampedManifest(),
+ null),
getMergedResources(),
getClassJar(),
getDataBindingInfoZip(),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
index 368303df9d..f2169b5f4d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.Optional;
import org.junit.Before;
@@ -145,14 +146,12 @@ public class AndroidResourcesTest extends ResourceTestBase {
throws Exception {
RuleContext ruleContext = getRuleContext();
ValidatedAndroidResources unfiltered =
- new AndroidResources(
- unfilteredResources,
- getResourceRoots(unfilteredResources),
- DataBinding.asDisabledDataBindingContext())
+ new AndroidResources(unfilteredResources, getResourceRoots(unfilteredResources))
.process(
ruleContext,
AndroidDataContext.forNative(ruleContext),
getManifest(),
+ DataBinding.contextFrom(ruleContext),
/* neverlink = */ false);
Optional<? extends AndroidResources> maybeFiltered =
assertFilter(unfiltered, filteredResources, /* isDependency = */ true);
@@ -180,10 +179,7 @@ public class AndroidResourcesTest extends ResourceTestBase {
boolean isDependency)
throws Exception {
AndroidResources unfiltered =
- new AndroidResources(
- unfilteredResources,
- getResourceRoots(unfilteredResources),
- DataBinding.asDisabledDataBindingContext());
+ new AndroidResources(unfilteredResources, getResourceRoots(unfilteredResources));
assertFilter(unfiltered, filteredResources, isDependency);
}
@@ -230,7 +226,8 @@ public class AndroidResourcesTest extends ResourceTestBase {
useConfiguration("--android_aapt=aapt");
RuleContext ruleContext = getRuleContext();
- ParsedAndroidResources parsed = assertParse(ruleContext, /* enableDataBinding = */ true);
+ ParsedAndroidResources parsed =
+ assertParse(ruleContext, DataBinding.asEnabledDataBindingContextFrom(ruleContext));
// Since we are not using aapt2, there should be no compiled symbols
assertThat(parsed.getCompiledSymbols()).isNull();
@@ -271,9 +268,9 @@ public class AndroidResourcesTest extends ResourceTestBase {
mockAndroidSdkWithAapt2();
useConfiguration("--android_sdk=//sdk:sdk", "--android_aapt=aapt2");
- RuleContext ruleContext = getRuleContext();
+ RuleContext ruleContext = getRuleContextWithDataBinding();
- ParsedAndroidResources parsed = assertParse(ruleContext, /* enableDataBinding = */ true);
+ ParsedAndroidResources parsed = assertParse(ruleContext);
// The parse action should take resources and busybox artifacts in and output symbols
assertActionArtifacts(
@@ -290,20 +287,20 @@ public class AndroidResourcesTest extends ResourceTestBase {
.add(parsed.getManifest())
.build(),
/* outputs = */ ImmutableList.of(
- parsed.getCompiledSymbols(), DataBinding.getSuffixedInfoFile(ruleContext, "_unused")));
+ parsed.getCompiledSymbols(),
+ ParsedAndroidResources.getDummyDataBindingArtifact(ruleContext)));
}
@Test
public void testMergeDataBinding() throws Exception {
useConfiguration("--android_aapt=aapt");
- RuleContext ruleContext = getRuleContext();
+ RuleContext ruleContext = getRuleContextWithDataBinding();
ParsedAndroidResources parsed = assertParse(ruleContext);
MergedAndroidResources merged =
parsed.merge(
AndroidDataContext.forNative(ruleContext),
ResourceDependencies.empty(),
- /* enableDataBinding = */ true,
AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
// Besides processed manifest, inherited values should be equal
@@ -340,7 +337,6 @@ public class AndroidResourcesTest extends ResourceTestBase {
parsed.merge(
AndroidDataContext.forNative(ruleContext),
ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
- DataBinding.isEnabled(ruleContext),
AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
// Besides processed manifest, inherited values should be equal
@@ -502,7 +498,8 @@ public class AndroidResourcesTest extends ResourceTestBase {
false,
false,
null,
- null)
+ null,
+ DataBinding.contextFrom(ruleContext))
.generateRClass(dataContext, AndroidAaptVersion.AUTO);
assertThat(resourceApk.getResourceProguardConfig()).isNotNull();
@@ -514,26 +511,23 @@ public class AndroidResourcesTest extends ResourceTestBase {
* for further validation.
*/
private ParsedAndroidResources assertParse(RuleContext ruleContext) throws Exception {
- return assertParse(ruleContext, /* enableDataBinding = */ false);
+ return assertParse(ruleContext, DataBinding.contextFrom(ruleContext));
}
- private ParsedAndroidResources assertParse(RuleContext ruleContext, boolean enableDataBinding)
- throws Exception {
-
+ private ParsedAndroidResources assertParse(
+ RuleContext ruleContext, DataBindingContext dataBindingContext) throws Exception {
ImmutableList<Artifact> resources = getResources("values-en/foo.xml", "drawable-hdpi/bar.png");
AndroidResources raw =
new AndroidResources(
- resources,
- AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"),
- DataBinding.asDisabledDataBindingContext());
+ resources, AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"));
StampedAndroidManifest manifest = getManifest();
ParsedAndroidResources parsed =
raw.parse(
AndroidDataContext.forNative(ruleContext),
manifest,
- enableDataBinding,
- AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
+ AndroidAaptVersion.chooseTargetAaptVersion(ruleContext),
+ dataBindingContext);
// Inherited values should be equal
assertThat(raw).isEqualTo(new AndroidResources(parsed));
@@ -550,30 +544,19 @@ public class AndroidResourcesTest extends ResourceTestBase {
.merge(
AndroidDataContext.forNative(ruleContext),
ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
- DataBinding.isEnabled(ruleContext),
AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
}
private ParsedAndroidResources makeParsedResources(RuleContext ruleContext)
throws RuleErrorException, InterruptedException {
- return makeParsedResources(ruleContext, /* enableDataBinding = */ false);
- }
-
- private ParsedAndroidResources makeParsedResources(
- RuleContext ruleContext, boolean enableDataBinding)
- throws RuleErrorException, InterruptedException {
ImmutableList<Artifact> resources = getResources("values-en/foo.xml", "drawable-hdpi/bar.png");
return new AndroidResources(
- resources,
- AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"),
- enableDataBinding
- ? DataBinding.asEnabledDataBindingContextFrom(ruleContext)
- : DataBinding.asDisabledDataBindingContext())
+ resources, AndroidResources.getResourceRoots(ruleContext, resources, "resource_files"))
.parse(
AndroidDataContext.forNative(ruleContext),
getManifest(),
- enableDataBinding,
- AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
+ AndroidAaptVersion.chooseTargetAaptVersion(ruleContext),
+ DataBinding.contextFrom(ruleContext));
}
private ProcessedAndroidManifest getManifest() {
@@ -586,6 +569,10 @@ public class AndroidResourcesTest extends ResourceTestBase {
return getRuleContext("android_library");
}
+ private RuleContext getRuleContextWithDataBinding() throws Exception {
+ return getRuleContext("android_library", "enable_data_binding = 1");
+ }
+
/** Gets a dummy rule context object by creating a dummy target. */
private RuleContext getRuleContext(String kind, String... additionalLines) throws Exception {
ConfiguredTarget target =
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
index f569191128..1793e42b14 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactoryTest.java
@@ -62,11 +62,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
return ResourceContainer.builder()
.setAndroidResources(
- AndroidResources.forResources(
- errorConsumer,
- resources,
- "resource_files",
- DataBinding.asDisabledDataBindingContext()))
+ AndroidResources.forResources(errorConsumer, resources, "resource_files"))
.setLabel(label)
.setManifestExported(false)
.setManifest(manifest)
@@ -362,8 +358,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
AndroidResources.forResources(
errorConsumer,
ImmutableList.of(localResourceToKeep, localResourceToDiscard),
- "resource_files",
- DataBinding.asDisabledDataBindingContext());
+ "resource_files");
ResourceDependencies resourceDependencies =
ResourceDependencies.empty()
@@ -501,8 +496,7 @@ public class ResourceFilterFactoryTest extends ResourceTestBase {
ResourceFilterFactory resourceFilterFactory, ImmutableList<Artifact> artifacts)
throws RuleErrorException {
AndroidResources localResources =
- AndroidResources.forResources(
- errorConsumer, artifacts, "resource_files", DataBinding.asDisabledDataBindingContext());
+ AndroidResources.forResources(errorConsumer, artifacts, "resource_files");
ResourceDependencies resourceDeps = ResourceDependencies.empty();