OSDN Git Service

Revert "Throw exception when inset drawable is missing drawable attribute"
authorJeff Brown <jeffbrown@google.com>
Sat, 16 Aug 2014 02:05:50 +0000 (02:05 +0000)
committerJeff Brown <jeffbrown@google.com>
Sat, 16 Aug 2014 02:06:16 +0000 (02:06 +0000)
This reverts commit b16a6331cce2c3559ed9414c6aca238c5042e919.

Bug: 17072675
Change-Id: Ie2403095df10aa0dd18545a3d2a323ae463037e4

graphics/java/android/graphics/drawable/InsetDrawable.java

index 3359ebc..588e776 100644 (file)
@@ -26,13 +26,10 @@ import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.content.res.Resources.Theme;
-import android.graphics.Canvas;
-import android.graphics.ColorFilter;
-import android.graphics.Insets;
-import android.graphics.Outline;
+import android.graphics.*;
 import android.graphics.PorterDuff.Mode;
-import android.graphics.Rect;
 import android.util.AttributeSet;
+import android.util.Log;
 
 import java.io.IOException;
 
@@ -53,6 +50,8 @@ 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;
@@ -87,6 +86,7 @@ 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,19 +104,9 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
             dr.setCallback(this);
         }
 
-        verifyRequiredAttributes(a);
-        a.recycle();
-    }
-
-    private void verifyRequiredAttributes(TypedArray a) throws XmlPullParserException {
-        // If we're not waiting on a theme, verify required attributes.
-        if (mInsetState.mThemeAttrs == null) {
-            if (mInsetState.mThemeAttrs[R.styleable.InsetDrawable_drawable] != 0
-                    && mInsetState.mDrawable == null) {
-                throw new XmlPullParserException(a.getPositionDescription() +
-                        ": <inset> tag requires a 'drawable' attribute or "
-                        + "child tag defining a drawable");
-            }
+        // Verify state.
+        if (mInsetState.mDrawable == null) {
+            Log.w(LOG_TAG, "No drawable specified for <inset>");
         }
     }
 
@@ -177,7 +167,6 @@ 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 {
@@ -235,8 +224,12 @@ public class InsetDrawable extends Drawable implements Drawable.Callback {
         padding.top += mInsetState.mInsetTop;
         padding.bottom += mInsetState.mInsetBottom;
 
-        return pad || (mInsetState.mInsetLeft | mInsetState.mInsetRight |
-                mInsetState.mInsetTop | mInsetState.mInsetBottom) != 0;
+        if (pad || (mInsetState.mInsetLeft | mInsetState.mInsetRight |
+                    mInsetState.mInsetTop | mInsetState.mInsetBottom) != 0) {
+            return true;
+        } else {
+            return false;
+        }
     }
 
     /** @hide */