Merge "Always dismiss split after folded the device" into tm-qpr-dev am: 258944c4cc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20730951 Change-Id: I14f322370237672dea21edc878b2dd0e3ad82d52 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -204,10 +204,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
private boolean mIsDropEntering;
|
private boolean mIsDropEntering;
|
||||||
private boolean mIsExiting;
|
private boolean mIsExiting;
|
||||||
|
|
||||||
/** The target stage to dismiss to when unlock after folded. */
|
|
||||||
@StageType
|
|
||||||
private int mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
|
||||||
|
|
||||||
private DefaultMixedHandler mMixedHandler;
|
private DefaultMixedHandler mMixedHandler;
|
||||||
private final Toast mSplitUnsupportedToast;
|
private final Toast mSplitUnsupportedToast;
|
||||||
|
|
||||||
@@ -976,20 +972,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
return;
|
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);
|
setDividerVisibility(!mKeyguardShowing, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1828,14 +1810,28 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
sendOnBoundsChanged();
|
sendOnBoundsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onFoldedStateChanged(boolean folded) {
|
@VisibleForTesting
|
||||||
mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
void onFoldedStateChanged(boolean folded) {
|
||||||
|
int topStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
||||||
if (!folded) return;
|
if (!folded) return;
|
||||||
|
|
||||||
|
if (!mMainStage.isActive()) return;
|
||||||
|
|
||||||
if (mMainStage.isFocused()) {
|
if (mMainStage.isFocused()) {
|
||||||
mTopStageAfterFoldDismiss = STAGE_TYPE_MAIN;
|
topStageAfterFoldDismiss = STAGE_TYPE_MAIN;
|
||||||
} else if (mSideStage.isFocused()) {
|
} 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
|
// Update divider state after animation so that it is still around and positioned
|
||||||
// properly for the animation itself.
|
// properly for the animation itself.
|
||||||
mSplitLayout.release();
|
mSplitLayout.release();
|
||||||
mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -320,4 +320,16 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
assertTrue(options.getBoolean(
|
assertTrue(options.getBoolean(
|
||||||
KEY_PENDING_INTENT_BACKGROUND_ACTIVITY_ALLOWED_BY_PERMISSION));
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user