Support exit to full screen to non-split app

When a task no longer supports multi-window, we should dismiss split
to the task so users can continue interacting with the task to prevent
bad UX. We should exit split and extand the side
NoLongerSupportMultiWindow let user could interact continuously.

Fix: 221255438
Test: manual
Test: pass existing tests
Change-Id: Iae61d821028755dcca96edb904912495b268bf8c
Merged-In: Iae61d821028755dcca96edb904912495b268bf8c
This commit is contained in:
Tony Huang
2022-04-18 17:02:38 +08:00
parent 5b19566d7a
commit f8b022ef0f

View File

@@ -1786,15 +1786,18 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override
public void onNoLongerSupportMultiWindow() {
if (mMainStage.isActive()) {
final boolean isMainStage = mMainStageListener == this;
if (!ENABLE_SHELL_TRANSITIONS) {
StageCoordinator.this.exitSplitScreen(null /* childrenToTop */,
StageCoordinator.this.exitSplitScreen(isMainStage ? mMainStage : mSideStage,
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
return;
}
final int stageType = isMainStage ? STAGE_TYPE_MAIN : STAGE_TYPE_SIDE;
final WindowContainerTransaction wct = new WindowContainerTransaction();
prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, wct);
prepareExitSplitScreen(stageType, wct);
mSplitTransitions.startDismissTransition(null /* transition */, wct,
StageCoordinator.this, STAGE_TYPE_UNDEFINED,
StageCoordinator.this, stageType,
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
}
}