Fix a couple of crashes when taskbar isn't yet attached
- Handle back to back addTaskbarIfNecessary(). Specifically, handle
cleanup() before the previous add was attached. This is already
handled on WM side, just had to remove isAttachedToWindow() check.
- Add isAttachedToWindow() check to isViewInTaskbar()
Test: call addTaskbarIfNecessary() three times back to back, ensure no crash.
Fixes: 180509238
Bug: 171917176
Change-Id: Id68b6c376029eb5c651f47afa56666391c516aef
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
index d01de65..5dddaf3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java
@@ -232,14 +232,10 @@
}
private void removeFromWindowManager() {
- if (mTaskbarContainerView.isAttachedToWindow()) {
- mWindowManager.removeViewImmediate(mTaskbarContainerView);
- }
+ mWindowManager.removeViewImmediate(mTaskbarContainerView);
}
private void addToWindowManager() {
- removeFromWindowManager();
-
final int gravity = Gravity.BOTTOM;
mWindowLayoutParams = new WindowManager.LayoutParams(
@@ -377,7 +373,8 @@
* @return Whether the given View is in the same window as Taskbar.
*/
public boolean isViewInTaskbar(View v) {
- return mTaskbarContainerView.getWindowId().equals(v.getWindowId());
+ return mTaskbarContainerView.isAttachedToWindow()
+ && mTaskbarContainerView.getWindowId().equals(v.getWindowId());
}
/**