Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java +1 −21 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); Loading @@ -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(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +0 −6 Original line number Diff line number Diff line Loading @@ -1143,12 +1143,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); Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java +0 −13 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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); Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +7 −36 Original line number Diff line number Diff line Loading @@ -156,7 +156,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 Loading Loading @@ -237,9 +236,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 Loading @@ -250,14 +246,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; Loading Loading @@ -541,7 +529,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) { Loading Loading @@ -672,7 +660,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) { Loading Loading @@ -1225,7 +1213,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 -> { Loading @@ -1246,7 +1234,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; } Loading Loading @@ -2818,7 +2806,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (hasEnteringPip) { mMixedHandler.animatePendingEnterPipFromSplit(transition, info, startTransaction, finishTransaction, finishCallback); notifySplitAnimationFinished(); return true; } Loading Loading @@ -2853,7 +2840,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 Loading @@ -2867,7 +2853,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitLayout.update(startTransaction, true /* resetImePosition */); startTransaction.apply(); } notifySplitAnimationFinished(); return true; } } Loading Loading @@ -3041,7 +3026,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, pendingEnter.mRemoteHandler.onTransitionConsumed(transition, false /*aborted*/, finishT); } handleUnsupportedSplitStart(); mSplitUnsupportedToast.show(); return true; } } Loading Loading @@ -3070,7 +3055,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); Loading Loading @@ -3487,19 +3471,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. Loading Loading @@ -3562,7 +3533,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; } Loading @@ -3582,7 +3553,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(); } } } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java +0 −16 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java +1 −21 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); Loading @@ -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(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +0 −6 Original line number Diff line number Diff line Loading @@ -1143,12 +1143,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); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java +0 −13 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +7 −36 Original line number Diff line number Diff line Loading @@ -156,7 +156,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 Loading Loading @@ -237,9 +236,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 Loading @@ -250,14 +246,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; Loading Loading @@ -541,7 +529,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) { Loading Loading @@ -672,7 +660,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) { Loading Loading @@ -1225,7 +1213,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 -> { Loading @@ -1246,7 +1234,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; } Loading Loading @@ -2818,7 +2806,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (hasEnteringPip) { mMixedHandler.animatePendingEnterPipFromSplit(transition, info, startTransaction, finishTransaction, finishCallback); notifySplitAnimationFinished(); return true; } Loading Loading @@ -2853,7 +2840,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 Loading @@ -2867,7 +2853,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitLayout.update(startTransaction, true /* resetImePosition */); startTransaction.apply(); } notifySplitAnimationFinished(); return true; } } Loading Loading @@ -3041,7 +3026,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, pendingEnter.mRemoteHandler.onTransitionConsumed(transition, false /*aborted*/, finishT); } handleUnsupportedSplitStart(); mSplitUnsupportedToast.show(); return true; } } Loading Loading @@ -3070,7 +3055,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); Loading Loading @@ -3487,19 +3471,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. Loading Loading @@ -3562,7 +3533,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; } Loading @@ -3582,7 +3553,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(); } } } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java +0 −16 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); Loading