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

Commit 2ba5a0f3 authored by Wale Ogunwale's avatar Wale Ogunwale Committed by The Android Automerger
Browse files

Revert "Have AMS.setFocusedActivityLocked() move the focus stack to the front"

This reverts commit af0e4488.

Unblock the release while I figure-out how the change broke things...

Bug: 19505341
Bug: 19507107
parent 57c47c82
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2398,7 +2398,8 @@ public final class ActivityManagerService extends ActivityManagerNative
            } else {
                finishRunningVoiceLocked();
            }
            if (r != null && mStackSupervisor.setFocusedStack(r, reason + " setFocusedActivity")) {
            mStackSupervisor.setFocusedStack(r, reason + " setFocusedActivity");
            if (r != null) {
                mWindowManager.setFocusedApp(r.appToken, true);
            }
            applyUpdateLockStateLocked(r);
@@ -2422,7 +2423,6 @@ public final class ActivityManagerService extends ActivityManagerNative
                ActivityRecord r = stack.topRunningActivityLocked(null);
                if (r != null) {
                    setFocusedActivityLocked(r, "setFocusedStack");
                    mStackSupervisor.resumeTopActivitiesLocked(stack, null, null);
                }
            }
        }
+6 −12
Original line number Diff line number Diff line
@@ -496,19 +496,11 @@ final class ActivityStack {

    final void moveToFront(String reason) {
        if (isAttached()) {
            final boolean homeStack = isHomeStack()
                    || (mActivityContainer.mParentActivity != null
                        && mActivityContainer.mParentActivity.isHomeActivity());

            if (!homeStack) {
                // Need to move this stack to the front before calling
                // {@link ActivityStackSupervisor#moveHomeStack} below.
                mStacks.remove(this);
                mStacks.add(this);
            }
            if (isOnHomeDisplay()) {
                mStackSupervisor.moveHomeStack(homeStack, reason);
                mStackSupervisor.moveHomeStack(isHomeStack(), reason);
            }
            mStacks.remove(this);
            mStacks.add(this);
            final TaskRecord task = topTask();
            if (task != null) {
                mWindowManager.moveTaskToTop(task.taskId);
@@ -2588,6 +2580,7 @@ final class ActivityStack {
        if (top == null) {
            return false;
        }
        stack.moveToFront(myReason);
        mService.setFocusedActivityLocked(top, myReason);
        return true;
    }
@@ -3663,7 +3656,8 @@ final class ActivityStack {
            }
        }

        if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to back transition: task=" + taskId);
        if (DEBUG_TRANSITION) Slog.v(TAG,
                "Prepare to back transition: task=" + taskId);

        boolean prevIsHome = false;
        if (tr.isOverHomeStack()) {
+34 −33
Original line number Diff line number Diff line
@@ -1541,27 +1541,25 @@ public final class ActivityStackSupervisor implements DisplayListener {
        return err;
    }

    ActivityStack computeStackFocus(ActivityRecord r, boolean newTask) {
    ActivityStack adjustStackFocus(ActivityRecord r, boolean newTask) {
        final TaskRecord task = r.task;

        // On leanback only devices we should keep all activities in the same stack.
        if (!mLeanbackOnlyDevice &&
                (r.isApplicationActivity() || (task != null && task.isApplicationTask()))) {

            ActivityStack stack;

            if (task != null) {
                stack = task.stack;
                if (stack.isOnHomeDisplay()) {
                    if (mFocusedStack != stack) {
                        if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "computeStackFocus: Setting " +
                final ActivityStack taskStack = task.stack;
                if (taskStack.isOnHomeDisplay()) {
                    if (mFocusedStack != taskStack) {
                        if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: Setting " +
                                "focused stack to r=" + r + " task=" + task);
                        mFocusedStack = taskStack;
                    } else {
                        if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
                            "computeStackFocus: Focused stack already=" + mFocusedStack);
                            "adjustStackFocus: Focused stack already=" + mFocusedStack);
                    }
                }
                return stack;
                return taskStack;
            }

            final ActivityContainer container = r.mInitialActivityContainer;
@@ -1574,41 +1572,43 @@ public final class ActivityStackSupervisor implements DisplayListener {
            if (mFocusedStack != mHomeStack && (!newTask ||
                    mFocusedStack.mActivityContainer.isEligibleForNewTasks())) {
                if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
                        "computeStackFocus: Have a focused stack=" + mFocusedStack);
                        "adjustStackFocus: Have a focused stack=" + mFocusedStack);
                return mFocusedStack;
            }

            final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks;
            for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) {
                stack = homeDisplayStacks.get(stackNdx);
                final ActivityStack stack = homeDisplayStacks.get(stackNdx);
                if (!stack.isHomeStack()) {
                    if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG,
                            "computeStackFocus: Setting focused stack=" + stack);
                    return stack;
                            "adjustStackFocus: Setting focused stack=" + stack);
                    mFocusedStack = stack;
                    return mFocusedStack;
                }
            }

            // Need to create an app stack for this user.
            stack = createStackOnDisplay(getNextStackId(), Display.DEFAULT_DISPLAY);
            if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "computeStackFocus: New stack r=" + r +
                    " stackId=" + stack.mStackId);
            return stack;
            mFocusedStack = createStackOnDisplay(getNextStackId(), Display.DEFAULT_DISPLAY);
            if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: New stack r=" + r +
                    " stackId=" + mFocusedStack.mStackId);
            return mFocusedStack;
        }
        return mHomeStack;
    }

    boolean setFocusedStack(ActivityRecord r, String reason) {
        if (r == null) {
            // Not sure what you are trying to do, but it is not going to work...
            return false;
        }
    void setFocusedStack(ActivityRecord r, String reason) {
        if (r != null) {
            final TaskRecord task = r.task;
        if (task == null || task.stack == null) {
            Slog.w(TAG, "Can't set focus stack for r=" + r + " task=" + task);
            return false;
            boolean isHomeActivity = !r.isApplicationActivity();
            if (!isHomeActivity && task != null) {
                isHomeActivity = !task.isApplicationTask();
            }
            if (!isHomeActivity && task != null) {
                final ActivityRecord parent = task.stack.mActivityContainer.mParentActivity;
                isHomeActivity = parent != null && parent.isHomeActivity();
            }
            moveHomeStack(isHomeActivity, reason);
        }
        task.stack.moveToFront(reason);
        return true;
    }

    final int startActivityUncheckedLocked(final ActivityRecord r, ActivityRecord sourceRecord,
@@ -2082,9 +2082,10 @@ public final class ActivityStackSupervisor implements DisplayListener {
                return ActivityManager.START_RETURN_LOCK_TASK_MODE_VIOLATION;
            }
            newTask = true;
            targetStack = computeStackFocus(r, newTask);
            targetStack = adjustStackFocus(r, newTask);
            if (!launchTaskBehind) {
                targetStack.moveToFront("startingNewTask");

            }
            if (reuseTask == null) {
                r.setTask(targetStack.createTaskRecord(getNextTaskId(),
                        newTaskInfo != null ? newTaskInfo : r.info,
@@ -2205,7 +2206,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
            // This not being started from an existing activity, and not part
            // of a new task...  just put it in the top task, though these days
            // this case should never happen.
            targetStack = computeStackFocus(r, newTask);
            targetStack = adjustStackFocus(r, newTask);
            targetStack.moveToFront("addingToTopTask");
            ActivityRecord prev = targetStack.topActivity();
            r.setTask(prev != null ? prev.task : targetStack.createTaskRecord(getNextTaskId(),