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

Commit 86b9ad4f authored by Schneider Victor-tulias's avatar Schneider Victor-tulias
Browse files

Add debug logs to TopTaskTracker

Flag: NONE debug logs
Bug: 342247547
Test: checked TIS logs
Change-Id: I6c8440af122a0376ffd77df6c8c9b9aeb742d447
parent 5a4b813d
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITIO
import android.annotation.UserIdInt;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -47,6 +48,7 @@ import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListeners;
import com.android.wm.shell.splitscreen.ISplitScreenListener;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -61,6 +63,10 @@ import java.util.List;
public class TopTaskTracker extends ISplitScreenListener.Stub
        implements TaskStackChangeListener, SafeCloseable {

    private static final String TAG = "TopTaskTracker";
    
    private static final boolean DEBUG = true;

    public static MainThreadInitializedObject<TopTaskTracker> INSTANCE =
            new MainThreadInitializedObject<>(TopTaskTracker::new);

@@ -92,10 +98,19 @@ public class TopTaskTracker extends ISplitScreenListener.Stub
    @Override
    public void onTaskRemoved(int taskId) {
        mOrderedTaskList.removeIf(rto -> rto.taskId == taskId);
        if (DEBUG) {
            Log.i(TAG, "onTaskRemoved: taskId=" + taskId);
        }
    }

    @Override
    public void onTaskMovedToFront(RunningTaskInfo taskInfo) {
        if (!mOrderedTaskList.isEmpty()
                && mOrderedTaskList.getFirst().taskId != taskInfo.taskId
                && DEBUG) {
            Log.i(TAG, "onTaskMovedToFront: (moved taskInfo to front) taskId=" + taskInfo.taskId
                    + ", baseIntent=" + taskInfo.baseIntent);
        }
        mOrderedTaskList.removeIf(rto -> rto.taskId == taskInfo.taskId);
        mOrderedTaskList.addFirst(taskInfo);

@@ -106,6 +121,11 @@ public class TopTaskTracker extends ISplitScreenListener.Stub
            final RunningTaskInfo topTaskOnHomeDisplay = mOrderedTaskList.stream()
                    .filter(rto -> rto.displayId == DEFAULT_DISPLAY).findFirst().orElse(null);
            if (topTaskOnHomeDisplay != null) {
                if (DEBUG) {
                    Log.i(TAG, "onTaskMovedToFront: (removing top task on home display) taskId="
                            + topTaskOnHomeDisplay.taskId
                            + ", baseIntent=" + topTaskOnHomeDisplay.baseIntent);
                }
                mOrderedTaskList.removeIf(rto -> rto.taskId == topTaskOnHomeDisplay.taskId);
                mOrderedTaskList.addFirst(topTaskOnHomeDisplay);
            }
@@ -119,6 +139,10 @@ public class TopTaskTracker extends ISplitScreenListener.Stub
                if (info.taskId != taskInfo.taskId
                        && info.taskId != mMainStagePosition.taskId
                        && info.taskId != mSideStagePosition.taskId) {
                    if (DEBUG) {
                        Log.i(TAG, "onTaskMovedToFront: (removing task list overflow) taskId="
                                + taskInfo.taskId + ", baseIntent=" + taskInfo.baseIntent);
                    }
                    itr.remove();
                    return;
                }
@@ -128,6 +152,9 @@ public class TopTaskTracker extends ISplitScreenListener.Stub

    @Override
    public void onStagePositionChanged(@StageType int stage, @StagePosition int position) {
        if (DEBUG) {
            Log.i(TAG, "onStagePositionChanged: stage=" + stage + ", position=" + position);
        }
        if (stage == SplitConfigurationOptions.STAGE_TYPE_MAIN) {
            mMainStagePosition.stagePosition = position;
        } else {
@@ -137,6 +164,10 @@ public class TopTaskTracker extends ISplitScreenListener.Stub

    @Override
    public void onTaskStageChanged(int taskId, @StageType int stage, boolean visible) {
        if (DEBUG) {
            Log.i(TAG, "onTaskStageChanged: taskId=" + taskId
                    + ", stage=" + stage + ", visible=" + visible);
        }
        // If a task is not visible anymore or has been moved to undefined, stop tracking it.
        if (!visible || stage == SplitConfigurationOptions.STAGE_TYPE_UNDEFINED) {
            if (mMainStagePosition.taskId == taskId) {
@@ -156,11 +187,18 @@ public class TopTaskTracker extends ISplitScreenListener.Stub

    @Override
    public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
        if (DEBUG) {
            Log.i(TAG, "onActivityPinned: packageName=" + packageName
                    + ", userId=" + userId + ", stackId=" + stackId);
        }
        mPinnedTaskId = taskId;
    }

    @Override
    public void onActivityUnpinned() {
        if (DEBUG) {
            Log.i(TAG, "onActivityUnpinned");
        }
        mPinnedTaskId = INVALID_TASK_ID;
    }

@@ -212,6 +250,21 @@ public class TopTaskTracker extends ISplitScreenListener.Stub
        return new CachedTaskInfo(tasks);
    }

    public void dump(String prefix, PrintWriter writer) {
        writer.println(prefix + "TopTaskTracker:");

        writer.println(prefix + "\tmOrderedTaskList=[");
        for (RunningTaskInfo taskInfo : mOrderedTaskList) {
            writer.println(prefix + "\t\t(taskId=" + taskInfo.taskId
                    + "; baseIntent=" + taskInfo.baseIntent
                    + "; isRunning=" + taskInfo.isRunning + ")");
        }
        writer.println(prefix + "\t]");
        writer.println(prefix + "\tmMainStagePosition=" + mMainStagePosition);
        writer.println(prefix + "\tmSideStagePosition=" + mSideStagePosition);
        writer.println(prefix + "\tmPinnedTaskId=" + mPinnedTaskId);
    }

    /**
     * Class to provide information about a task which can be safely cached and do not change
     * during the lifecycle of the task.
+1 −0
Original line number Diff line number Diff line
@@ -1467,6 +1467,7 @@ public class TouchInteractionService extends Service {
        pw.println("\tmConsumer=" + mConsumer.getName());
        ActiveGestureLog.INSTANCE.dump("", pw);
        RecentsModel.INSTANCE.get(this).dump("", pw);
        TopTaskTracker.INSTANCE.get(this).dump("", pw);
        if (mTaskAnimationManager != null) {
            mTaskAnimationManager.dump("", pw);
        }
+6 −0
Original line number Diff line number Diff line
@@ -186,6 +186,12 @@ public final class SplitConfigurationOptions {
        public int stagePosition = STAGE_POSITION_UNDEFINED;
        @StageType
        public int stageType = STAGE_TYPE_UNDEFINED;

        @Override
        public String toString() {
            return "SplitStageInfo { taskId=" + taskId
                    + ", stagePosition=" + stagePosition + ", stageType=" + stageType + " }";
        }
    }

    public static StatsLogManager.EventEnum getLogEventForPosition(@StagePosition int position) {