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
This commit is contained in:
Tony Wickham
2021-02-17 15:20:31 -08:00
parent 15883891ea
commit 786dd93f2b

View File

@@ -232,14 +232,10 @@ public class TaskbarController {
}
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 @@ public class TaskbarController {
* @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());
}
/**