Merge "Fix drawable CTS breakages" into mnc-dev
diff --git a/graphics/java/android/graphics/drawable/ClipDrawable.java b/graphics/java/android/graphics/drawable/ClipDrawable.java
index 2acf602..31fccd0 100644
--- a/graphics/java/android/graphics/drawable/ClipDrawable.java
+++ b/graphics/java/android/graphics/drawable/ClipDrawable.java
@@ -150,6 +150,23 @@
}
@Override
+ public int getOpacity() {
+ final Drawable dr = getDrawable();
+ final int opacity = dr.getOpacity();
+ if (opacity == PixelFormat.TRANSPARENT || dr.getLevel() == 0) {
+ return PixelFormat.TRANSPARENT;
+ }
+
+ final int level = getLevel();
+ if (level >= MAX_LEVEL) {
+ return dr.getOpacity();
+ }
+
+ // Some portion of non-transparent drawable is showing.
+ return PixelFormat.TRANSLUCENT;
+ }
+
+ @Override
public void draw(Canvas canvas) {
final Drawable dr = getDrawable();
if (dr.getLevel() == 0) {
diff --git a/graphics/java/android/graphics/drawable/DrawableWrapper.java b/graphics/java/android/graphics/drawable/DrawableWrapper.java
index 58d43f9..9185e1a 100644
--- a/graphics/java/android/graphics/drawable/DrawableWrapper.java
+++ b/graphics/java/android/graphics/drawable/DrawableWrapper.java
@@ -180,7 +180,8 @@
@Override
public int getChangingConfigurations() {
return super.getChangingConfigurations()
- | (mState != null ? mState.getChangingConfigurations() : 0);
+ | (mState != null ? mState.getChangingConfigurations() : 0)
+ | mDrawable.getChangingConfigurations();
}
@Override
@@ -366,15 +367,12 @@
}
/**
- * Called during inflation to inflate the child element.
+ * Called during inflation to inflate the child element. The last valid
+ * child element will take precedence over any other child elements or
+ * explicit drawable attribute.
*/
void inflateChildDrawable(Resources r, XmlPullParser parser, AttributeSet attrs,
Resources.Theme theme) throws XmlPullParserException, IOException {
- // Drawable specified on the root element takes precedence.
- if (getDrawable() != null) {
- return;
- }
-
// Seek to the first child element.
Drawable dr = null;
int type;
@@ -383,7 +381,6 @@
&& (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
if (type == XmlPullParser.START_TAG) {
dr = Drawable.createFromXmlInner(r, parser, attrs, theme);
- break;
}
}