diff options
| author | 2024-03-14 18:38:46 +0000 | |
|---|---|---|
| committer | 2024-03-14 18:38:46 +0000 | |
| commit | 38c9a10f10cdd369ab7e0cf6a07c9eedb4c7733f (patch) | |
| tree | a894d7d2710ffd599a36ea4aca54365c3b296350 /libs | |
| parent | d46d51a5776af3b3eae6388988cc75b542501d8b (diff) | |
Revert "Disable recents gesture when split animation running in ..."
Revert submission 26481253-disableSplitAnim
Reason for revert: b/329523822
Reverted changes: /q/submissionid:26481253-disableSplitAnim
Change-Id: Ifdc009d3c16c91a5f3883f063a6958ae357f1809
Diffstat (limited to 'libs')
5 files changed, 8 insertions, 92 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java index f7ffdd1d573e..ad4049320d93 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java @@ -64,9 +64,7 @@ public interface SplitScreen { default void onSplitVisibilityChanged(boolean visible) {} } - /** - * Callback interface for listening to requests to enter split select. Used for desktop -> split - */ + /** Callback interface for listening to requests to enter split select */ interface SplitSelectListener { default boolean onRequestEnterSplitSelect(ActivityManager.RunningTaskInfo taskInfo, int splitPosition, Rect taskBounds) { @@ -74,15 +72,6 @@ public interface SplitScreen { } } - interface SplitInvocationListener { - /** - * Called whenever shell starts or stops the split screen animation - * @param animationRunning if {@code true} the animation has begun, if {@code false} the - * animation has finished - */ - default void onSplitAnimationInvoked(boolean animationRunning) { } - } - /** Registers listener that gets split screen callback. */ void registerSplitScreenListener(@NonNull SplitScreenListener listener, @NonNull Executor executor); @@ -90,15 +79,6 @@ public interface SplitScreen { /** Unregisters listener that gets split screen callback. */ void unregisterSplitScreenListener(@NonNull SplitScreenListener listener); - /** - * Registers a {@link SplitInvocationListener} to notify when the animation to enter split - * screen has started and stopped - * - * @param executor callbacks to the listener will be executed on this executor - */ - void registerSplitAnimationListener(@NonNull SplitInvocationListener listener, - @NonNull Executor executor); - /** Called when device waking up finished. */ void onFinishedWakingUp(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index 79bc24edf961..952e2d4b3b9a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -1134,12 +1134,6 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, } @Override - public void registerSplitAnimationListener(@NonNull SplitInvocationListener listener, - @NonNull Executor executor) { - mStageCoordinator.registerSplitAnimationListener(listener, executor); - } - - @Override public void onFinishedWakingUp() { mMainExecutor.execute(SplitScreenController.this::onFinishedWakingUp); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java index e69ff70e5273..1a53a1d10dd2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java @@ -55,7 +55,6 @@ import com.android.wm.shell.transition.OneShotRemoteHandler; import com.android.wm.shell.transition.Transitions; import java.util.ArrayList; -import java.util.concurrent.Executor; /** Manages transition animations for split-screen. */ class SplitScreenTransitions { @@ -80,8 +79,6 @@ class SplitScreenTransitions { private Transitions.TransitionFinishCallback mFinishCallback = null; private SurfaceControl.Transaction mFinishTransaction; - private SplitScreen.SplitInvocationListener mSplitInvocationListener; - private Executor mSplitInvocationListenerExecutor; SplitScreenTransitions(@NonNull TransactionPool pool, @NonNull Transitions transitions, @NonNull Runnable onFinishCallback, StageCoordinator stageCoordinator) { @@ -356,10 +353,6 @@ class SplitScreenTransitions { + " skip to start enter split transition since it already exist. "); return null; } - if (mSplitInvocationListenerExecutor != null && mSplitInvocationListener != null) { - mSplitInvocationListenerExecutor.execute(() -> mSplitInvocationListener - .onSplitAnimationInvoked(true /*animationRunning*/)); - } final IBinder transition = mTransitions.startTransition(transitType, wct, handler); setEnterTransition(transition, remoteTransition, extraTransitType, resizeAnim); return transition; @@ -536,12 +529,6 @@ class SplitScreenTransitions { mTransitions.getAnimExecutor().execute(va::start); } - public void registerSplitAnimListener(@NonNull SplitScreen.SplitInvocationListener listener, - @NonNull Executor executor) { - mSplitInvocationListener = listener; - mSplitInvocationListenerExecutor = executor; - } - /** Calls when the transition got consumed. */ interface TransitionConsumedCallback { void onConsumed(boolean aborted); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 3dcf3b61f41f..76504447339f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -155,7 +155,6 @@ import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.concurrent.Executor; /** * Coordinates the staging (visibility, sizing, ...) of the split-screen {@link MainStage} and @@ -236,9 +235,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, private DefaultMixedHandler mMixedHandler; private final Toast mSplitUnsupportedToast; private SplitRequest mSplitRequest; - /** Used to notify others of when shell is animating into split screen */ - private SplitScreen.SplitInvocationListener mSplitInvocationListener; - private Executor mSplitInvocationListenerExecutor; /** * Since StageCoordinator only coordinates MainStage and SideStage, it shouldn't support @@ -249,14 +245,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, return false; } - /** NOTE: Will overwrite any previously set {@link #mSplitInvocationListener} */ - public void registerSplitAnimationListener( - @NonNull SplitScreen.SplitInvocationListener listener, @NonNull Executor executor) { - mSplitInvocationListener = listener; - mSplitInvocationListenerExecutor = executor; - mSplitTransitions.registerSplitAnimListener(listener, executor); - } - class SplitRequest { @SplitPosition int mActivatePosition; @@ -540,7 +528,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, null /* childrenToTop */, EXIT_REASON_UNKNOWN)); Log.w(TAG, splitFailureMessage("startShortcut", "side stage was not populated")); - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); } if (finishedCallback != null) { @@ -671,7 +659,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, null /* childrenToTop */, EXIT_REASON_UNKNOWN)); Log.w(TAG, splitFailureMessage("startIntentLegacy", "side stage was not populated")); - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); } if (apps != null) { @@ -1223,7 +1211,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, ? mSideStage : mMainStage, EXIT_REASON_UNKNOWN)); Log.w(TAG, splitFailureMessage("onRemoteAnimationFinishedOrCancelled", "main or side stage was not populated.")); - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); } else { mSyncQueue.queue(evictWct); mSyncQueue.runInSync(t -> { @@ -1244,7 +1232,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, ? mSideStage : mMainStage, EXIT_REASON_UNKNOWN)); Log.w(TAG, splitFailureMessage("onRemoteAnimationFinished", "main or side stage was not populated")); - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); return; } @@ -2799,7 +2787,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (hasEnteringPip) { mMixedHandler.animatePendingEnterPipFromSplit(transition, info, startTransaction, finishTransaction, finishCallback); - notifySplitAnimationFinished(); return true; } @@ -2834,7 +2821,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, // the transition, or synchronize task-org callbacks. } // Use normal animations. - notifySplitAnimationFinished(); return false; } else if (mMixedHandler != null && TransitionUtil.hasDisplayChange(info)) { // A display-change has been un-expectedly inserted into the transition. Redirect @@ -2848,7 +2834,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitLayout.update(startTransaction, true /* resetImePosition */); startTransaction.apply(); } - notifySplitAnimationFinished(); return true; } } @@ -3022,7 +3007,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, pendingEnter.mRemoteHandler.onTransitionConsumed(transition, false /*aborted*/, finishT); } - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); return true; } } @@ -3051,7 +3036,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final TransitionInfo.Change finalMainChild = mainChild; final TransitionInfo.Change finalSideChild = sideChild; enterTransition.setFinishedCallback((callbackWct, callbackT) -> { - notifySplitAnimationFinished(); if (finalMainChild != null) { if (!mainNotContainOpenTask) { mMainStage.evictOtherChildren(callbackWct, finalMainChild.getTaskInfo().taskId); @@ -3468,19 +3452,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitLayout.isLeftRightSplit()); } - private void handleUnsupportedSplitStart() { - mSplitUnsupportedToast.show(); - notifySplitAnimationFinished(); - } - - private void notifySplitAnimationFinished() { - if (mSplitInvocationListener == null || mSplitInvocationListenerExecutor == null) { - return; - } - mSplitInvocationListenerExecutor.execute(() -> - mSplitInvocationListener.onSplitAnimationInvoked(false /*animationRunning*/)); - } - /** * Logs the exit of splitscreen to a specific stage. This must be called before the exit is * executed. @@ -3543,7 +3514,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (!ENABLE_SHELL_TRANSITIONS) { StageCoordinator.this.exitSplitScreen(isMainStage ? mMainStage : mSideStage, EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW); - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); return; } @@ -3563,7 +3534,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, "app package " + taskInfo.baseActivity.getPackageName() + " does not support splitscreen, or is a controlled activity type")); if (splitScreenVisible) { - handleUnsupportedSplitStart(); + mSplitUnsupportedToast.show(); } } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java index 34b2eebb15a1..befc702b01aa 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java @@ -39,13 +39,10 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import android.annotation.NonNull; import android.app.ActivityManager; @@ -66,7 +63,6 @@ import com.android.wm.shell.RootTaskDisplayAreaOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.TestRunningTaskInfoBuilder; -import com.android.wm.shell.TestShellExecutor; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; import com.android.wm.shell.common.DisplayInsetsController; @@ -109,8 +105,6 @@ public class SplitTransitionTests extends ShellTestCase { @Mock private ShellExecutor mMainExecutor; @Mock private LaunchAdjacentController mLaunchAdjacentController; @Mock private DefaultMixedHandler mMixedHandler; - @Mock private SplitScreen.SplitInvocationListener mInvocationListener; - private final TestShellExecutor mTestShellExecutor = new TestShellExecutor(); private SplitLayout mSplitLayout; private MainStage mMainStage; private SideStage mSideStage; @@ -153,7 +147,6 @@ public class SplitTransitionTests extends ShellTestCase { .setParentTaskId(mSideStage.mRootTaskInfo.taskId).build(); doReturn(mock(SplitDecorManager.class)).when(mMainStage).getSplitDecorManager(); doReturn(mock(SplitDecorManager.class)).when(mSideStage).getSplitDecorManager(); - mStageCoordinator.registerSplitAnimationListener(mInvocationListener, mTestShellExecutor); } @Test @@ -459,15 +452,6 @@ public class SplitTransitionTests extends ShellTestCase { mMainStage.activate(new WindowContainerTransaction(), true /* includingTopTask */); } - @Test - @UiThreadTest - public void testSplitInvocationCallback() { - enterSplit(); - mTestShellExecutor.flushAll(); - verify(mInvocationListener, times(1)) - .onSplitAnimationInvoked(eq(true)); - } - private boolean containsSplitEnter(@NonNull WindowContainerTransaction wct) { for (int i = 0; i < wct.getHierarchyOps().size(); ++i) { WindowContainerTransaction.HierarchyOp op = wct.getHierarchyOps().get(i); |