Handle bad icon resources.
Change-Id: I87c5fe68ad8016596068ba7889f3b6d36da3386b
This commit is contained in:
@@ -32,6 +32,7 @@ public class StatusBarIconView extends AnimatedImageView {
|
||||
|
||||
private StatusBarIcon mIcon;
|
||||
@ViewDebug.ExportedProperty private String mSlot;
|
||||
@ViewDebug.ExportedProperty private boolean mError;
|
||||
|
||||
public StatusBarIconView(Context context, String slot) {
|
||||
super(context);
|
||||
@@ -52,24 +53,37 @@ public class StatusBarIconView extends AnimatedImageView {
|
||||
}
|
||||
|
||||
public void set(StatusBarIcon icon) {
|
||||
final boolean iconEquals = mIcon != null
|
||||
&& streq(mIcon.iconPackage, icon.iconPackage)
|
||||
&& mIcon.iconId == icon.iconId;
|
||||
final boolean levelEquals = iconEquals
|
||||
&& mIcon.iconLevel == icon.iconLevel;
|
||||
final boolean visibilityEquals = mIcon != null
|
||||
&& mIcon.visible == icon.visible;
|
||||
if (!iconEquals) {
|
||||
setImageDrawable(getIcon(icon));
|
||||
// TODO: What if getIcon returns null?
|
||||
error: {
|
||||
final boolean iconEquals = !mError
|
||||
&& mIcon != null
|
||||
&& streq(mIcon.iconPackage, icon.iconPackage)
|
||||
&& mIcon.iconId == icon.iconId;
|
||||
final boolean levelEquals = !mError
|
||||
&& iconEquals
|
||||
&& mIcon.iconLevel == icon.iconLevel;
|
||||
final boolean visibilityEquals = !mError
|
||||
&& mIcon != null
|
||||
&& mIcon.visible == icon.visible;
|
||||
mError = false;
|
||||
if (!iconEquals) {
|
||||
Drawable drawable = getIcon(icon);
|
||||
if (drawable == null) {
|
||||
mError = true;
|
||||
break error;
|
||||
}
|
||||
setImageDrawable(drawable);
|
||||
}
|
||||
if (!levelEquals) {
|
||||
setImageLevel(icon.iconLevel);
|
||||
}
|
||||
if (!visibilityEquals) {
|
||||
setVisibility(icon.visible ? VISIBLE : GONE);
|
||||
}
|
||||
mIcon = icon.clone();
|
||||
}
|
||||
if (!levelEquals) {
|
||||
setImageLevel(icon.iconLevel);
|
||||
if (mError) {
|
||||
setVisibility(GONE);
|
||||
}
|
||||
if (!visibilityEquals) {
|
||||
setVisibility(icon.visible ? VISIBLE : GONE);
|
||||
}
|
||||
mIcon = icon.clone();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -122,6 +122,16 @@ public class NotificationTestList extends TestActivity
|
||||
}
|
||||
},
|
||||
|
||||
new Test("Bad Icon") {
|
||||
public void run() {
|
||||
mNM.notify(1, new Notification(NotificationTestList.this,
|
||||
R.layout.chrono_notification, /* not a drawable! */
|
||||
null, System.currentTimeMillis()-(1000*60*60*24),
|
||||
"(453) 123-2328",
|
||||
"", null));
|
||||
}
|
||||
},
|
||||
|
||||
new Test("Bad resource #2") {
|
||||
public void run()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user