Merge commit 'f9f9e248' into manualmerge
Conflicts:
packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
Change-Id: Ibbb2fec2d8c6f5d41398272753d271dfae698100
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 @@
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 @@
}
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();