Merge "Further improvement to determining visiblility of tasks in home stack." into nyc-dev
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 0bccffa..8560a9e 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1587,6 +1587,33 @@
                 // determined individually unlike other stacks where the visibility or fullscreen
                 // status of an activity in a previous task affects other.
                 behindFullscreenActivity = stackVisibility == STACK_INVISIBLE;
+            } else if (mStackId == HOME_STACK_ID) {
+                if (task.isHomeTask()) {
+                    if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + task
+                            + " stackInvisible=" + stackInvisible
+                            + " behindFullscreenActivity=" + behindFullscreenActivity);
+                    // No other task in the home stack should be visible behind the home activity.
+                    // Home activities is usually a translucent activity with the wallpaper behind
+                    // them. However, when they don't have the wallpaper behind them, we want to
+                    // show activities in the next application stack behind them vs. another
+                    // task in the home stack like recents.
+                    behindFullscreenActivity = true;
+                } else if (task.isRecentsTask()
+                        && task.getTaskToReturnTo() == APPLICATION_ACTIVITY_TYPE) {
+                    if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
+                            "Recents task returning to app: at " + task
+                                    + " stackInvisible=" + stackInvisible
+                                    + " behindFullscreenActivity=" + behindFullscreenActivity);
+                    // We don't want any other tasks in the home stack visible if the recents
+                    // activity is going to be returning to an application activity type.
+                    // We do this to preserve the visible order the user used to get into the
+                    // recents activity. The recents activity is normally translucent and if it
+                    // doesn't have the wallpaper behind it the next activity in the home stack
+                    // shouldn't be visible when the home stack is brought to the front to display
+                    // the recents activity from an app.
+                    behindFullscreenActivity = true;
+                }
+
             }
         }
 
@@ -1687,33 +1714,7 @@
                         + " behindFullscreenActivity=" + behindFullscreenActivity);
             // At this point, nothing else needs to be shown in this task.
             behindFullscreenActivity = true;
-        } else if (isHomeStack()) {
-            if (r.isHomeActivity()) {
-                if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home activity: at " + r
-                        + " stackInvisible=" + stackInvisible
-                        + " behindFullscreenActivity=" + behindFullscreenActivity);
-                // No other activity in the home stack should be visible behind the home activity.
-                // Home activities is usually a translucent activity with the wallpaper behind them.
-                // However, when they don't have the wallpaper behind them, we want to show
-                // activities in the next application stack behind them vs. another activity in the
-                // home stack like recents.
-                behindFullscreenActivity = true;
-            } else if (r.isRecentsActivity()
-                    && task.getTaskToReturnTo() == APPLICATION_ACTIVITY_TYPE) {
-                if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
-                        "Recents activity returning to app: at " + r
-                        + " stackInvisible=" + stackInvisible
-                        + " behindFullscreenActivity=" + behindFullscreenActivity);
-                // We don't want any other activities in the home stack visible if the recents
-                // activity is going to be returning to an application activity type.
-                // We do this to preserve the visible order the user used to get into the recents
-                // activity. The recents activity is normally translucent and if it doesn't have
-                // the wallpaper behind it the next activity in the home stack shouldn't be visible
-                // when the home stack is brought to the front to display the recents activity from
-                // an app.
-                behindFullscreenActivity = true;
-            }
-        } else if (r.frontOfTask && task.isOverHomeStack()) {
+        } else if (!isHomeStack() && r.frontOfTask && task.isOverHomeStack()) {
             if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Showing home: at " + r
                     + " stackInvisible=" + stackInvisible
                     + " behindFullscreenActivity=" + behindFullscreenActivity);
diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index 10f0977..98a7ead 100644
--- a/services/core/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -933,10 +933,15 @@
         }
         return false;
     }
+
     boolean isHomeTask() {
         return taskType == HOME_ACTIVITY_TYPE;
     }
 
+    boolean isRecentsTask() {
+        return taskType == RECENTS_ACTIVITY_TYPE;
+    }
+
     boolean isApplicationTask() {
         return taskType == APPLICATION_ACTIVITY_TYPE;
     }