Fix stack visibility evaluation
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
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 539ac16..5d8d79f 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -612,6 +612,15 @@
/** 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 @@
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} */