Merge "Add guard around getXmlFileParser() call" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a96d258fdf
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.layoutlib.bridge.android;
|
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.RenderParams;
|
||||||
import com.android.ide.common.rendering.api.SessionParams.Key;
|
import com.android.ide.common.rendering.api.SessionParams.Key;
|
||||||
|
|
||||||
@@ -42,11 +43,16 @@ public final class RenderParamsFlags {
|
|||||||
public static final Key<Boolean> FLAG_KEY_RECYCLER_VIEW_SUPPORT =
|
public static final Key<Boolean> FLAG_KEY_RECYCLER_VIEW_SUPPORT =
|
||||||
new Key<Boolean>("recyclerViewSupport", Boolean.class);
|
new Key<Boolean>("recyclerViewSupport", Boolean.class);
|
||||||
/**
|
/**
|
||||||
* The application package name. Used via
|
* The application package name. Used via {@link LayoutlibCallback#getFlag(Key)}
|
||||||
* {@link com.android.ide.common.rendering.api.LayoutlibCallback#getFlag(Key)}
|
|
||||||
*/
|
*/
|
||||||
public static final Key<String> FLAG_KEY_APPLICATION_PACKAGE =
|
public static final Key<String> FLAG_KEY_APPLICATION_PACKAGE =
|
||||||
new Key<String>("applicationPackage", String.class);
|
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.
|
// Disallow instances.
|
||||||
private RenderParamsFlags() {}
|
private RenderParamsFlags() {}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import com.android.internal.util.XmlUtils;
|
|||||||
import com.android.layoutlib.bridge.Bridge;
|
import com.android.layoutlib.bridge.Bridge;
|
||||||
import com.android.layoutlib.bridge.android.BridgeContext;
|
import com.android.layoutlib.bridge.android.BridgeContext;
|
||||||
import com.android.layoutlib.bridge.android.BridgeXmlBlockParser;
|
import com.android.layoutlib.bridge.android.BridgeXmlBlockParser;
|
||||||
|
import com.android.layoutlib.bridge.android.RenderParamsFlags;
|
||||||
import com.android.ninepatch.NinePatch;
|
import com.android.ninepatch.NinePatch;
|
||||||
import com.android.ninepatch.NinePatchChunk;
|
import com.android.ninepatch.NinePatchChunk;
|
||||||
import com.android.resources.Density;
|
import com.android.resources.Density;
|
||||||
@@ -142,8 +143,13 @@ public final class ResourceHelper {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XmlPullParser parser = null;
|
||||||
// first check if the value is a file (xml most likely)
|
// first check if the value is a file (xml most likely)
|
||||||
XmlPullParser parser = context.getLayoutlibCallback().getXmlFileParser(value);
|
Boolean psiParserSupport = context.getLayoutlibCallback().getFlag(
|
||||||
|
RenderParamsFlags.FLAG_KEY_XML_FILE_PARSER_SUPPORT);
|
||||||
|
if (psiParserSupport != null && psiParserSupport) {
|
||||||
|
parser = context.getLayoutlibCallback().getXmlFileParser(value);
|
||||||
|
}
|
||||||
if (parser == null) {
|
if (parser == null) {
|
||||||
File f = new File(value);
|
File f = new File(value);
|
||||||
if (f.isFile()) {
|
if (f.isFile()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user