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

Commit 272e2f73 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Ensure we don't pass null values in to Theme.resolveAttributes" into lmp-mr1-dev

parents e0a3bcfb 7f4a63d1
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.content.res;

import android.animation.Animator;
import android.animation.StateListAnimator;
import android.annotation.NonNull;
import android.util.Pools.SynchronizedPool;
import android.view.ViewDebug;
import com.android.internal.util.XmlUtils;
@@ -1548,20 +1549,21 @@ public class Resources {
         * contents of the typed array are ultimately filled in by
         * {@link Resources#getValue}.
         *
         * @param values The base set of attribute values, must be equal
         *               in length to {@code attrs} or {@code null}. All values
         *               must be of type {@link TypedValue#TYPE_ATTRIBUTE}.
         * @param values The base set of attribute values, must be equal in
         *               length to {@code attrs}. All values must be of type
         *               {@link TypedValue#TYPE_ATTRIBUTE}.
         * @param attrs The desired attributes to be retrieved.
         * @return Returns a TypedArray holding an array of the attribute
         *         values. Be sure to call {@link TypedArray#recycle()}
         *         when done with it.
         * @hide
         */
        public TypedArray resolveAttributes(int[] values, int[] attrs) {
        @NonNull
        public TypedArray resolveAttributes(@NonNull int[] values, @NonNull int[] attrs) {
            final int len = attrs.length;
            if (values != null && len != values.length) {
            if (values == null || len != values.length) {
                throw new IllegalArgumentException(
                        "Base attribute values must be null or the same length as attrs");
                        "Base attribute values must the same length as attrs");
            }

            final TypedArray array = TypedArray.obtain(Resources.this, len);
+1 −1
Original line number Diff line number Diff line
@@ -361,7 +361,7 @@ public class AnimatedStateListDrawable extends StateListDrawable {
        super.applyTheme(theme);

        final AnimatedStateListState state = mState;
        if (state == null || !state.canApplyTheme()) {
        if (state == null || state.mAnimThemeAttrs == null) {
            return;
        }

+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ public class ClipDrawable extends Drawable implements Drawable.Callback {
        super.applyTheme(t);

        final ClipState state = mState;
        if (state == null) {
        if (state == null || state.mThemeAttrs == null) {
            return;
        }

+11 −8
Original line number Diff line number Diff line
@@ -427,6 +427,7 @@ public class RotateDrawable extends Drawable implements Drawable.Callback {
            return;
        }

        if (state.mThemeAttrs != null) {
            final TypedArray a = t.resolveAttributes(state.mThemeAttrs, R.styleable.RotateDrawable);
            try {
                updateStateFromTypedArray(a);
@@ -436,10 +437,12 @@ public class RotateDrawable extends Drawable implements Drawable.Callback {
            } finally {
                a.recycle();
            }
        }

        if (state.mDrawable != null && state.mDrawable.canApplyTheme()) {
            state.mDrawable.applyTheme(t);
        }

    }

    private void inflateChildElements(Resources r, XmlPullParser parser, AttributeSet attrs,
+1 −1
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback {
            return;
        }

        if (state.mThemeAttrs == null) {
        if (state.mThemeAttrs != null) {
            final TypedArray a = t.resolveAttributes(state.mThemeAttrs, R.styleable.ScaleDrawable);
            try {
                updateStateFromTypedArray(a);