summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Vinit Nayak <peanutbutter@google.com> 2024-03-14 18:38:46 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-03-14 18:38:46 +0000
commit38c9a10f10cdd369ab7e0cf6a07c9eedb4c7733f (patch)
treea894d7d2710ffd599a36ea4aca54365c3b296350 /libs
parentd46d51a5776af3b3eae6388988cc75b542501d8b (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')
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java22
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java13
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java43
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java16
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);