Merge "[ATF integration] #2 Add validation to render path" into rvc-dev am: 51b1770542 am: d3850f6663 am: 90e2fb968c am: d6efd3f8eb
Change-Id: I884b00dda559d4b6d2007455db58c703f75273fc
diff --git a/bridge/Android.bp b/bridge/Android.bp
index bca63bc..02b147e 100644
--- a/bridge/Android.bp
+++ b/bridge/Android.bp
@@ -25,6 +25,7 @@
"layoutlib_api-prebuilt",
"tools-common-prebuilt",
"guava",
+ "layoutlib-validator"
],
static_libs: [
@@ -56,6 +57,7 @@
"tools-common-prebuilt",
"ninepatch-prebuilt",
"layoutlib-common",
+ "layoutlib-validator",
],
dist: {
diff --git a/bridge/bridge.iml b/bridge/bridge.iml
index 2e782e2..5d437cb 100644
--- a/bridge/bridge.iml
+++ b/bridge/bridge.iml
@@ -92,5 +92,6 @@
</SOURCES>
</library>
</orderEntry>
+ <orderEntry type="module" module-name="validator" />
</component>
</module>
\ No newline at end of file
diff --git a/bridge/src/com/android/layoutlib/bridge/Bridge.java b/bridge/src/com/android/layoutlib/bridge/Bridge.java
index 0121e92..af1f964 100644
--- a/bridge/src/com/android/layoutlib/bridge/Bridge.java
+++ b/bridge/src/com/android/layoutlib/bridge/Bridge.java
@@ -30,6 +30,8 @@
import com.android.layoutlib.bridge.util.DynamicIdMap;
import com.android.ninepatch.NinePatchChunk;
import com.android.resources.ResourceType;
+import com.android.tools.idea.validator.LayoutValidator;
+import com.android.tools.idea.validator.ValidatorResult;
import com.android.tools.layoutlib.annotations.Nullable;
import com.android.tools.layoutlib.create.MethodAdapter;
import com.android.tools.layoutlib.create.OverrideMethod;
@@ -378,6 +380,13 @@
if (lastResult.isSuccess() && !doNotRenderOnCreate) {
lastResult = scene.render(true /*freshRender*/);
}
+
+ boolean enableLayoutValidation = Boolean.TRUE.equals(
+ params.getFlag(RenderParamsFlags.FLAG_ENABLE_LAYOUT_VALIDATOR));
+ if (enableLayoutValidation && !scene.getViewInfos().isEmpty()) {
+ ValidatorResult validatorResult = LayoutValidator.validate(((View) scene.getViewInfos().get(0).getViewObject()));
+ lastResult = lastResult.getCopyWithData(validatorResult);
+ }
}
} finally {
scene.release();
diff --git a/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java b/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
index a2f5976..2640617 100644
--- a/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
+++ b/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
@@ -87,6 +87,12 @@
public static final Key<Boolean> FLAG_ENABLE_SHADOW =
new Key<>("enableShadow", Boolean.class);
+ /**
+ * Enables layout validation calls within rendering.
+ */
+ public static final Key<Boolean> FLAG_ENABLE_LAYOUT_VALIDATOR =
+ new Key<>("enableLayoutValidator", Boolean.class);
+
// Disallow instances.
private RenderParamsFlags() {}
}