Show toast if app doesn't support split
Presents an "unsupported split" message for EXIT_REASON_UNKNOWN. Bug: 244208843 Test: atest WMShellFlickerTests Change-Id: I4870590501e229dc14058c089038e360a4861292
This commit is contained in:
@@ -207,6 +207,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
private int mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
private int mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED;
|
||||||
|
|
||||||
private DefaultMixedHandler mMixedHandler;
|
private DefaultMixedHandler mMixedHandler;
|
||||||
|
private final Toast mSplitUnsupportedToast;
|
||||||
|
|
||||||
private final SplitWindowManager.ParentContainerCallbacks mParentContainerCallbacks =
|
private final SplitWindowManager.ParentContainerCallbacks mParentContainerCallbacks =
|
||||||
new SplitWindowManager.ParentContainerCallbacks() {
|
new SplitWindowManager.ParentContainerCallbacks() {
|
||||||
@@ -300,6 +301,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
mDisplayLayout = new DisplayLayout(displayController.getDisplayLayout(displayId));
|
mDisplayLayout = new DisplayLayout(displayController.getDisplayLayout(displayId));
|
||||||
transitions.addHandler(this);
|
transitions.addHandler(this);
|
||||||
mTaskOrganizer.addFocusListener(this);
|
mTaskOrganizer.addFocusListener(this);
|
||||||
|
mSplitUnsupportedToast = Toast.makeText(mContext,
|
||||||
|
R.string.dock_non_resizeble_failed_to_dock_text, Toast.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -329,6 +332,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
mDisplayController.addDisplayWindowListener(this);
|
mDisplayController.addDisplayWindowListener(this);
|
||||||
mDisplayLayout = new DisplayLayout();
|
mDisplayLayout = new DisplayLayout();
|
||||||
transitions.addHandler(this);
|
transitions.addHandler(this);
|
||||||
|
mSplitUnsupportedToast = Toast.makeText(mContext,
|
||||||
|
R.string.dock_non_resizeble_failed_to_dock_text, Toast.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMixedHandler(DefaultMixedHandler mixedHandler) {
|
public void setMixedHandler(DefaultMixedHandler mixedHandler) {
|
||||||
@@ -470,6 +475,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
mMainExecutor.execute(() ->
|
mMainExecutor.execute(() ->
|
||||||
exitSplitScreen(mMainStage.getChildCount() == 0
|
exitSplitScreen(mMainStage.getChildCount() == 0
|
||||||
? mSideStage : mMainStage, EXIT_REASON_UNKNOWN));
|
? mSideStage : mMainStage, EXIT_REASON_UNKNOWN));
|
||||||
|
mSplitUnsupportedToast.show();
|
||||||
} else {
|
} else {
|
||||||
// Switch the split position if launching as MULTIPLE_TASK failed.
|
// Switch the split position if launching as MULTIPLE_TASK failed.
|
||||||
if ((fillInIntent.getFlags() & FLAG_ACTIVITY_MULTIPLE_TASK) != 0) {
|
if ((fillInIntent.getFlags() & FLAG_ACTIVITY_MULTIPLE_TASK) != 0) {
|
||||||
@@ -736,6 +742,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
mMainExecutor.execute(() ->
|
mMainExecutor.execute(() ->
|
||||||
exitSplitScreen(mMainStage.getChildCount() == 0
|
exitSplitScreen(mMainStage.getChildCount() == 0
|
||||||
? mSideStage : mMainStage, EXIT_REASON_UNKNOWN));
|
? mSideStage : mMainStage, EXIT_REASON_UNKNOWN));
|
||||||
|
mSplitUnsupportedToast.show();
|
||||||
} else {
|
} else {
|
||||||
mSyncQueue.queue(evictWct);
|
mSyncQueue.queue(evictWct);
|
||||||
}
|
}
|
||||||
@@ -2287,13 +2294,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
@Override
|
@Override
|
||||||
public void onNoLongerSupportMultiWindow() {
|
public void onNoLongerSupportMultiWindow() {
|
||||||
if (mMainStage.isActive()) {
|
if (mMainStage.isActive()) {
|
||||||
final Toast splitUnsupportedToast = Toast.makeText(mContext,
|
|
||||||
R.string.dock_non_resizeble_failed_to_dock_text, Toast.LENGTH_SHORT);
|
|
||||||
final boolean isMainStage = mMainStageListener == this;
|
final boolean isMainStage = mMainStageListener == this;
|
||||||
if (!ENABLE_SHELL_TRANSITIONS) {
|
if (!ENABLE_SHELL_TRANSITIONS) {
|
||||||
StageCoordinator.this.exitSplitScreen(isMainStage ? mMainStage : mSideStage,
|
StageCoordinator.this.exitSplitScreen(isMainStage ? mMainStage : mSideStage,
|
||||||
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
|
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
|
||||||
splitUnsupportedToast.show();
|
mSplitUnsupportedToast.show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2302,7 +2307,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
prepareExitSplitScreen(stageType, wct);
|
prepareExitSplitScreen(stageType, wct);
|
||||||
mSplitTransitions.startDismissTransition(wct,StageCoordinator.this, stageType,
|
mSplitTransitions.startDismissTransition(wct,StageCoordinator.this, stageType,
|
||||||
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
|
EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW);
|
||||||
splitUnsupportedToast.show();
|
mSplitUnsupportedToast.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user