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
This commit is contained in:
@ -455,7 +455,11 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 {
|
|||||||
|
|
||||||
int eventType = parser.getEventType();
|
int eventType = parser.getEventType();
|
||||||
float pathErrorScale = 1;
|
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) {
|
if (eventType == XmlPullParser.START_TAG) {
|
||||||
final String tagName = parser.getName();
|
final String tagName = parser.getName();
|
||||||
if (ANIMATED_VECTOR.equals(tagName)) {
|
if (ANIMATED_VECTOR.equals(tagName)) {
|
||||||
|
@ -710,7 +710,11 @@ public class VectorDrawable extends Drawable {
|
|||||||
groupStack.push(state.mRootGroup);
|
groupStack.push(state.mRootGroup);
|
||||||
|
|
||||||
int eventType = parser.getEventType();
|
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) {
|
if (eventType == XmlPullParser.START_TAG) {
|
||||||
final String tagName = parser.getName();
|
final String tagName = parser.getName();
|
||||||
final VGroup currentGroup = groupStack.peek();
|
final VGroup currentGroup = groupStack.peek();
|
||||||
|
Reference in New Issue
Block a user