From b56c43101bcf82f0bddae9bdca90fbfffff91c50 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Thu, 11 Apr 2024 12:13:11 -0700 Subject: Use RootTaskDisplayAreaOrganizer to obtain TDA windowing mode CaptionWindowDecorViewModel used to use WindowConfiguration#getDisplayWindowingMode() to obtain TDA windowing mode. That flag is to be deprecated and misnamed after we fixed display windowing mode to fullscreen. This CL removes the dependency on that field. Bug: 333724879 Test: Maximize works on CF PC. Change-Id: Ie29a2b47e626ddf333f762befe12ab6c3618726c --- .../Shell/src/com/android/wm/shell/dagger/WMShellModule.java | 1 + .../wm/shell/windowdecor/CaptionWindowDecorViewModel.java | 10 +++++++++- .../src/com/android/wm/shell/windowdecor/TaskOperations.java | 6 ++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index b933e5d70586..ff00a7b9ea59 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -241,6 +241,7 @@ public abstract class WMShellModule { mainChoreographer, taskOrganizer, displayController, + rootTaskDisplayAreaOrganizer, syncQueue, transitions); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java index c59a1b452303..32f271b0b896 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java @@ -30,12 +30,14 @@ import android.view.Choreographer; import android.view.MotionEvent; import android.view.SurfaceControl; import android.view.View; +import android.window.DisplayAreaInfo; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; import androidx.annotation.Nullable; import com.android.wm.shell.R; +import com.android.wm.shell.RootTaskDisplayAreaOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SyncTransactionQueue; @@ -53,6 +55,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel { private final Handler mMainHandler; private final Choreographer mMainChoreographer; private final DisplayController mDisplayController; + private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer; private final SyncTransactionQueue mSyncQueue; private final Transitions mTransitions; private TaskOperations mTaskOperations; @@ -65,6 +68,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel { Choreographer mainChoreographer, ShellTaskOrganizer taskOrganizer, DisplayController displayController, + RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer, SyncTransactionQueue syncQueue, Transitions transitions) { mContext = context; @@ -72,6 +76,7 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel { mMainChoreographer = mainChoreographer; mTaskOrganizer = taskOrganizer; mDisplayController = displayController; + mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer; mSyncQueue = syncQueue; mTransitions = transitions; if (!Transitions.ENABLE_SHELL_TRANSITIONS) { @@ -231,7 +236,10 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel { mTaskOperations.minimizeTask(mTaskToken); } else if (id == R.id.maximize_window) { RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); - mTaskOperations.maximizeTask(taskInfo); + final DisplayAreaInfo rootDisplayAreaInfo = + mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(taskInfo.displayId); + mTaskOperations.maximizeTask(taskInfo, + rootDisplayAreaInfo.configuration.windowConfiguration.getWindowingMode()); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskOperations.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskOperations.java index d0fcd8651481..1763e4f9533c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskOperations.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskOperations.java @@ -91,14 +91,12 @@ class TaskOperations { } } - void maximizeTask(RunningTaskInfo taskInfo) { + void maximizeTask(RunningTaskInfo taskInfo, int containerWindowingMode) { WindowContainerTransaction wct = new WindowContainerTransaction(); int targetWindowingMode = taskInfo.getWindowingMode() != WINDOWING_MODE_FULLSCREEN ? WINDOWING_MODE_FULLSCREEN : WINDOWING_MODE_FREEFORM; - int displayWindowingMode = - taskInfo.configuration.windowConfiguration.getDisplayWindowingMode(); wct.setWindowingMode(taskInfo.token, - targetWindowingMode == displayWindowingMode + targetWindowingMode == containerWindowingMode ? WINDOWING_MODE_UNDEFINED : targetWindowingMode); if (targetWindowingMode == WINDOWING_MODE_FULLSCREEN) { wct.setBounds(taskInfo.token, null); -- cgit v1.2.3-59-g8ed1b