Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java +3 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.desktopmode.DesktopModeFlags; import com.android.wm.shell.windowdecor.extension.TaskInfoKt; import com.android.wm.shell.windowdecor.viewhost.WindowDecorViewHostSupplier; Loading Loading @@ -240,7 +241,8 @@ public class CaptionWindowDecoration extends WindowDecoration<WindowDecorLinearL boolean applyStartTransactionOnDraw, boolean setTaskCropAndPosition) { final boolean isFreeform = taskInfo.getWindowingMode() == WindowConfiguration.WINDOWING_MODE_FREEFORM; final boolean isDragResizeable = isFreeform && taskInfo.isResizeable; final boolean isDragResizeable = DesktopModeFlags.SCALED_RESIZING.isEnabled(mContext) ? isFreeform : isFreeform && taskInfo.isResizeable; final WindowDecorLinearLayout oldRootView = mResult.mRootView; final SurfaceControl oldDecorationSurface = mDecorationContainerSurface; Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +20 −7 Original line number Diff line number Diff line Loading @@ -1603,14 +1603,27 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { Transitions transitions, InteractionJankMonitor interactionJankMonitor, Supplier<SurfaceControl.Transaction> transactionFactory) { if (!DesktopModeStatus.isVeiledResizeEnabled()) { return new FluidResizeTaskPositioner( taskOrganizer, transitions, windowDecoration, displayController, dragStartListener, transactionFactory); } return new VeiledResizeTaskPositioner( taskOrganizer, windowDecoration, displayController, dragStartListener, transitions, interactionJankMonitor); final TaskPositioner taskPositioner = DesktopModeStatus.isVeiledResizeEnabled() ? new VeiledResizeTaskPositioner( taskOrganizer, windowDecoration, displayController, dragStartListener, transitions, interactionJankMonitor) : new FluidResizeTaskPositioner( taskOrganizer, transitions, windowDecoration, displayController, dragStartListener, transactionFactory); if (DesktopModeFlags.SCALED_RESIZING.isEnabled(windowDecoration.mContext)) { return new FixedAspectRatioTaskPositionerDecorator(windowDecoration, taskPositioner); } return taskPositioner; } } } libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +7 −3 Original line number Diff line number Diff line Loading @@ -455,7 +455,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } private void updateDragResizeListener(SurfaceControl oldDecorationSurface) { if (!isDragResizable(mTaskInfo)) { if (!isDragResizable(mTaskInfo, mContext)) { if (!mTaskInfo.positionInParent.equals(mPositionInParent)) { // We still want to track caption bar's exclusion region on a non-resizeable task. updateExclusionRegion(); Loading Loading @@ -497,12 +497,16 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } } private static boolean isDragResizable(ActivityManager.RunningTaskInfo taskInfo) { private static boolean isDragResizable(ActivityManager.RunningTaskInfo taskInfo, Context context) { if (DesktopModeFlags.SCALED_RESIZING.isEnabled(context)) { return taskInfo.isFreeform(); } return taskInfo.isFreeform() && taskInfo.isResizeable; } private void updateMaximizeMenu(SurfaceControl.Transaction startT) { if (!isDragResizable(mTaskInfo) || !isMaximizeMenuActive()) { if (!isDragResizable(mTaskInfo, mContext) || !isMaximizeMenuActive()) { return; } if (!mTaskInfo.isVisible()) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java +2 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ import kotlin.jvm.functions.Function1; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -563,6 +564,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase { } @Test @Ignore("TODO(b/367235906): Due to MONITOR_INPUT permission error") public void relayout_freeformTask_appliesTransactionOnDraw() { final ActivityManager.RunningTaskInfo taskInfo = createTaskInfo(/* visible= */ true); final DesktopModeWindowDecoration spyWindowDecor = spy(createWindowDecoration(taskInfo)); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java +3 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.desktopmode.DesktopModeFlags; import com.android.wm.shell.windowdecor.extension.TaskInfoKt; import com.android.wm.shell.windowdecor.viewhost.WindowDecorViewHostSupplier; Loading Loading @@ -240,7 +241,8 @@ public class CaptionWindowDecoration extends WindowDecoration<WindowDecorLinearL boolean applyStartTransactionOnDraw, boolean setTaskCropAndPosition) { final boolean isFreeform = taskInfo.getWindowingMode() == WindowConfiguration.WINDOWING_MODE_FREEFORM; final boolean isDragResizeable = isFreeform && taskInfo.isResizeable; final boolean isDragResizeable = DesktopModeFlags.SCALED_RESIZING.isEnabled(mContext) ? isFreeform : isFreeform && taskInfo.isResizeable; final WindowDecorLinearLayout oldRootView = mResult.mRootView; final SurfaceControl oldDecorationSurface = mDecorationContainerSurface; Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +20 −7 Original line number Diff line number Diff line Loading @@ -1603,14 +1603,27 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { Transitions transitions, InteractionJankMonitor interactionJankMonitor, Supplier<SurfaceControl.Transaction> transactionFactory) { if (!DesktopModeStatus.isVeiledResizeEnabled()) { return new FluidResizeTaskPositioner( taskOrganizer, transitions, windowDecoration, displayController, dragStartListener, transactionFactory); } return new VeiledResizeTaskPositioner( taskOrganizer, windowDecoration, displayController, dragStartListener, transitions, interactionJankMonitor); final TaskPositioner taskPositioner = DesktopModeStatus.isVeiledResizeEnabled() ? new VeiledResizeTaskPositioner( taskOrganizer, windowDecoration, displayController, dragStartListener, transitions, interactionJankMonitor) : new FluidResizeTaskPositioner( taskOrganizer, transitions, windowDecoration, displayController, dragStartListener, transactionFactory); if (DesktopModeFlags.SCALED_RESIZING.isEnabled(windowDecoration.mContext)) { return new FixedAspectRatioTaskPositionerDecorator(windowDecoration, taskPositioner); } return taskPositioner; } } }
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +7 −3 Original line number Diff line number Diff line Loading @@ -455,7 +455,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } private void updateDragResizeListener(SurfaceControl oldDecorationSurface) { if (!isDragResizable(mTaskInfo)) { if (!isDragResizable(mTaskInfo, mContext)) { if (!mTaskInfo.positionInParent.equals(mPositionInParent)) { // We still want to track caption bar's exclusion region on a non-resizeable task. updateExclusionRegion(); Loading Loading @@ -497,12 +497,16 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } } private static boolean isDragResizable(ActivityManager.RunningTaskInfo taskInfo) { private static boolean isDragResizable(ActivityManager.RunningTaskInfo taskInfo, Context context) { if (DesktopModeFlags.SCALED_RESIZING.isEnabled(context)) { return taskInfo.isFreeform(); } return taskInfo.isFreeform() && taskInfo.isResizeable; } private void updateMaximizeMenu(SurfaceControl.Transaction startT) { if (!isDragResizable(mTaskInfo) || !isMaximizeMenuActive()) { if (!isDragResizable(mTaskInfo, mContext) || !isMaximizeMenuActive()) { return; } if (!mTaskInfo.isVisible()) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java +2 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ import kotlin.jvm.functions.Function1; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -563,6 +564,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase { } @Test @Ignore("TODO(b/367235906): Due to MONITOR_INPUT permission error") public void relayout_freeformTask_appliesTransactionOnDraw() { final ActivityManager.RunningTaskInfo taskInfo = createTaskInfo(/* visible= */ true); final DesktopModeWindowDecoration spyWindowDecor = spy(createWindowDecoration(taskInfo)); Loading