Loading tools/layoutlib/bridge/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ LOCAL_JAVACFLAGS := -source 6 -target 6 LOCAL_JAVA_LIBRARIES := \ kxml2-2.3.0 \ icu4j \ layoutlib_api-prebuilt \ tools-common-prebuilt Loading tools/layoutlib/bridge/bridge.iml +2 −3 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="icu4j" level="project" /> <orderEntry type="library" name="kxml2-2.3.0" level="project" /> <orderEntry type="library" name="layoutlib_api-prebuilt" level="project" /> <orderEntry type="library" name="ninepatch-prebuilt" level="project" /> <orderEntry type="library" name="tools-common-prebuilt" level="project" /> <orderEntry type="library" name="framework.jar" level="project" /> <orderEntry type="library" scope="TEST" name="kxml2-2.3.0" level="project" /> <orderEntry type="library" scope="TEST" name="guava" level="project" /> <orderEntry type="module-library" scope="TEST"> <library> Loading @@ -45,4 +45,3 @@ <orderEntry type="library" scope="TEST" name="JUnit4" level="application" /> </component> </module> No newline at end of file tools/layoutlib/bridge/src/android/util/Xml_Delegate.java +2 −6 Original line number Diff line number Diff line Loading @@ -17,9 +17,9 @@ package android.util; import com.android.layoutlib.bridge.impl.DelegateManager; import com.android.layoutlib.bridge.impl.ParserFactory; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import org.kxml2.io.KXmlParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -37,11 +37,7 @@ public class Xml_Delegate { @LayoutlibDelegate /*package*/ static XmlPullParser newPullParser() { try { KXmlParser parser = new KXmlParser(); // The prebuilt kxml2 library with the IDE doesn't support DOCECL. // parser.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); return parser; return ParserFactory.instantiateParser(null); } catch (XmlPullParserException e) { throw new AssertionError(); } Loading tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ParserFactory.java +31 −30 Original line number Diff line number Diff line Loading @@ -17,7 +17,10 @@ package com.android.layoutlib.bridge.impl; import org.kxml2.io.KXmlParser; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.ide.common.rendering.api.LayoutlibCallback; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -35,24 +38,35 @@ import java.io.InputStream; */ public class ParserFactory { public final static boolean LOG_PARSER = false; private final static String ENCODING = "UTF-8"; //$NON-NLS-1$ public final static boolean LOG_PARSER = false; // Used to get a new XmlPullParser from the client. @Nullable private static LayoutlibCallback sLayoutlibCallback; public static XmlPullParser create(File f) public static void setLayoutlibCallback(@Nullable LayoutlibCallback callback) { sLayoutlibCallback = callback; } @NonNull public static XmlPullParser create(@NonNull File f) throws XmlPullParserException, FileNotFoundException { InputStream stream = new FileInputStream(f); return create(stream, f.getName(), f.length()); } public static XmlPullParser create(InputStream stream, String name) @NonNull public static XmlPullParser create(@NonNull InputStream stream, @Nullable String name) throws XmlPullParserException { return create(stream, name, -1); } private static XmlPullParser create(InputStream stream, String name, long size) throws XmlPullParserException { KXmlParser parser = instantiateParser(name); @NonNull private static XmlPullParser create(@NonNull InputStream stream, @Nullable String name, long size) throws XmlPullParserException { XmlPullParser parser = instantiateParser(name); stream = readAndClose(stream, name, size); Loading @@ -60,19 +74,20 @@ public class ParserFactory { return parser; } private static KXmlParser instantiateParser(String name) throws XmlPullParserException { KXmlParser parser; if (name != null) { parser = new CustomParser(name); } else { parser = new KXmlParser(); @NonNull public static XmlPullParser instantiateParser(@Nullable String name) throws XmlPullParserException { if (sLayoutlibCallback == null) { throw new XmlPullParserException("ParserFactory not initialized."); } XmlPullParser parser = sLayoutlibCallback.createParser(name); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); return parser; } private static InputStream readAndClose(InputStream stream, String name, long size) throws XmlPullParserException { @NonNull private static InputStream readAndClose(@NonNull InputStream stream, @Nullable String name, long size) throws XmlPullParserException { // just a sanity check. It's doubtful we'll have such big files! if (size > Integer.MAX_VALUE) { throw new XmlPullParserException("File " + name + " is too big to be parsed"); Loading Loading @@ -121,22 +136,8 @@ public class ParserFactory { } finally { try { bufferedStream.close(); } catch (IOException e) { } } } catch (IOException ignored) { } private static class CustomParser extends KXmlParser { private final String mName; CustomParser(String name) { super(); mName = name; } @Override public String toString() { return mName; } } } tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,8 @@ import android.view.inputmethod.InputMethodManager_Accessor; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; import javax.swing.text.html.parser.Parser; import static com.android.ide.common.rendering.api.Result.Status.ERROR_LOCK_INTERRUPTED; import static com.android.ide.common.rendering.api.Result.Status.ERROR_TIMEOUT; import static com.android.ide.common.rendering.api.Result.Status.SUCCESS; Loading Loading @@ -99,6 +101,9 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso return result; } // setup the ParserFactory ParserFactory.setLayoutlibCallback(mParams.getLayoutlibCallback()); HardwareConfig hardwareConfig = mParams.getHardwareConfig(); // setup the display Metrics. Loading Loading @@ -271,6 +276,7 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso mContext.getRenderResources().setFrameworkResourceIdProvider(null); mContext.getRenderResources().setLogger(null); } ParserFactory.setLayoutlibCallback(null); } Loading Loading
tools/layoutlib/bridge/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ LOCAL_JAVACFLAGS := -source 6 -target 6 LOCAL_JAVA_LIBRARIES := \ kxml2-2.3.0 \ icu4j \ layoutlib_api-prebuilt \ tools-common-prebuilt Loading
tools/layoutlib/bridge/bridge.iml +2 −3 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="icu4j" level="project" /> <orderEntry type="library" name="kxml2-2.3.0" level="project" /> <orderEntry type="library" name="layoutlib_api-prebuilt" level="project" /> <orderEntry type="library" name="ninepatch-prebuilt" level="project" /> <orderEntry type="library" name="tools-common-prebuilt" level="project" /> <orderEntry type="library" name="framework.jar" level="project" /> <orderEntry type="library" scope="TEST" name="kxml2-2.3.0" level="project" /> <orderEntry type="library" scope="TEST" name="guava" level="project" /> <orderEntry type="module-library" scope="TEST"> <library> Loading @@ -45,4 +45,3 @@ <orderEntry type="library" scope="TEST" name="JUnit4" level="application" /> </component> </module> No newline at end of file
tools/layoutlib/bridge/src/android/util/Xml_Delegate.java +2 −6 Original line number Diff line number Diff line Loading @@ -17,9 +17,9 @@ package android.util; import com.android.layoutlib.bridge.impl.DelegateManager; import com.android.layoutlib.bridge.impl.ParserFactory; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import org.kxml2.io.KXmlParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -37,11 +37,7 @@ public class Xml_Delegate { @LayoutlibDelegate /*package*/ static XmlPullParser newPullParser() { try { KXmlParser parser = new KXmlParser(); // The prebuilt kxml2 library with the IDE doesn't support DOCECL. // parser.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); return parser; return ParserFactory.instantiateParser(null); } catch (XmlPullParserException e) { throw new AssertionError(); } Loading
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/ParserFactory.java +31 −30 Original line number Diff line number Diff line Loading @@ -17,7 +17,10 @@ package com.android.layoutlib.bridge.impl; import org.kxml2.io.KXmlParser; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.ide.common.rendering.api.LayoutlibCallback; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -35,24 +38,35 @@ import java.io.InputStream; */ public class ParserFactory { public final static boolean LOG_PARSER = false; private final static String ENCODING = "UTF-8"; //$NON-NLS-1$ public final static boolean LOG_PARSER = false; // Used to get a new XmlPullParser from the client. @Nullable private static LayoutlibCallback sLayoutlibCallback; public static XmlPullParser create(File f) public static void setLayoutlibCallback(@Nullable LayoutlibCallback callback) { sLayoutlibCallback = callback; } @NonNull public static XmlPullParser create(@NonNull File f) throws XmlPullParserException, FileNotFoundException { InputStream stream = new FileInputStream(f); return create(stream, f.getName(), f.length()); } public static XmlPullParser create(InputStream stream, String name) @NonNull public static XmlPullParser create(@NonNull InputStream stream, @Nullable String name) throws XmlPullParserException { return create(stream, name, -1); } private static XmlPullParser create(InputStream stream, String name, long size) throws XmlPullParserException { KXmlParser parser = instantiateParser(name); @NonNull private static XmlPullParser create(@NonNull InputStream stream, @Nullable String name, long size) throws XmlPullParserException { XmlPullParser parser = instantiateParser(name); stream = readAndClose(stream, name, size); Loading @@ -60,19 +74,20 @@ public class ParserFactory { return parser; } private static KXmlParser instantiateParser(String name) throws XmlPullParserException { KXmlParser parser; if (name != null) { parser = new CustomParser(name); } else { parser = new KXmlParser(); @NonNull public static XmlPullParser instantiateParser(@Nullable String name) throws XmlPullParserException { if (sLayoutlibCallback == null) { throw new XmlPullParserException("ParserFactory not initialized."); } XmlPullParser parser = sLayoutlibCallback.createParser(name); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); return parser; } private static InputStream readAndClose(InputStream stream, String name, long size) throws XmlPullParserException { @NonNull private static InputStream readAndClose(@NonNull InputStream stream, @Nullable String name, long size) throws XmlPullParserException { // just a sanity check. It's doubtful we'll have such big files! if (size > Integer.MAX_VALUE) { throw new XmlPullParserException("File " + name + " is too big to be parsed"); Loading Loading @@ -121,22 +136,8 @@ public class ParserFactory { } finally { try { bufferedStream.close(); } catch (IOException e) { } } } catch (IOException ignored) { } private static class CustomParser extends KXmlParser { private final String mName; CustomParser(String name) { super(); mName = name; } @Override public String toString() { return mName; } } }
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,8 @@ import android.view.inputmethod.InputMethodManager_Accessor; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; import javax.swing.text.html.parser.Parser; import static com.android.ide.common.rendering.api.Result.Status.ERROR_LOCK_INTERRUPTED; import static com.android.ide.common.rendering.api.Result.Status.ERROR_TIMEOUT; import static com.android.ide.common.rendering.api.Result.Status.SUCCESS; Loading Loading @@ -99,6 +101,9 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso return result; } // setup the ParserFactory ParserFactory.setLayoutlibCallback(mParams.getLayoutlibCallback()); HardwareConfig hardwareConfig = mParams.getHardwareConfig(); // setup the display Metrics. Loading Loading @@ -271,6 +276,7 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso mContext.getRenderResources().setFrameworkResourceIdProvider(null); mContext.getRenderResources().setLogger(null); } ParserFactory.setLayoutlibCallback(null); } Loading