Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 487ee1ed authored by Michael Bestas's avatar Michael Bestas
Browse files

Revert "Revert "[ActivityManager] Set appropriate relation of task to home""

This reverts commit 77eaeba2.

Change-Id: Idf046fc9ae241a0450c3b49ce7c6515495df0260
parent 340e9565
Loading
Loading
Loading
Loading
+34 −2
Original line number Diff line number Diff line
@@ -1948,9 +1948,31 @@ final class ActivityStack {
        return true;
    }

    private TaskRecord getNextTask(TaskRecord targetTask) {
        final int index = mTaskHistory.indexOf(targetTask);
        if (index >= 0) {
            final int numTasks = mTaskHistory.size();
            for (int i = index + 1; i < numTasks; ++i) {
                TaskRecord task = mTaskHistory.get(i);
                if (task.userId == targetTask.userId) {
                    return task;
                }
            }
        }
        return null;
    }

    private void insertTaskAtTop(TaskRecord task) {
        // 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());
            }
        }

        // If this is being moved to the top by another activity or being launched from the home
        // activity, set mOnTopOfHome accordingly.
        // activity, set mTaskToReturnTo accordingly.
        if (isOnHomeDisplay()) {
            ActivityStack lastStack = mStackSupervisor.getLastStack();
            final boolean fromHome = lastStack.isHomeStack();
@@ -3649,6 +3671,15 @@ final class ActivityStack {
        if (DEBUG_TRANSITION) Slog.v(TAG,
                "Prepare to back transition: task=" + taskId);

        boolean prevIsHome = false;
        if (tr.isOverHomeStack()) {
            final TaskRecord nextTask = getNextTask(tr);
            if (nextTask != null) {
                nextTask.setTaskToReturnTo(tr.getTaskToReturnTo());
            } else {
                prevIsHome = true;
            }
        }
        mTaskHistory.remove(tr);
        mTaskHistory.add(0, tr);
        updateTaskMovement(tr, false);
@@ -3684,7 +3715,8 @@ final class ActivityStack {
        }

        final TaskRecord task = mResumedActivity != null ? mResumedActivity.task : null;
        if (task == tr && tr.isOverHomeStack() || numTasks <= 1 && isOnHomeDisplay()) {
        if (prevIsHome || task == tr && tr.isOverHomeStack()
                || numTasks <= 1 && isOnHomeDisplay()) {
            if (!mService.mBooting && !mService.mBooted) {
                // Not ready yet!
                return false;