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

Commit e3657585 authored by Saho Kobayashi's avatar Saho Kobayashi
Browse files

Use FocusTransitionObserver in KeyguardTransitionHandler

This CL migrates the usages of TaskInfo#isFocused in
KeyguardTransitionHandler to FocusTransitionObserver
to support multi display because TaskInfo#isFocused is per
display.

Bug: 371095009
Test: none
Flag: com.android.window.flags.enable_display_focus_in_shell_transitions
Change-Id: I0d39b906754d58198988bdd529e95a7afea453cf
parent a1c29b99
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -799,10 +799,11 @@ public abstract class WMShellBaseModule {
            Transitions transitions,
            TaskStackListenerImpl taskStackListener,
            @ShellMainThread Handler mainHandler,
            @ShellMainThread ShellExecutor mainExecutor) {
            @ShellMainThread ShellExecutor mainExecutor,
            FocusTransitionObserver focusTransitionObserver) {
        return new KeyguardTransitionHandler(
                shellInit, shellController, displayController, transitions, taskStackListener,
                mainHandler, mainExecutor);
                mainHandler, mainExecutor, focusTransitionObserver);
    }

    @WMSingleton
+7 −2
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ import com.android.wm.shell.shared.annotations.ExternalThread;
import com.android.wm.shell.sysui.KeyguardChangeListener;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.FocusTransitionObserver;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.transition.Transitions.TransitionFinishCallback;

@@ -89,6 +90,7 @@ public class KeyguardTransitionHandler

    private final ArrayMap<IBinder, StartedTransition> mStartedTransitions = new ArrayMap<>();
    private final TaskStackListenerImpl mTaskStackListener;
    private final FocusTransitionObserver mFocusTransitionObserver;

    /**
     * Local IRemoteTransition implementations registered by the keyguard service.
@@ -129,7 +131,8 @@ public class KeyguardTransitionHandler
            @NonNull Transitions transitions,
            @NonNull TaskStackListenerImpl taskStackListener,
            @NonNull Handler mainHandler,
            @NonNull ShellExecutor mainExecutor) {
            @NonNull ShellExecutor mainExecutor,
            @NonNull FocusTransitionObserver focusTransitionObserver) {
        mTransitions = transitions;
        mShellController = shellController;
        mDisplayController = displayController;
@@ -137,6 +140,7 @@ public class KeyguardTransitionHandler
        mMainExecutor = mainExecutor;
        mTaskStackListener = taskStackListener;
        shellInit.addInitCallback(this::onInit, this);
        mFocusTransitionObserver = focusTransitionObserver;
    }

    private void onInit() {
@@ -396,7 +400,8 @@ public class KeyguardTransitionHandler
            final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
            if (taskInfo != null && taskInfo.taskId != INVALID_TASK_ID
                    && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM
                    && taskInfo.isFocused && change.getContainer() != null) {
                    && mFocusTransitionObserver.hasGlobalFocus(taskInfo)
                    && change.getContainer() != null) {
                wct.setWindowingMode(change.getContainer(), WINDOWING_MODE_FULLSCREEN);
                wct.setBounds(change.getContainer(), null);
                return;