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

Commit 3026e8d7 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Update focused app when adjusting focus to next stack

Now each displays have their own resumed activities. When a stack
of secondary display is removed and adjust focus to the primary
display, there is no activity state change to update focused app
because the top activity of primary display is already resumed.

Bug: 112119739
Test: atest ActivityManagerMultiDisplayTests#testStackFocusSwitchOnStackEmptied
Change-Id: Id337939149db684cf67ac87bb096c73618e37d72
parent 19391e88
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -498,7 +498,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
                    + reason);
            setResumedActivity(record, reason + " - onActivityStateChanged");
            if (record == mStackSupervisor.getTopResumedActivity()) {
                // TODO(b/111541062): Support tracking multiple resumed activities
                // TODO(b/111361570): Support multiple focused apps in WM
                mService.setResumedActivityUncheckLocked(record, reason);
            }
            mStackSupervisor.mRecentTasks.add(record.getTask());
@@ -3423,7 +3423,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
        }

        // Move focus to next focusable stack if possible.
        if (adjustFocusToNextFocusableStack(myReason) != null) {
        final ActivityStack nextFocusableStack = adjustFocusToNextFocusableStack(myReason);
        if (nextFocusableStack != null) {
            final ActivityRecord top = nextFocusableStack.topRunningActivityLocked();
            if (top != null && top == mStackSupervisor.getTopResumedActivity()) {
                // TODO(b/111361570): Remove this and update focused app per-display in
                // WindowManager every time an activity becomes resumed in
                // ActivityTaskManagerService#setResumedActivityUncheckLocked().
                mService.setResumedActivityUncheckLocked(top, reason);
            }
            return;
        }

+1 −1
Original line number Diff line number Diff line
@@ -3451,7 +3451,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
        stack.moveToFront(reason, task);
        // Report top activity change to tracking services and WM
        if (r == getTopResumedActivity()) {
            // TODO(b/111541062): Support tracking multiple resumed activities
            // TODO(b/111361570): Support multiple focused apps in WM
            mService.setResumedActivityUncheckLocked(r, reason);
        }
        return true;
+1 −1
Original line number Diff line number Diff line
@@ -4732,7 +4732,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        updateResumedAppTrace(r);
        mLastResumedActivity = r;

        // TODO(b/111541062): Support multiple focused apps in WM
        // TODO(b/111361570): Support multiple focused apps in WM
        mWindowManager.setFocusedApp(r.appToken, true);

        applyUpdateLockStateLocked(r);