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

Commit 13d2e2e1 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 ebdcc80a
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -26,6 +26,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.layoutlib.bridge.impl.ParserFactory;
import com.android.layoutlib.bridge.impl.ResourceHelper;
import com.android.resources.ResourceType;
@@ -329,8 +330,13 @@ public final class BridgeTypedArray extends TypedArray {


        try {
            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
            XmlPullParser parser = mContext.getLayoutlibCallback().getXmlFileParser(value);
                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
+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() {}