diff options
| author | 2022-12-18 16:45:36 +0000 | |
|---|---|---|
| committer | 2022-12-18 16:45:36 +0000 | |
| commit | 01efd0479e9989ab70405584cd835bcc10aed67b (patch) | |
| tree | 3fcaff07575a8ab423d164f5e2fcd463359aa75d | |
| parent | 1b18ed7784e242ea6c0873eee049532b38702694 (diff) | |
| parent | b3017488b0338f380633cce20454ae957999b609 (diff) | |
Merge "Always dismiss split after folded the device" into tm-qpr-dev am: 258944c4cc am: b3017488b0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20730951
Change-Id: I99636e7fd1edc20a67ae65f2c2c50dc93bd73f5b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2 files changed, 30 insertions, 23 deletions
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 717ae91f74c5..8ddc3c04d991 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 @@ -204,10 +204,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, private boolean mIsDropEntering; private boolean mIsExiting; - /** The target stage to dismiss to when unlock after folded. */ - @StageType - private int mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED; - private DefaultMixedHandler mMixedHandler; private final Toast mSplitUnsupportedToast; @@ -976,20 +972,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, return; } - if (!mKeyguardShowing && mTopStageAfterFoldDismiss != STAGE_TYPE_UNDEFINED) { - if (ENABLE_SHELL_TRANSITIONS) { - final WindowContainerTransaction wct = new WindowContainerTransaction(); - prepareExitSplitScreen(mTopStageAfterFoldDismiss, wct); - mSplitTransitions.startDismissTransition(wct, this, - mTopStageAfterFoldDismiss, EXIT_REASON_DEVICE_FOLDED); - } else { - exitSplitScreen( - mTopStageAfterFoldDismiss == STAGE_TYPE_MAIN ? mMainStage : mSideStage, - EXIT_REASON_DEVICE_FOLDED); - } - return; - } - setDividerVisibility(!mKeyguardShowing, null); } @@ -1828,14 +1810,28 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, sendOnBoundsChanged(); } - private void onFoldedStateChanged(boolean folded) { - mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED; + @VisibleForTesting + void onFoldedStateChanged(boolean folded) { + int topStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED; if (!folded) return; + if (!mMainStage.isActive()) return; + if (mMainStage.isFocused()) { - mTopStageAfterFoldDismiss = STAGE_TYPE_MAIN; + topStageAfterFoldDismiss = STAGE_TYPE_MAIN; } else if (mSideStage.isFocused()) { - mTopStageAfterFoldDismiss = STAGE_TYPE_SIDE; + topStageAfterFoldDismiss = STAGE_TYPE_SIDE; + } + + if (ENABLE_SHELL_TRANSITIONS) { + final WindowContainerTransaction wct = new WindowContainerTransaction(); + prepareExitSplitScreen(topStageAfterFoldDismiss, wct); + mSplitTransitions.startDismissTransition(wct, this, + topStageAfterFoldDismiss, EXIT_REASON_DEVICE_FOLDED); + } else { + exitSplitScreen( + topStageAfterFoldDismiss == STAGE_TYPE_MAIN ? mMainStage : mSideStage, + EXIT_REASON_DEVICE_FOLDED); } } @@ -2118,7 +2114,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, // Update divider state after animation so that it is still around and positioned // properly for the animation itself. mSplitLayout.release(); - mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED; } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java index f3b18564b15d..65e1ea881b26 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java @@ -320,4 +320,16 @@ public class StageCoordinatorTests extends ShellTestCase { assertTrue(options.getBoolean( KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED_BY_PERMISSION)); } + + @Test + public void testExitSplitScreenAfterFolded() { + when(mMainStage.isActive()).thenReturn(true); + when(mMainStage.isFocused()).thenReturn(true); + when(mMainStage.getTopVisibleChildTaskId()).thenReturn(INVALID_TASK_ID); + + mStageCoordinator.onFoldedStateChanged(true); + + verify(mStageCoordinator).onSplitScreenExit(); + verify(mMainStage).deactivate(any(WindowContainerTransaction.class), eq(false)); + } } |