Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d9e2ac4 authored by Jeremy Sim's avatar Jeremy Sim
Browse files

Add protologs for splitscreen enter/exit logging

Adding logs to the logging functions so we can tell if they are logging or not.

Bug: 349930269
Test: N/A
Flag: EXEMPT logging change only
Change-Id: I808f4c96e62c369e11fb89aeaac36e48eeffa545
parent 1d2177bf
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -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 */,
@@ -333,6 +366,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;
        }
@@ -341,6 +375,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 */,
+11 −14
Original line number Diff line number Diff line
@@ -1449,13 +1449,12 @@ 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());
    }
    }

    void getStageBounds(Rect outTopOrLeftBounds, Rect outBottomOrRightBounds) {
        outTopOrLeftBounds.set(mSplitLayout.getBounds1());
@@ -1930,8 +1929,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            clearRequestIfPresented();
            updateRecentTasksSplitPair();

            if (!mLogger.hasStartedSession()) {
                if (!mLogger.hasValidEnterSessionId()) {
            if (!mLogger.hasStartedSession() && !mLogger.hasValidEnterSessionId()) {
                mLogger.enterRequested(null /*enterSessionId*/, ENTER_REASON_MULTI_INSTANCE);
            }
            mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(),
@@ -1940,7 +1938,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
                    mSplitLayout.isLeftRightSplit());
        }
    }
    }

    @Override
    public void onSnappedToDismiss(boolean bottomOrRight, @ExitReason int exitReason) {