From 21893824c1d15a1a46cb75725ad951620569c3c6 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Fri, 10 Jun 2016 17:48:52 -0700 Subject: [PATCH] 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 --- .../core/java/com/android/server/am/ActivityStack.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index d83a750ccbb36..df85cfa939e3f 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;