Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd6e47e4 authored by Deepanshu Gupta's avatar Deepanshu Gupta
Browse files

Add guard around getXmlFileParser() call

Prevents the need to update the LayoutLib API level.

Bug: http://b.android.com/202942
Change-Id: I507239148ab8d6d45406624dba569c8b7197f979
parent 8c536f91
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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 final class RenderParamsFlags {
    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() {}
+7 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.internal.util.XmlUtils;
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.ninepatch.NinePatch;
import com.android.ninepatch.NinePatchChunk;
import com.android.resources.Density;
@@ -142,8 +143,13 @@ public final class ResourceHelper {
            return null;
        }

        XmlPullParser parser = null;
        // 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) {
            File f = new File(value);
            if (f.isFile()) {