diff options
10 files changed, 10 insertions, 244 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 71bf487249fb..400643787611 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 @@ -210,7 +210,6 @@ public abstract class WMShellModule { SyncTransactionQueue syncQueue, Transitions transitions, Optional<DesktopTasksController> desktopTasksController, - RecentsTransitionHandler recentsTransitionHandler, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { if (DesktopModeStatus.isEnabled()) { return new DesktopModeWindowDecorViewModel( @@ -226,7 +225,6 @@ public abstract class WMShellModule { syncQueue, transitions, desktopTasksController, - recentsTransitionHandler, rootTaskDisplayAreaOrganizer); } return new CaptionWindowDecorViewModel( diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 144555dd70c3..d8d1af689ff0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -320,9 +320,8 @@ class DesktopTasksController( } /** Move a task with given `taskId` to fullscreen */ - fun moveToFullscreen(taskId: Int, windowDecor: DesktopModeWindowDecoration) { + fun moveToFullscreen(taskId: Int) { shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task -> - windowDecor.incrementRelayoutBlock() moveToFullscreenWithAnimation(task, task.positionInParent) } } @@ -903,20 +902,17 @@ class DesktopTasksController( * @param position position of surface when drag ends. * @param inputCoordinate the coordinates of the motion event * @param taskBounds the updated bounds of the task being dragged. - * @param windowDecor the window decoration for the task being dragged */ fun onDragPositioningEnd( taskInfo: RunningTaskInfo, position: Point, inputCoordinate: PointF, - taskBounds: Rect, - windowDecor: DesktopModeWindowDecoration + taskBounds: Rect ) { if (taskInfo.configuration.windowConfiguration.windowingMode != WINDOWING_MODE_FREEFORM) { return } if (taskBounds.top <= transitionAreaHeight) { - windowDecor.incrementRelayoutBlock() moveToFullscreenWithAnimation(taskInfo, position) } if (inputCoordinate.x <= transitionAreaWidth) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt index 9debb25ff296..0218493589b0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt @@ -54,8 +54,6 @@ class ToggleResizeDesktopTaskTransitionHandler( taskId: Int, windowDecoration: DesktopModeWindowDecoration ) { - // Pause relayout until the transition animation finishes. - windowDecoration.incrementRelayoutBlock() transitions.startTransition(TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE, wct, this) taskToDecorationMap.put(taskId, windowDecoration) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java index 6b6a7bc42046..ffcc526eac40 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java @@ -112,7 +112,6 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs onChangeTransitionReady(change, startT, finishT); break; } - mWindowDecorViewModel.onTransitionReady(transition, info, change); } mTransitionToTaskInfo.put(transition, taskInfoList); } @@ -153,8 +152,6 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionMerged(@NonNull IBinder merged, @NonNull IBinder playing) { - mWindowDecorViewModel.onTransitionMerged(merged, playing); - final List<ActivityManager.RunningTaskInfo> infoOfMerged = mTransitionToTaskInfo.get(merged); if (infoOfMerged == null) { @@ -178,7 +175,6 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs final List<ActivityManager.RunningTaskInfo> taskInfo = mTransitionToTaskInfo.getOrDefault(transition, Collections.emptyList()); mTransitionToTaskInfo.remove(transition); - mWindowDecorViewModel.onTransitionFinished(transition); for (int i = 0; i < taskInfo.size(); ++i) { mWindowDecorViewModel.destroyWindowDecoration(taskInfo.get(i)); } 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 cf1692018518..67e65c39efb8 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 @@ -23,13 +23,11 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.os.Handler; -import android.os.IBinder; import android.util.SparseArray; import android.view.Choreographer; import android.view.MotionEvent; import android.view.SurfaceControl; import android.view.View; -import android.window.TransitionInfo; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -77,16 +75,6 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel { } @Override - public void onTransitionReady(IBinder transition, TransitionInfo info, - TransitionInfo.Change change) {} - - @Override - public void onTransitionMerged(IBinder merged, IBinder playing) {} - - @Override - public void onTransitionFinished(IBinder transition) {} - - @Override public void setFreeformTaskTransitionStarter(FreeformTaskTransitionStarter transitionStarter) { mTaskOperations = new TaskOperations(transitionStarter, mContext, mSyncQueue); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index ab29df1f780c..f13898c2f1c8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -22,7 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.view.WindowInsets.Type.statusBars; -import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT; @@ -43,7 +42,6 @@ import android.graphics.Rect; import android.graphics.Region; import android.hardware.input.InputManager; import android.os.Handler; -import android.os.IBinder; import android.os.Looper; import android.util.SparseArray; import android.view.Choreographer; @@ -59,8 +57,6 @@ import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.View; import android.view.ViewConfiguration; -import android.view.WindowManager; -import android.window.TransitionInfo; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -80,8 +76,6 @@ import com.android.wm.shell.desktopmode.DesktopModeStatus; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.desktopmode.DesktopTasksController.SnapPosition; import com.android.wm.shell.freeform.FreeformTaskTransitionStarter; -import com.android.wm.shell.recents.RecentsTransitionHandler; -import com.android.wm.shell.recents.RecentsTransitionStateListener; import com.android.wm.shell.splitscreen.SplitScreen; import com.android.wm.shell.splitscreen.SplitScreen.StageType; import com.android.wm.shell.splitscreen.SplitScreenController; @@ -115,7 +109,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { private final DisplayController mDisplayController; private final SyncTransactionQueue mSyncQueue; private final Optional<DesktopTasksController> mDesktopTasksController; - private final RecentsTransitionHandler mRecentsTransitionHandler; private boolean mTransitionDragActive; private SparseArray<EventReceiver> mEventReceiversByDisplay = new SparseArray<>(); @@ -154,7 +147,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { SyncTransactionQueue syncQueue, Transitions transitions, Optional<DesktopTasksController> desktopTasksController, - RecentsTransitionHandler recentsTransitionHandler, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer ) { this( @@ -170,7 +162,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { syncQueue, transitions, desktopTasksController, - recentsTransitionHandler, new DesktopModeWindowDecoration.Factory(), new InputMonitorFactory(), SurfaceControl.Transaction::new, @@ -191,7 +182,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { SyncTransactionQueue syncQueue, Transitions transitions, Optional<DesktopTasksController> desktopTasksController, - RecentsTransitionHandler recentsTransitionHandler, DesktopModeWindowDecoration.Factory desktopModeWindowDecorFactory, InputMonitorFactory inputMonitorFactory, Supplier<SurfaceControl.Transaction> transactionFactory, @@ -207,7 +197,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mSyncQueue = syncQueue; mTransitions = transitions; mDesktopTasksController = desktopTasksController; - mRecentsTransitionHandler = recentsTransitionHandler; mShellCommandHandler = shellCommandHandler; mDesktopModeWindowDecorFactory = desktopModeWindowDecorFactory; mInputMonitorFactory = inputMonitorFactory; @@ -219,12 +208,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { private void onInit() { mShellController.addKeyguardChangeListener(mDesktopModeKeyguardChangeListener); - mRecentsTransitionHandler.addTransitionStateListener(new RecentsTransitionStateListener() { - @Override - public void onTransitionStarted(IBinder transition) { - blockRelayoutOnTransitionStarted(transition); - } - }); mShellCommandHandler.addDumpCallback(this::dump, this); mDisplayInsetsController.addInsetsChangedListener(mContext.getDisplayId(), new DesktopModeOnInsetsChangedListener()); @@ -264,48 +247,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } @Override - public void onTransitionReady( - @NonNull IBinder transition, - @NonNull TransitionInfo info, - @NonNull TransitionInfo.Change change) { - if (change.getMode() == WindowManager.TRANSIT_CHANGE - && (info.getType() == Transitions.TRANSIT_EXIT_DESKTOP_MODE - || info.getType() == Transitions.TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE - || info.getType() == Transitions.TRANSIT_MOVE_TO_DESKTOP)) { - mWindowDecorByTaskId.get(change.getTaskInfo().taskId) - .addTransitionPausingRelayout(transition); - } else if (change.getMode() == WindowManager.TRANSIT_TO_BACK - && info.getType() == Transitions.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP - && change.getTaskInfo() != null) { - final DesktopModeWindowDecoration decor = - mWindowDecorByTaskId.get(change.getTaskInfo().taskId); - if (decor != null) { - decor.addTransitionPausingRelayout(transition); - } - } else if (change.getMode() == WindowManager.TRANSIT_TO_FRONT - && ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_GOING_AWAY) != 0) - && change.getTaskInfo() != null) { - blockRelayoutOnTransitionStarted(transition); - } - } - - @Override - public void onTransitionMerged(@NonNull IBinder merged, @NonNull IBinder playing) { - for (int i = 0; i < mWindowDecorByTaskId.size(); i++) { - final DesktopModeWindowDecoration decor = mWindowDecorByTaskId.valueAt(i); - decor.mergeTransitionPausingRelayout(merged, playing); - } - } - - @Override - public void onTransitionFinished(@NonNull IBinder transition) { - for (int i = 0; i < mWindowDecorByTaskId.size(); i++) { - final DesktopModeWindowDecoration decor = mWindowDecorByTaskId.valueAt(i); - decor.removeTransitionPausingRelayout(transition); - } - } - - @Override public void onTaskInfoChanged(RunningTaskInfo taskInfo) { final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskInfo.taskId); if (decoration == null) return; @@ -363,16 +304,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } - private void blockRelayoutOnTransitionStarted(IBinder transition) { - // Block relayout on window decorations originating from #onTaskInfoChanges until the - // animation completes to avoid interfering with the transition animation. - for (int i = 0; i < mWindowDecorByTaskId.size(); i++) { - final DesktopModeWindowDecoration decor = mWindowDecorByTaskId.valueAt(i); - decor.incrementRelayoutBlock(); - decor.addTransitionPausingRelayout(transition); - } - } - private class DesktopModeTouchEventListener extends GestureDetector.SimpleOnGestureListener implements View.OnClickListener, View.OnTouchListener, View.OnLongClickListener, DragDetector.MotionEventHandler { @@ -423,7 +354,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { // App sometimes draws before the insets from WindowDecoration#relayout have // been added, so they must be added here mWindowDecorByTaskId.get(mTaskId).addCaptionInset(wct); - decoration.incrementRelayoutBlock(); mDesktopTasksController.get().moveToDesktop(decoration, mTaskId, wct); closeOtherSplitTask(mTaskId); } @@ -434,7 +364,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mSplitScreenController.moveTaskToFullscreen(mTaskId); } else { mDesktopTasksController.ifPresent(c -> - c.moveToFullscreen(mTaskId, mWindowDecorByTaskId.get(mTaskId))); + c.moveToFullscreen(mTaskId)); } } else if (id == R.id.split_screen_button) { decoration.closeHandleMenu(); @@ -602,7 +532,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mDesktopTasksController.ifPresent(c -> c.onDragPositioningEnd(taskInfo, position, new PointF(e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)), - newTaskBounds, mWindowDecorByTaskId.get(mTaskId))); + newTaskBounds)); mIsDragging = false; return true; } @@ -809,20 +739,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mContext, mDragToDesktopAnimationStartBounds, relevantDecor.mTaskInfo, relevantDecor.mTaskSurface); mDesktopTasksController.ifPresent( - c -> { - final int taskId = relevantDecor.mTaskInfo.taskId; - relevantDecor.incrementRelayoutBlock(); - if (isTaskInSplitScreen(taskId)) { - final DesktopModeWindowDecoration otherDecor = - mWindowDecorByTaskId.get( - getOtherSplitTask(taskId).taskId); - if (otherDecor != null) { - otherDecor.incrementRelayoutBlock(); - } - } - c.startDragToDesktop(relevantDecor.mTaskInfo, - mMoveToDesktopAnimator, relevantDecor); - }); + c -> c.startDragToDesktop(relevantDecor.mTaskInfo, + mMoveToDesktopAnimator, relevantDecor)); } } if (mMoveToDesktopAnimator != null) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index 6ec91e0e28dd..f535e7a49959 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -36,7 +36,6 @@ import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.os.Handler; -import android.os.IBinder; import android.util.Log; import android.view.Choreographer; import android.view.MotionEvent; @@ -61,8 +60,6 @@ import com.android.wm.shell.windowdecor.viewholder.DesktopModeAppControlsWindowD import com.android.wm.shell.windowdecor.viewholder.DesktopModeFocusedWindowDecorationViewHolder; import com.android.wm.shell.windowdecor.viewholder.DesktopModeWindowDecorationViewHolder; -import java.util.HashSet; -import java.util.Set; import java.util.function.Supplier; /** @@ -103,8 +100,6 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin private ExclusionRegionListener mExclusionRegionListener; - private final Set<IBinder> mTransitionsPausingRelayout = new HashSet<>(); - private int mRelayoutBlock; private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer; DesktopModeWindowDecoration( @@ -178,13 +173,6 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin @Override void relayout(ActivityManager.RunningTaskInfo taskInfo) { - // TaskListener callbacks and shell transitions aren't synchronized, so starting a shell - // transition can trigger an onTaskInfoChanged call that updates the task's SurfaceControl - // and interferes with the transition animation that is playing at the same time. - if (mRelayoutBlock > 0) { - return; - } - final SurfaceControl.Transaction t = mSurfaceControlTransactionSupplier.get(); // Use |applyStartTransactionOnDraw| so that the transaction (that applies task crop) is // synced with the buffer transaction (that draws the View). Both will be shown on screen @@ -658,16 +646,6 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin return exclusionRegion; } - /** - * If transition exists in mTransitionsPausingRelayout, remove the transition and decrement - * mRelayoutBlock - */ - void removeTransitionPausingRelayout(IBinder transition) { - if (mTransitionsPausingRelayout.remove(transition)) { - mRelayoutBlock--; - } - } - @Override int getCaptionHeightId(@WindowingMode int windowingMode) { return windowingMode == WINDOWING_MODE_FULLSCREEN @@ -684,35 +662,10 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin return R.id.desktop_mode_caption; } - /** - * Add transition to mTransitionsPausingRelayout - */ - void addTransitionPausingRelayout(IBinder transition) { - mTransitionsPausingRelayout.add(transition); - } - - /** - * If two transitions merge and the merged transition is in mTransitionsPausingRelayout, - * remove the merged transition from the set and add the transition it was merged into. - */ - public void mergeTransitionPausingRelayout(IBinder merged, IBinder playing) { - if (mTransitionsPausingRelayout.remove(merged)) { - mTransitionsPausingRelayout.add(playing); - } - } - - /** - * Increase mRelayoutBlock, stopping relayout if mRelayoutBlock is now greater than 0. - */ - public void incrementRelayoutBlock() { - mRelayoutBlock++; - } - @Override public String toString() { return "{" + "mPositionInParent=" + mPositionInParent + ", " - + "mRelayoutBlock=" + mRelayoutBlock + ", " + "taskId=" + mTaskInfo.taskId + ", " + "windowingMode=" + windowingModeToString(mTaskInfo.getWindowingMode()) + ", " + "isFocused=" + isFocused() diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorViewModel.java index ae1a3d914be3..01a6012ea314 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorViewModel.java @@ -17,9 +17,7 @@ package com.android.wm.shell.windowdecor; import android.app.ActivityManager; -import android.os.IBinder; import android.view.SurfaceControl; -import android.window.TransitionInfo; import com.android.wm.shell.freeform.FreeformTaskTransitionStarter; import com.android.wm.shell.splitscreen.SplitScreenController; @@ -103,34 +101,4 @@ public interface WindowDecorViewModel { * @param taskInfo the info of the task */ void destroyWindowDecoration(ActivityManager.RunningTaskInfo taskInfo); - - /** - * Notifies that a shell transition is about to start. If the transition is of type - * TRANSIT_ENTER_DESKTOP, it will save that transition to unpause relayout for the transitioning - * task after the transition has ended. - * - * @param transition the ready transaction - * @param info of Transition to check if relayout needs to be paused for a task - * @param change a change in the given transition - */ - default void onTransitionReady(IBinder transition, TransitionInfo info, - TransitionInfo.Change change) {} - - /** - * Notifies that a shell transition is about to merge with another to give the window - * decoration a chance to prepare for this merge. - * - * @param merged the transaction being merged - * @param playing the transaction being merged into - */ - default void onTransitionMerged(IBinder merged, IBinder playing) {} - - /** - * Notifies that a shell transition is about to finish to give the window decoration a chance - * to clean up. - * - * @param transaction - */ - default void onTransitionFinished(IBinder transaction) {} - }
\ No newline at end of file diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index 94c862bd7a4f..9249b0a0dfda 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -393,7 +393,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToFullscreen_displayFullscreen_windowingModeSetToUndefined() { val task = setUpFreeformTask() task.configuration.windowConfiguration.displayWindowingMode = WINDOWING_MODE_FULLSCREEN - controller.moveToFullscreen(task.taskId, desktopModeWindowDecoration) + controller.moveToFullscreen(task.taskId) val wct = getLatestExitDesktopWct() assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_UNDEFINED) @@ -403,7 +403,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToFullscreen_displayFreeform_windowingModeSetToFullscreen() { val task = setUpFreeformTask() task.configuration.windowConfiguration.displayWindowingMode = WINDOWING_MODE_FREEFORM - controller.moveToFullscreen(task.taskId, desktopModeWindowDecoration) + controller.moveToFullscreen(task.taskId) val wct = getLatestExitDesktopWct() assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_FULLSCREEN) @@ -411,7 +411,7 @@ class DesktopTasksControllerTest : ShellTestCase() { @Test fun moveToFullscreen_nonExistentTask_doesNothing() { - controller.moveToFullscreen(999, desktopModeWindowDecoration) + controller.moveToFullscreen(999) verifyWCTNotExecuted() } @@ -420,7 +420,7 @@ class DesktopTasksControllerTest : ShellTestCase() { val taskDefaultDisplay = setUpFreeformTask(displayId = DEFAULT_DISPLAY) val taskSecondDisplay = setUpFreeformTask(displayId = SECOND_DISPLAY) - controller.moveToFullscreen(taskDefaultDisplay.taskId, desktopModeWindowDecoration) + controller.moveToFullscreen(taskDefaultDisplay.taskId) with(getLatestExitDesktopWct()) { assertThat(changes.keys).contains(taskDefaultDisplay.token.asBinder()) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index 883c24e78076..f84685a92b57 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -27,7 +27,6 @@ import android.graphics.Rect import android.hardware.display.DisplayManager import android.hardware.display.VirtualDisplay import android.os.Handler -import android.os.IBinder import android.testing.AndroidTestingRunner import android.testing.TestableLooper.RunWithLooper import android.view.Choreographer @@ -40,8 +39,6 @@ import android.view.SurfaceControl import android.view.SurfaceView import android.view.WindowInsets.Type.navigationBars import android.view.WindowInsets.Type.statusBars -import android.view.WindowManager -import android.window.TransitionInfo import androidx.test.filters.SmallTest import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTaskOrganizer @@ -53,8 +50,6 @@ 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.desktopmode.DesktopTasksController -import com.android.wm.shell.recents.RecentsTransitionHandler -import com.android.wm.shell.recents.RecentsTransitionStateListener import com.android.wm.shell.sysui.KeyguardChangeListener import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController @@ -100,7 +95,6 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { @Mock private lateinit var mockShellController: ShellController @Mock private lateinit var mockShellExecutor: ShellExecutor @Mock private lateinit var mockRootTaskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer - @Mock private lateinit var mockRecentsTransitionHandler: RecentsTransitionHandler @Mock private lateinit var mockShellCommandHandler: ShellCommandHandler private val transactionFactory = Supplier<SurfaceControl.Transaction> { @@ -127,7 +121,6 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { mockSyncQueue, mockTransitions, Optional.of(mockDesktopTasksController), - mockRecentsTransitionHandler, mockDesktopModeWindowDecorFactory, mockInputMonitorFactory, transactionFactory, @@ -275,48 +268,6 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { } @Test - fun testRelayoutBlockedDuringRecentsTransition() { - val recentsCaptor = argumentCaptor<RecentsTransitionStateListener>() - verify(mockRecentsTransitionHandler).addTransitionStateListener(recentsCaptor.capture()) - - val transition = mock(IBinder::class.java) - val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) - val decoration = setUpMockDecorationForTask(task) - - // Make sure a window decorations exists first by launching a freeform task. - onTaskOpening(task) - // Now call back when a Recents transition starts. - recentsCaptor.firstValue.onTransitionStarted(transition) - - verify(decoration).incrementRelayoutBlock() - verify(decoration).addTransitionPausingRelayout(transition) - } - - @Test - fun testRelayoutBlockedDuringKeyguardTransition() { - val transition = mock(IBinder::class.java) - val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) - val decoration = setUpMockDecorationForTask(task) - val transitionInfo = mock(TransitionInfo::class.java) - val transitionChange = mock(TransitionInfo.Change::class.java) - val taskInfo = mock(RunningTaskInfo()::class.java) - - // Replicate a keyguard going away transition for a task - whenever(transitionInfo.getFlags()) - .thenReturn(WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY) - whenever(transitionChange.getMode()).thenReturn(WindowManager.TRANSIT_TO_FRONT) - whenever(transitionChange.getTaskInfo()).thenReturn(taskInfo) - - // Make sure a window decorations exists first by launching a freeform task. - onTaskOpening(task) - // OnTransition ready is called when a keyguard going away transition happens - desktopModeWindowDecorViewModel - .onTransitionReady(transition, transitionInfo, transitionChange) - - verify(decoration).incrementRelayoutBlock() - verify(decoration).addTransitionPausingRelayout(transition) - } - @Test fun testRelayoutRunsWhenStatusBarsInsetsSourceVisibilityChanges() { val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM, focused = true) val decoration = setUpMockDecorationForTask(task) |