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

Commit 1f859716 authored by Doris Liu's avatar Doris Liu
Browse files

Restrict AVD and VD parsing to the current element instead of the whole document

This CL changes the AVD xml parsing to parsing only within the current
element, which prevents AVD parsing from always skipping to the end of
the doucment. So things that are defined after AVD in the same document
can be picked up by the xml parser.

The same fix has been applied to VD as well.

BUG: 31865175
Test: Manually following comment #1 in the bug above

Change-Id: I4ebdce1eb2e92d6f6e2c37caed9607253d24602f
parent 20cf0015
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -455,7 +455,11 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 {

        int eventType = parser.getEventType();
        float pathErrorScale = 1;
        while (eventType != XmlPullParser.END_DOCUMENT) {
        final int innerDepth = parser.getDepth() + 1;

        // Parse everything until the end of the animated-vector element.
        while (eventType != XmlPullParser.END_DOCUMENT
                && (parser.getDepth() >= innerDepth || eventType != XmlPullParser.END_TAG)) {
            if (eventType == XmlPullParser.START_TAG) {
                final String tagName = parser.getName();
                if (ANIMATED_VECTOR.equals(tagName)) {
+5 −1
Original line number Diff line number Diff line
@@ -710,7 +710,11 @@ public class VectorDrawable extends Drawable {
        groupStack.push(state.mRootGroup);

        int eventType = parser.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
        final int innerDepth = parser.getDepth() + 1;

        // Parse everything until the end of the vector element.
        while (eventType != XmlPullParser.END_DOCUMENT
                && (parser.getDepth() >= innerDepth || eventType != XmlPullParser.END_TAG)) {
            if (eventType == XmlPullParser.START_TAG) {
                final String tagName = parser.getName();
                final VGroup currentGroup = groupStack.peek();