OSDN Git Service

Fix stack visibility evaluation
authorAndrii Kulian <akulian@google.com>
Tue, 15 Nov 2016 02:38:14 +0000 (18:38 -0800)
committerAndrii Kulian <akulian@google.com>
Sun, 20 Nov 2016 19:11:52 +0000 (19:11 +0000)
Stack visibility is evaluated based on its position in stack list.
In this case we care only about stacks on the same display.

Test: ActivityManagerDisplayTests
Test: #testLaunchActivitiesAffectsVisibility
Change-Id: Ide42e8b5e240bd61c33cc2d4715e44fc9a940952

services/core/java/com/android/server/am/ActivityStack.java
services/core/java/com/android/server/am/ActivityStackSupervisor.java

index 1bdef43..473b1a3 100644 (file)
@@ -1471,7 +1471,7 @@ final class ActivityStack extends ConfigurationContainer {
             return STACK_INVISIBLE;
         }
 
-        if (mStackSupervisor.isFrontStack(this) || mStackSupervisor.isFocusedStack(this)) {
+        if (mStackSupervisor.isFrontStackOnDisplay(this) || mStackSupervisor.isFocusedStack(this)) {
             return STACK_VISIBLE;
         }
 
index 539ac16..5d8d79f 100644 (file)
@@ -612,6 +612,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer
 
     /** The top most stack. */
     boolean isFrontStack(ActivityStack stack) {
+        return isFrontOfStackList(stack, mHomeStack.mStacks);
+    }
+
+    /** The top most stack on its display. */
+    boolean isFrontStackOnDisplay(ActivityStack stack) {
+        return isFrontOfStackList(stack, stack.mActivityContainer.mActivityDisplay.mStacks);
+    }
+
+    private boolean isFrontOfStackList(ActivityStack stack, List<ActivityStack> stackList) {
         if (stack == null) {
             return false;
         }
@@ -620,7 +629,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer
         if (parent != null) {
             stack = parent.getStack();
         }
-        return stack == mHomeStack.mStacks.get((mHomeStack.mStacks.size() - 1));
+        return stack == stackList.get((stackList.size() - 1));
     }
 
     /** NOTE: Should only be called from {@link ActivityStack#moveToFront} */