Merge "Add guard around getXmlFileParser() call" into mnc-ub-dev
diff --git a/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java b/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java
index c8f1b80..ef681d2 100644
--- a/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java
+++ b/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java
@@ -26,6 +26,7 @@
import com.android.layoutlib.bridge.Bridge;
import com.android.layoutlib.bridge.android.BridgeContext;
import com.android.layoutlib.bridge.android.BridgeXmlBlockParser;
+import com.android.layoutlib.bridge.android.RenderParamsFlags;
import com.android.layoutlib.bridge.impl.ParserFactory;
import com.android.layoutlib.bridge.impl.ResourceHelper;
import com.android.resources.ResourceType;
@@ -329,8 +330,13 @@
try {
- // Get the state list file content from callback to parse PSI file
- XmlPullParser parser = mContext.getLayoutlibCallback().getXmlFileParser(value);
+ XmlPullParser parser = null;
+ Boolean psiParserSupport = mContext.getLayoutlibCallback().getFlag(
+ RenderParamsFlags.FLAG_KEY_XML_FILE_PARSER_SUPPORT);
+ if (psiParserSupport != null && psiParserSupport) {
+ // Get the state list file content from callback to parse PSI file
+ parser = mContext.getLayoutlibCallback().getXmlFileParser(value);
+ }
if (parser == null) {
// If used with a version of Android Studio that does not implement getXmlFileParser
// fall back to reading the file from disk
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
index b98f96f..bd17a2f 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
@@ -16,6 +16,7 @@
package com.android.layoutlib.bridge.android;
+import com.android.ide.common.rendering.api.LayoutlibCallback;
import com.android.ide.common.rendering.api.RenderParams;
import com.android.ide.common.rendering.api.SessionParams.Key;
@@ -42,11 +43,16 @@
public static final Key<Boolean> FLAG_KEY_RECYCLER_VIEW_SUPPORT =
new Key<Boolean>("recyclerViewSupport", Boolean.class);
/**
- * The application package name. Used via
- * {@link com.android.ide.common.rendering.api.LayoutlibCallback#getFlag(Key)}
+ * The application package name. Used via {@link LayoutlibCallback#getFlag(Key)}
*/
public static final Key<String> FLAG_KEY_APPLICATION_PACKAGE =
new Key<String>("applicationPackage", String.class);
+ /**
+ * To tell LayoutLib that IDE supports providing XML Parser for a file (useful for getting in
+ * memory contents of the file). Used via {@link LayoutlibCallback#getFlag(Key)}
+ */
+ public static final Key<Boolean> FLAG_KEY_XML_FILE_PARSER_SUPPORT =
+ new Key<Boolean>("xmlFileParser", Boolean.class);
// Disallow instances.
private RenderParamsFlags() {}