Don't clear mExiting if window is going to be removed.
bug: 26819496
Change-Id: I7ab1f45f8d32bc086ded579b46b6b5e9b32771a0
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 6452fee..7ec945d 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -302,7 +302,12 @@
void setWindowsExiting(boolean exiting) {
for (int i = allAppWindows.size() - 1; i >= 0; i--) {
WindowState win = allAppWindows.get(i);
- win.mExiting = exiting;
+ // If the app already requested to remove its window, we don't modify
+ // its exiting state. Otherwise the stale window won't get removed on
+ // exit and could cause focus to be given to the wrong window.
+ if (!(win.mRemoveOnExit && win.mExiting)) {
+ win.mExiting = exiting;
+ }
}
}