diff options
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java | 39 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 25 |
2 files changed, 50 insertions, 14 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..1e6fa2807b9b 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 @@ -32,6 +32,7 @@ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED_ 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.protolog.ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN; import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT; import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED; import static com.android.wm.shell.splitscreen.SplitScreenController.ENTER_REASON_DRAG; @@ -57,6 +58,7 @@ import android.util.Slog; import com.android.internal.logging.InstanceId; import com.android.internal.logging.InstanceIdSequence; +import com.android.internal.protolog.ProtoLog; import com.android.internal.util.FrameworkStatsLog; import com.android.wm.shell.shared.split.SplitScreenConstants.SplitPosition; import com.android.wm.shell.splitscreen.SplitScreenController.ExitReason; @@ -133,6 +135,11 @@ public class SplitscreenEventLogger { @SplitPosition int mainStagePosition, int mainStageUid, @SplitPosition int sideStagePosition, int sideStageUid, boolean isLandscape) { + if (hasStartedSession()) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logEnter: no-op, previous session has not ended"); + return; + } + mLoggerSessionId = mIdSequence.newInstanceId(); int enterReason = getLoggerEnterReason(isLandscape); updateMainStageState(getMainStagePositionFromSplitPosition(mainStagePosition, isLandscape), @@ -140,6 +147,14 @@ public class SplitscreenEventLogger { updateSideStageState(getSideStagePositionFromSplitPosition(sideStagePosition, isLandscape), sideStageUid); updateSplitRatioState(splitRatio); + + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logEnter: enterReason=%d splitRatio=%f " + + "mainStagePosition=%d mainStageUid=%d sideStagePosition=%d " + + "sideStageUid=%d isLandscape=%b mEnterSessionId=%d mLoggerSessionId=%d", + enterReason, splitRatio, mLastMainStagePosition, mLastMainStageUid, + mLastSideStagePosition, mLastSideStageUid, isLandscape, + mEnterSessionId != null ? mEnterSessionId.getId() : 0, mLoggerSessionId.getId()); + FrameworkStatsLog.write(FrameworkStatsLog.SPLITSCREEN_UI_CHANGED, FrameworkStatsLog.SPLITSCREEN_UICHANGED__ACTION__ENTER, enterReason, @@ -212,14 +227,25 @@ public class SplitscreenEventLogger { @SplitPosition int mainStagePosition, int mainStageUid, @SplitPosition int sideStagePosition, int sideStageUid, boolean isLandscape) { if (mLoggerSessionId == null) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logExit: no-op, mLoggerSessionId is null"); // Ignore changes until we've started logging the session return; } if ((mainStagePosition != SPLIT_POSITION_UNDEFINED && sideStagePosition != SPLIT_POSITION_UNDEFINED) || (mainStageUid != 0 && sideStageUid != 0)) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, + "logExit: no-op, only main or side stage should be set, not both/none"); throw new IllegalArgumentException("Only main or side stage should be set"); } + + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logExit: exitReason=%d mainStagePosition=%d" + + " mainStageUid=%d sideStagePosition=%d sideStageUid=%d isLandscape=%b" + + " mLoggerSessionId=%d", getLoggerExitReason(exitReason), + getMainStagePositionFromSplitPosition(mainStagePosition, isLandscape), mainStageUid, + getSideStagePositionFromSplitPosition(sideStagePosition, isLandscape), sideStageUid, + isLandscape, mLoggerSessionId.getId()); + FrameworkStatsLog.write(FrameworkStatsLog.SPLITSCREEN_UI_CHANGED, FrameworkStatsLog.SPLITSCREEN_UICHANGED__ACTION__EXIT, 0 /* enterReason */, @@ -304,18 +330,25 @@ public class SplitscreenEventLogger { */ public void logResize(float splitRatio) { if (mLoggerSessionId == null) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logResize: no-op, mLoggerSessionId is null"); // Ignore changes until we've started logging the session return; } if (splitRatio <= 0f || splitRatio >= 1f) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, + "logResize: no-op, splitRatio indicates that user is dismissing, not resizing"); // Don't bother reporting resizes that end up dismissing the split, that will be logged // via the exit event return; } if (!updateSplitRatioState(splitRatio)) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logResize: no-op, split ratio was not changed"); // Ignore if there are no user perceived changes return; } + + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logResize: splitRatio=%f mLoggerSessionId=%d", + mLastSplitRatio, mLoggerSessionId.getId()); FrameworkStatsLog.write(FrameworkStatsLog.SPLITSCREEN_UI_CHANGED, FrameworkStatsLog.SPLITSCREEN_UICHANGED__ACTION__RESIZE, 0 /* enterReason */, @@ -335,6 +368,7 @@ public class SplitscreenEventLogger { public void logSwap(@SplitPosition int mainStagePosition, int mainStageUid, @SplitPosition int sideStagePosition, int sideStageUid, boolean isLandscape) { if (mLoggerSessionId == null) { + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logSwap: no-op, mLoggerSessionId is null"); // Ignore changes until we've started logging the session return; } @@ -343,6 +377,11 @@ public class SplitscreenEventLogger { mainStageUid); updateSideStageState(getSideStagePositionFromSplitPosition(sideStagePosition, isLandscape), sideStageUid); + + ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "logSwap: mainStagePosition=%d mainStageUid=%d " + + "sideStagePosition=%d sideStageUid=%d mLoggerSessionId=%d", + mLastMainStagePosition, mLastMainStageUid, mLastSideStagePosition, + mLastSideStageUid, mLoggerSessionId.getId()); FrameworkStatsLog.write(FrameworkStatsLog.SPLITSCREEN_UI_CHANGED, FrameworkStatsLog.SPLITSCREEN_UICHANGED__ACTION__SWAP, 0 /* enterReason */, 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 a10c1db20317..f3959cca050b 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 @@ -1480,12 +1480,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSkipEvictingMainStageChildren = false; mSplitRequest = null; updateRecentTasksSplitPair(); - if (!mLogger.hasStartedSession()) { - mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(), - getMainStagePosition(), mMainStage.getTopChildTaskUid(), - getSideStagePosition(), mSideStage.getTopChildTaskUid(), - mSplitLayout.isLeftRightSplit()); - } + + mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(), + getMainStagePosition(), mMainStage.getTopChildTaskUid(), + getSideStagePosition(), mSideStage.getTopChildTaskUid(), + mSplitLayout.isLeftRightSplit()); } void getStageBounds(Rect outTopOrLeftBounds, Rect outBottomOrRightBounds) { @@ -1961,15 +1960,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, clearRequestIfPresented(); updateRecentTasksSplitPair(); - if (!mLogger.hasStartedSession()) { - if (!mLogger.hasValidEnterSessionId()) { - mLogger.enterRequested(null /*enterSessionId*/, ENTER_REASON_MULTI_INSTANCE); - } - mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(), - getMainStagePosition(), mMainStage.getTopChildTaskUid(), - getSideStagePosition(), mSideStage.getTopChildTaskUid(), - mSplitLayout.isLeftRightSplit()); + if (!mLogger.hasStartedSession() && !mLogger.hasValidEnterSessionId()) { + mLogger.enterRequested(null /*enterSessionId*/, ENTER_REASON_MULTI_INSTANCE); } + mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(), + getMainStagePosition(), mMainStage.getTopChildTaskUid(), + getSideStagePosition(), mSideStage.getTopChildTaskUid(), + mSplitLayout.isLeftRightSplit()); } } |