Loading packages/StatusBarPhone/src/com/android/policy/statusbar/phone/StatusBarIconView.java +30 −16 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,7 @@ public class StatusBarIconView extends AnimatedImageView { private StatusBarIcon mIcon; private StatusBarIcon mIcon; @ViewDebug.ExportedProperty private String mSlot; @ViewDebug.ExportedProperty private String mSlot; @ViewDebug.ExportedProperty private boolean mError; public StatusBarIconView(Context context, String slot) { public StatusBarIconView(Context context, String slot) { super(context); super(context); Loading @@ -52,16 +53,25 @@ public class StatusBarIconView extends AnimatedImageView { } } public void set(StatusBarIcon icon) { public void set(StatusBarIcon icon) { final boolean iconEquals = mIcon != null error: { final boolean iconEquals = !mError && mIcon != null && streq(mIcon.iconPackage, icon.iconPackage) && streq(mIcon.iconPackage, icon.iconPackage) && mIcon.iconId == icon.iconId; && mIcon.iconId == icon.iconId; final boolean levelEquals = iconEquals final boolean levelEquals = !mError && iconEquals && mIcon.iconLevel == icon.iconLevel; && mIcon.iconLevel == icon.iconLevel; final boolean visibilityEquals = mIcon != null final boolean visibilityEquals = !mError && mIcon != null && mIcon.visible == icon.visible; && mIcon.visible == icon.visible; mError = false; if (!iconEquals) { if (!iconEquals) { setImageDrawable(getIcon(icon)); Drawable drawable = getIcon(icon); // TODO: What if getIcon returns null? if (drawable == null) { mError = true; break error; } setImageDrawable(drawable); } } if (!levelEquals) { if (!levelEquals) { setImageLevel(icon.iconLevel); setImageLevel(icon.iconLevel); Loading @@ -71,6 +81,10 @@ public class StatusBarIconView extends AnimatedImageView { } } mIcon = icon.clone(); mIcon = icon.clone(); } } if (mError) { setVisibility(GONE); } } /** /** * Returns the right icon to use for this item, respecting the iconId and * Returns the right icon to use for this item, respecting the iconId and Loading tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -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") { new Test("Bad resource #2") { public void run() public void run() { { Loading Loading
packages/StatusBarPhone/src/com/android/policy/statusbar/phone/StatusBarIconView.java +30 −16 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,7 @@ public class StatusBarIconView extends AnimatedImageView { private StatusBarIcon mIcon; private StatusBarIcon mIcon; @ViewDebug.ExportedProperty private String mSlot; @ViewDebug.ExportedProperty private String mSlot; @ViewDebug.ExportedProperty private boolean mError; public StatusBarIconView(Context context, String slot) { public StatusBarIconView(Context context, String slot) { super(context); super(context); Loading @@ -52,16 +53,25 @@ public class StatusBarIconView extends AnimatedImageView { } } public void set(StatusBarIcon icon) { public void set(StatusBarIcon icon) { final boolean iconEquals = mIcon != null error: { final boolean iconEquals = !mError && mIcon != null && streq(mIcon.iconPackage, icon.iconPackage) && streq(mIcon.iconPackage, icon.iconPackage) && mIcon.iconId == icon.iconId; && mIcon.iconId == icon.iconId; final boolean levelEquals = iconEquals final boolean levelEquals = !mError && iconEquals && mIcon.iconLevel == icon.iconLevel; && mIcon.iconLevel == icon.iconLevel; final boolean visibilityEquals = mIcon != null final boolean visibilityEquals = !mError && mIcon != null && mIcon.visible == icon.visible; && mIcon.visible == icon.visible; mError = false; if (!iconEquals) { if (!iconEquals) { setImageDrawable(getIcon(icon)); Drawable drawable = getIcon(icon); // TODO: What if getIcon returns null? if (drawable == null) { mError = true; break error; } setImageDrawable(drawable); } } if (!levelEquals) { if (!levelEquals) { setImageLevel(icon.iconLevel); setImageLevel(icon.iconLevel); Loading @@ -71,6 +81,10 @@ public class StatusBarIconView extends AnimatedImageView { } } mIcon = icon.clone(); mIcon = icon.clone(); } } if (mError) { setVisibility(GONE); } } /** /** * Returns the right icon to use for this item, respecting the iconId and * Returns the right icon to use for this item, respecting the iconId and Loading
tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -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") { new Test("Bad resource #2") { public void run() public void run() { { Loading