From e123080eeced0e88091cfa13cc4cb3cdca8dc634 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Wed, 4 Sep 2024 18:12:37 -0700 Subject: Add exit logs to various points * This solution still isn't comprehensive. We're missing exits from things like screen off, swiping up from overview, etc. However, we probably need to do a much larger overhaul of how we're logging metrics and be better about defining what "enter" and "exit" mean * Couple minor bug-fixes Bug: 349930269 Test: Tested via logging Flag: EXEMPT bugfix Change-Id: I096e0a6bf11edf4bcf1b9fd0964285ecd812996c --- .../android/wm/shell/splitscreen/SplitscreenEventLogger.java | 4 ++++ .../com/android/wm/shell/splitscreen/StageCoordinator.java | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java index cea995ded256..9d428c34df80 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java @@ -24,6 +24,7 @@ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED_ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__CHILD_TASK_ENTER_PIP; 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__FULLSCREEN_REQUEST; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__FULLSCREEN_SHORTCUT; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__DESKTOP_MODE; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__RECREATE_SPLIT; @@ -44,6 +45,7 @@ import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DEVICE_FOLDED; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DRAG_DIVIDER; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DESKTOP_MODE; +import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_FULLSCREEN_REQUEST; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_FULLSCREEN_SHORTCUT; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RECREATE_SPLIT; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RETURN_HOME; @@ -196,6 +198,8 @@ public class SplitscreenEventLogger { return SPLITSCREEN_UICHANGED__EXIT_REASON__FULLSCREEN_SHORTCUT; case EXIT_REASON_DESKTOP_MODE: return SPLITSCREEN_UICHANGED__EXIT_REASON__DESKTOP_MODE; + case EXIT_REASON_FULLSCREEN_REQUEST: + return SPLITSCREEN_UICHANGED__EXIT_REASON__FULLSCREEN_REQUEST; case EXIT_REASON_UNKNOWN: // Fall through default: 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 8921ceb6175d..e640a0c5d471 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 @@ -1167,6 +1167,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitTransitions.startDismissTransition(wct, this, mLastActiveStage, reason); setSplitsVisible(false); mBreakOnNextWake = false; + logExit(reason); } void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) { @@ -1257,6 +1258,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final WindowContainerTransaction wct = new WindowContainerTransaction(); prepareExitSplitScreen(stage, wct); mSplitTransitions.startDismissTransition(wct, this, stage, exitReason); + logExit(exitReason); } /** @@ -1353,6 +1355,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mMainStage.doForAllChildTasks(taskId -> recentTasks.removeSplitPair(taskId)); mSideStage.doForAllChildTasks(taskId -> recentTasks.removeSplitPair(taskId)); }); + logExit(exitReason); } /** @@ -1572,7 +1575,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (stage == STAGE_TYPE_MAIN) { mLogger.logMainStageAppChange(getMainStagePosition(), mMainStage.getTopChildTaskUid(), mSplitLayout.isLeftRightSplit()); - } else { + } else if (stage == STAGE_TYPE_SIDE) { mLogger.logSideStageAppChange(getSideStagePosition(), mSideStage.getTopChildTaskUid(), mSplitLayout.isLeftRightSplit()); } @@ -2270,6 +2273,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (isOpening && inFullscreen) { // One task is opening into fullscreen mode, remove the corresponding split record. mRecentTasks.ifPresent(recentTasks -> recentTasks.removeSplitPair(triggerTask.taskId)); + logExit(EXIT_REASON_FULLSCREEN_REQUEST); } if (isSplitActive()) { @@ -2397,6 +2401,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (triggerTask != null) { mRecentTasks.ifPresent( recentTasks -> recentTasks.removeSplitPair(triggerTask.taskId)); + logExit(EXIT_REASON_CHILD_TASK_ENTER_PIP); } @StageType int topStage = STAGE_TYPE_UNDEFINED; if (isSplitScreenVisible()) { @@ -2738,7 +2743,10 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final int dismissTop = mainChild != null ? STAGE_TYPE_MAIN : (sideChild != null ? STAGE_TYPE_SIDE : STAGE_TYPE_UNDEFINED); pendingEnter.cancel( - (cancelWct, cancelT) -> prepareExitSplitScreen(dismissTop, cancelWct)); + (cancelWct, cancelT) -> { + prepareExitSplitScreen(dismissTop, cancelWct); + logExit(EXIT_REASON_UNKNOWN); + }); Log.w(TAG, splitFailureMessage("startPendingEnterAnimation", "launched 2 tasks in split, but didn't receive " + "2 tasks in transition. Possibly one of them failed to launch")); -- cgit v1.2.3-59-g8ed1b