diff options
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java | 6 | ||||
-rw-r--r-- | tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java | 21 |
2 files changed, 25 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 3ef12f9..81091e3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -175,8 +175,10 @@ public class CommandQueue extends IStatusBar.Stub { break; } case OP_REMOVE_ICON: - mList.removeIcon(index); - mCallbacks.removeIcon(mList.getSlot(index), index, viewIndex); + if (mList.getIcon(index) != null) { + mList.removeIcon(index); + mCallbacks.removeIcon(mList.getSlot(index), index, viewIndex); + } break; } break; diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java index ca438ec..7e69ee4 100644 --- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java +++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java @@ -60,6 +60,27 @@ public class StatusBarTest extends TestActivity } private Test[] mTests = new Test[] { + new Test("Double Remove") { + public void run() { + Log.d(TAG, "set 0"); + mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0); + Log.d(TAG, "remove 1"); + mStatusBarManager.removeIcon("tty"); + + SystemClock.sleep(1000); + + Log.d(TAG, "set 1"); + mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0); + if (false) { + Log.d(TAG, "set 2"); + mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0); + } + Log.d(TAG, "remove 2"); + mStatusBarManager.removeIcon("tty"); + Log.d(TAG, "set 3"); + mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0); + } + }, new Test("Hide (FLAG_FULLSCREEN)") { public void run() { Window win = getWindow(); |