summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrii Kulian <akulian@google.com> 2016-06-10 17:48:52 -0700
committer Andrii Kulian <akulian@google.com> 2016-06-10 19:05:08 -0700
commit21893824c1d15a1a46cb75725ad951620569c3c6 (patch)
tree1f0a3819db57d9433747f9139cbc0d2c1845d5c9
parentd25c718a12725c9721dfc79deb0c27f15aa65d58 (diff)
Don't update task to return to type for last task over home
Resizing docked stack to fullscreen size results in dismissal of docked stack and moving of tasks to fullscreen stack. When tasks, which were originally launched from home or recents, are inserted on top of fullscreen stack, their mTaskToReturnTo value was overwritten. This CL doesn't allow to overwrite this field of task if there is no next task in stack and it was launched from home or recents. Bug: 29237751 Change-Id: If56cd3f68b6b400c2d5c945431371acfe6269682
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index d83a750ccbb3..df85cfa939e3 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -2581,11 +2581,14 @@ final class ActivityStack {
}
private void insertTaskAtTop(TaskRecord task, ActivityRecord newActivity) {
+ boolean isLastTaskOverHome = false;
// If the moving task is over home stack, transfer its return type to next task
if (task.isOverHomeStack()) {
final TaskRecord nextTask = getNextTask(task);
if (nextTask != null) {
nextTask.setTaskToReturnTo(task.getTaskToReturnTo());
+ } else {
+ isLastTaskOverHome = true;
}
}
@@ -2595,7 +2598,10 @@ final class ActivityStack {
ActivityStack lastStack = mStackSupervisor.getLastStack();
final boolean fromHome = lastStack.isHomeStack();
if (!isHomeStack() && (fromHome || topTask() != task)) {
- int returnToType = APPLICATION_ACTIVITY_TYPE;
+ // If it's a last task over home - we default to keep its return to type not to
+ // make underlying task focused when this one will be finished.
+ int returnToType = isLastTaskOverHome
+ ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE;
if (fromHome && StackId.allowTopTaskToReturnHome(mStackId)) {
returnToType = lastStack.topTask() == null
? HOME_ACTIVITY_TYPE : lastStack.topTask().taskType;