diff options
| author | 2024-11-19 14:38:41 +0900 | |
|---|---|---|
| committer | 2024-11-20 13:48:05 +0900 | |
| commit | e365758510c4bf96bc919e57cfbbc8589034df77 (patch) | |
| tree | db78126b048159321342b6d18129c42f79287d74 | |
| parent | a1c29b99ff7679b7aa90b2f04eb2b94ed5234e8e (diff) | |
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
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java | 5 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java index 02df38e03d7c..a75406b67998 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java @@ -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 diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java index e4f83333edbf..4c316de98744 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java @@ -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; |