summaryrefslogtreecommitdiff
path: root/compilerCommon
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2015-10-06 14:13:24 -0700
committerGeorge Mount <mount@google.com>2015-10-07 13:17:23 -0700
commit8510dab6a17ccd59a2a9cbc07f900dfc2f11ff2b (patch)
tree46841f1f24163cec62da0aab444844894a979ff1 /compilerCommon
parent90d6351746810033df84e2e6878584d64ebae098 (diff)
downloaddata-binding-8510dab6a17ccd59a2a9cbc07f900dfc2f11ff2b.tar.gz
Support including data binding layout with no variables.
Bug 24710573 Change-Id: Ic2461e5e2c440f66fe95b9714b9cbcb61f8bd82d
Diffstat (limited to 'compilerCommon')
-rw-r--r--compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java9
-rw-r--r--compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java12
2 files changed, 13 insertions, 8 deletions
diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java
index 89a52137..fcf0379d 100644
--- a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java
+++ b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java
@@ -166,13 +166,8 @@ public class LayoutFileParser {
} else if (ctx == rootView) {
return true;
}
- if (hasIncludeChild(ctx)) {
- return true;
- }
- if (XmlEditor.hasExpressionAttributes(ctx)) {
- return true;
- }
- return false;
+ return hasIncludeChild(ctx) || XmlEditor.hasExpressionAttributes(ctx) ||
+ "include".equals(ctx.elmName.getText());
}
private boolean hasIncludeChild(XMLParser.ElementContext ctx) {
diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java
index e8215f86..e9879edf 100644
--- a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java
+++ b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java
@@ -86,18 +86,28 @@ public class ResourceBundle implements Serializable {
public void validateMultiResLayouts() {
for (List<LayoutFileBundle> layoutFileBundles : mLayoutBundles.values()) {
for (LayoutFileBundle layoutFileBundle : layoutFileBundles) {
+ List<BindingTargetBundle> unboundIncludes = new ArrayList<>();
for (BindingTargetBundle target : layoutFileBundle.getBindingTargetBundles()) {
if (target.isBinder()) {
List<LayoutFileBundle> boundTo =
mLayoutBundles.get(target.getIncludedLayout());
if (boundTo == null || boundTo.isEmpty()) {
- L.e("There is no binding for %s", target.getIncludedLayout());
+ L.d("There is no binding for %s, reverting to plain layout",
+ target.getIncludedLayout());
+ if (target.getId() == null) {
+ unboundIncludes.add(target);
+ } else {
+ target.setIncludedLayout(null);
+ target.setInterfaceType("android.view.View");
+ target.mViewName = "android.view.View";
+ }
} else {
String binding = boundTo.get(0).getFullBindingClass();
target.setInterfaceType(binding);
}
}
}
+ layoutFileBundle.getBindingTargetBundles().removeAll(unboundIncludes);
}
}