diff options
author | Jerome Gaillard <jgaillard@google.com> | 2020-05-15 14:18:57 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-15 14:18:57 +0000 |
commit | 51b1770542a0ee022d224edbe73a667d73758c94 (patch) | |
tree | 51cbe0653ca0cb986f50c176aafc1e60cd6fcae2 | |
parent | ce81ff4e77dae22af658a0d410afad73cb26b1c6 (diff) | |
parent | b67f2436d60d4fad5d196149ece884cb7f8e170b (diff) | |
download | layoutlib-51b1770542a0ee022d224edbe73a667d73758c94.tar.gz |
Merge "[ATF integration] #2 Add validation to render path" into rvc-dev
-rw-r--r-- | bridge/Android.bp | 2 | ||||
-rw-r--r-- | bridge/bridge.iml | 1 | ||||
-rw-r--r-- | bridge/src/com/android/layoutlib/bridge/Bridge.java | 9 | ||||
-rw-r--r-- | bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java | 6 |
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() {} } |