Merge "Fixes to handleAppDiedLocked." into klp-dev
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 4d66946..dd2f4c4 100644
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -3438,23 +3438,22 @@
         // Determine if the top task is exiting and should return to home. Do this before it gets
         // removed in removeHistoryRecordsForAppsLocked.
         boolean launchHomeNext = false;
-        int top = mTaskHistory.size() - 1;
-        while (top >= 0) {
-            final TaskRecord topTask = mTaskHistory.get(top);
-            if (topTask.mActivities.isEmpty()) {
-                // Not possible, but just in case.
-                --top;
+        TaskRecord topTask = mTaskHistory.get(mTaskHistory.size() - 1);
+        ArrayList<ActivityRecord> activities = topTask.mActivities;
+        int activityNdx;
+        for (activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
+            ActivityRecord r = activities.get(activityNdx);
+            if (r.finishing) {
                 continue;
             }
-            ActivityRecord r = topTask.topRunningActivityLocked(null);
-            if (r != null) {
-                // r will be launched next.
+            if (r.app != app) {
+                // This is the dying activity.
                 break;
             }
-            // There is an activity in topTask that is finishing. If topTask belongs to the app
-            // return to home depending on the task flag.
+        }
+        if (activityNdx < 0) {
+            // All activities in task belong to app. Set launchHomeNext to task's value.
             launchHomeNext = topTask.mOnTopOfHome;
-            break;
         }
 
         removeHistoryRecordsForAppLocked(app);
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java
index f718706..2db67d5 100644
--- a/services/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1932,7 +1932,7 @@
         for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
             final ActivityStack stack = mStacks.get(stackNdx);
             // Only update launchHomeTaskNext for the focused stack.
-            launchHomeTaskNext |= (stack == focusedStack && stack.handleAppDiedLocked(app));
+            launchHomeTaskNext |= (stack.handleAppDiedLocked(app) && stack == focusedStack);
         }
 
         if (!restarting) {