diff options
| author | 2021-11-05 04:44:58 +0000 | |
|---|---|---|
| committer | 2021-11-05 04:44:58 +0000 | |
| commit | 6edd10849f766b39bb9da5ffb1028453b378e8ed (patch) | |
| tree | 1b60a958e74d16e48b2b8b9d47c25302328a8766 /libs | |
| parent | 8daeeb7e85f0f7ccc19fdd53c128f5bc05244661 (diff) | |
| parent | 7432714905f69111120a69223c8334fa076df4f6 (diff) | |
Merge "Add exit log for debugging auto dismissing bug" into sc-v2-dev am: 5dbf72509d am: 7432714905
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16180812
Change-Id: I3552610f3a66c82c234ed02bbdee7415976719a8
Diffstat (limited to 'libs')
2 files changed, 36 insertions, 0 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 4fa1eadb0bc2..3345613f077c 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 @@ -30,7 +30,10 @@ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED_ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__DEVICE_FOLDED; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__DRAG_DIVIDER; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__RETURN_HOME; +import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__ROOT_TASK_VANISHED; +import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__SCREEN_LOCKED; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__SCREEN_LOCKED_SHOW_ON_TOP; +import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__UNKNOWN_EXIT; import static com.android.wm.shell.common.split.SplitLayout.SPLIT_POSITION_BOTTOM_OR_RIGHT; import static com.android.wm.shell.common.split.SplitLayout.SPLIT_POSITION_TOP_OR_LEFT; import static com.android.wm.shell.common.split.SplitLayout.SPLIT_POSITION_UNDEFINED; @@ -528,6 +531,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, } void exitSplitScreen(int toTopTaskId, int exitReason) { + if (!mMainStage.isActive()) return; + StageTaskListener childrenToTop = null; if (mMainStage.containsTask(toTopTaskId)) { childrenToTop = mMainStage; @@ -543,6 +548,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, } private void exitSplitScreen(StageTaskListener childrenToTop, int exitReason) { + if (!mMainStage.isActive()) return; + final WindowContainerTransaction wct = new WindowContainerTransaction(); applyExitSplitScreen(childrenToTop, wct, exitReason); } @@ -559,6 +566,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, setDividerVisibility(false); mSplitLayout.resetDividerPosition(); mTopStageAfterFoldDismiss = STAGE_TYPE_UNDEFINED; + Slog.i(TAG, "applyExitSplitScreen, reason = " + exitReasonToString(exitReason)); if (childrenToTop != null) { logExitToStage(exitReason, childrenToTop == mMainStage); } else { @@ -1274,6 +1282,31 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitLayout.isLandscape()); } + private String exitReasonToString(int exitReason) { + switch (exitReason) { + case SPLITSCREEN_UICHANGED__EXIT_REASON__UNKNOWN_EXIT: + return "UNKNOWN_EXIT"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__DRAG_DIVIDER: + return "DRAG_DIVIDER"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__RETURN_HOME: + return "RETURN_HOME"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__SCREEN_LOCKED: + return "SCREEN_LOCKED"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__SCREEN_LOCKED_SHOW_ON_TOP: + return "SCREEN_LOCKED_SHOW_ON_TOP"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__DEVICE_FOLDED: + return "DEVICE_FOLDED"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__ROOT_TASK_VANISHED: + return "ROOT_TASK_VANISHED"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__APP_FINISHED: + return "APP_FINISHED"; + case SPLITSCREEN_UICHANGED__EXIT_REASON__APP_DOES_NOT_SUPPORT_MULTIWINDOW: + return "APP_DOES_NOT_SUPPORT_MULTIWINDOW"; + default: + return "unknown reason, reason int = " + exitReason; + } + } + class StageListenerImpl implements StageTaskListener.StageListenerCallbacks { boolean mHasRootTask = false; boolean mVisible = false; 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 617e94a4e0a4..e71fa94b3e32 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 @@ -161,6 +161,7 @@ public class StageCoordinatorTests extends ShellTestCase { @Test public void testExitSplitScreen() { + when(mMainStage.isActive()).thenReturn(true); mStageCoordinator.exitSplitScreen(INVALID_TASK_ID, SPLITSCREEN_UICHANGED__EXIT_REASON__RETURN_HOME); verify(mSideStage).removeAllTasks(any(WindowContainerTransaction.class), eq(false)); @@ -169,6 +170,7 @@ public class StageCoordinatorTests extends ShellTestCase { @Test public void testExitSplitScreenToMainStage() { + when(mMainStage.isActive()).thenReturn(true); final int testTaskId = 12345; when(mMainStage.containsTask(eq(testTaskId))).thenReturn(true); when(mSideStage.containsTask(eq(testTaskId))).thenReturn(false); @@ -182,6 +184,7 @@ public class StageCoordinatorTests extends ShellTestCase { @Test public void testExitSplitScreenToSideStage() { + when(mMainStage.isActive()).thenReturn(true); final int testTaskId = 12345; when(mMainStage.containsTask(eq(testTaskId))).thenReturn(false); when(mSideStage.containsTask(eq(testTaskId))).thenReturn(true); |