Merge "Don\'t allow pinned activities to request visible behind" into nyc-dev

am: 02ebaa0

* commit '02ebaa02c41050b7223b9ec772da669810bff43b':
  Don't allow pinned activities to request visible behind

Change-Id: I78704c8b677f91b268d83da971b3f50bd479b6ba
This commit is contained in:
Wale Ogunwale
2016-04-18 04:29:22 +00:00
committed by android-build-merger
2 changed files with 22 additions and 0 deletions

View File

@@ -675,6 +675,14 @@ public class ActivityManager {
return isStaticStack(stackId) || stackId == PINNED_STACK_ID return isStaticStack(stackId) || stackId == PINNED_STACK_ID
|| stackId == FREEFORM_WORKSPACE_STACK_ID || stackId == DOCKED_STACK_ID; || stackId == FREEFORM_WORKSPACE_STACK_ID || stackId == DOCKED_STACK_ID;
} }
/**
* Returns true if activities contained in this stack can request visible behind by
* calling {@link Activity#requestVisibleBehind}.
*/
public static boolean activitiesCanRequestVisibleBehind(int stackId) {
return stackId == FULLSCREEN_WORKSPACE_STACK_ID;
}
} }
/** /**

View File

@@ -2430,6 +2430,12 @@ public final class ActivityStackSupervisor implements DisplayListener {
try { try {
final TaskRecord task = r.task; final TaskRecord task = r.task;
if (r == task.stack.getVisibleBehindActivity()) {
// An activity can't be pinned and visible behind at the same time. Go ahead and
// release it from been visible behind before pinning.
requestVisibleBehindLocked(r, false);
}
// Need to make sure the pinned stack exist so we can resize it below... // Need to make sure the pinned stack exist so we can resize it below...
final ActivityStack stack = getStack(PINNED_STACK_ID, CREATE_IF_NEEDED, ON_TOP); final ActivityStack stack = getStack(PINNED_STACK_ID, CREATE_IF_NEEDED, ON_TOP);
@@ -2689,6 +2695,14 @@ public final class ActivityStackSupervisor implements DisplayListener {
"requestVisibleBehind: r=" + r + " visible=" + visible + " stack is null"); "requestVisibleBehind: r=" + r + " visible=" + visible + " stack is null");
return false; return false;
} }
if (visible && !StackId.activitiesCanRequestVisibleBehind(stack.mStackId)) {
if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, "requestVisibleBehind: r=" + r
+ " visible=" + visible + " stackId=" + stack.mStackId
+ " can't contain visible behind activities");
return false;
}
final boolean isVisible = stack.hasVisibleBehindActivity(); final boolean isVisible = stack.hasVisibleBehindActivity();
if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND,
"requestVisibleBehind r=" + r + " visible=" + visible + " isVisible=" + isVisible); "requestVisibleBehind r=" + r + " visible=" + visible + " isVisible=" + isVisible);