aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Gaillard <jgaillard@google.com>2020-05-15 14:18:57 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-15 14:18:57 +0000
commit51b1770542a0ee022d224edbe73a667d73758c94 (patch)
tree51cbe0653ca0cb986f50c176aafc1e60cd6fcae2
parentce81ff4e77dae22af658a0d410afad73cb26b1c6 (diff)
parentb67f2436d60d4fad5d196149ece884cb7f8e170b (diff)
downloadlayoutlib-51b1770542a0ee022d224edbe73a667d73758c94.tar.gz
Merge "[ATF integration] #2 Add validation to render path" into rvc-dev
-rw-r--r--bridge/Android.bp2
-rw-r--r--bridge/bridge.iml1
-rw-r--r--bridge/src/com/android/layoutlib/bridge/Bridge.java9
-rw-r--r--bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java6
4 files changed, 18 insertions, 0 deletions
diff --git a/bridge/Android.bp b/bridge/Android.bp
index bca63bcd70..02b147e759 100644
--- a/bridge/Android.bp
+++ b/bridge/Android.bp
@@ -25,6 +25,7 @@ java_library_host {
"layoutlib_api-prebuilt",
"tools-common-prebuilt",
"guava",
+ "layoutlib-validator"
],
static_libs: [
@@ -56,6 +57,7 @@ java_library_host {
"tools-common-prebuilt",
"ninepatch-prebuilt",
"layoutlib-common",
+ "layoutlib-validator",
],
dist: {
diff --git a/bridge/bridge.iml b/bridge/bridge.iml
index 2e782e223c..5d437cb167 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 0121e921bb..af1f964e3a 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.impl.RenderSessionImpl;
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 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge {
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 a2f59760fe..2640617d85 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 final class RenderParamsFlags {
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() {}
}