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

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

Merge "Throw exception when inset drawable is missing drawable attribute" into lmp-dev

parents 32e966cc 0bece71e
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -26,10 +26,13 @@ import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.Resources.Theme;
import android.graphics.*;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Insets;
import android.graphics.Outline;
import android.graphics.PorterDuff.Mode;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;

import java.io.IOException;

@@ -50,8 +53,6 @@ import java.io.IOException;
 * @attr ref android.R.styleable#InsetDrawable_insetBottom
 */
public class InsetDrawable extends Drawable implements Drawable.Callback {
    private static final String LOG_TAG = "InsetDrawable";

    private final Rect mTmpRect = new Rect();

    private InsetState mInsetState;
@@ -86,7 +87,6 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
        final TypedArray a = r.obtainAttributes(attrs, R.styleable.InsetDrawable);
        super.inflateWithAttributes(r, parser, a, R.styleable.InsetDrawable_visible);
        updateStateFromTypedArray(a);
        a.recycle();

        // Load inner XML elements.
        if (mInsetState.mDrawable == null) {
@@ -104,9 +104,17 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
            dr.setCallback(this);
        }

        // Verify state.
        if (mInsetState.mDrawable == null) {
            Log.w(LOG_TAG, "No drawable specified for <inset>");
        verifyRequiredAttributes(a);
        a.recycle();
    }

    private void verifyRequiredAttributes(TypedArray a) throws XmlPullParserException {
        // If we're not waiting on a theme, verify required attributes.
        if (mInsetState.mDrawable == null && (mInsetState.mThemeAttrs == null
                || mInsetState.mThemeAttrs[R.styleable.InsetDrawable_drawable] == 0)) {
            throw new XmlPullParserException(a.getPositionDescription() +
                    ": <inset> tag requires a 'drawable' attribute or "
                    + "child tag defining a drawable");
        }
    }

@@ -167,6 +175,7 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
        final TypedArray a = t.resolveAttributes(state.mThemeAttrs, R.styleable.InsetDrawable);
        try {
            updateStateFromTypedArray(a);
            verifyRequiredAttributes(a);
        } catch (XmlPullParserException e) {
            throw new RuntimeException(e);
        } finally {
@@ -224,12 +233,8 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
        padding.top += mInsetState.mInsetTop;
        padding.bottom += mInsetState.mInsetBottom;

        if (pad || (mInsetState.mInsetLeft | mInsetState.mInsetRight |
                    mInsetState.mInsetTop | mInsetState.mInsetBottom) != 0) {
            return true;
        } else {
            return false;
        }
        return pad || (mInsetState.mInsetLeft | mInsetState.mInsetRight |
                mInsetState.mInsetTop | mInsetState.mInsetBottom) != 0;
    }

    /** @hide */