From e8d928a61d020dedb3b076239ebcef13435b6b96 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Mon, 14 Nov 2016 18:38:14 -0800 Subject: [PATCH] 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 --- .../java/com/android/server/am/ActivityStack.java | 2 +- .../android/server/am/ActivityStackSupervisor.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 1bdef433483a9..473b1a34a892b 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -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; } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 539ac1620961e..5d8d79fd52c2c 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 @@ 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 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} */