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
This commit is contained in:
Andrii Kulian
2016-11-14 18:38:14 -08:00
parent a92257ed90
commit e8d928a61d
2 changed files with 11 additions and 2 deletions

View 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;
}

View 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} */