summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Winson Chung <winsonc@google.com> 2021-11-05 04:44:58 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-11-05 04:44:58 +0000
commit6edd10849f766b39bb9da5ffb1028453b378e8ed (patch)
tree1b60a958e74d16e48b2b8b9d47c25302328a8766 /libs
parent8daeeb7e85f0f7ccc19fdd53c128f5bc05244661 (diff)
parent7432714905f69111120a69223c8334fa076df4f6 (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')
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java33
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java3
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);