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

Commit 11afae1b authored by Jordan Silva's avatar Jordan Silva
Browse files

Adding logs to monitor OverviewCommandHelper

This CL adds some logs to help analyzing why recents button with 3 button navigation sometimes don't open Overview.

Bug: 337954957
Test: NONE
Flag: EXEMPT Adding logs to debug issue
Change-Id: I44a799319eca667b04d4e78a38ade796fc3b69fb
parent 1d9f23b1
Loading
Loading
Loading
Loading
+46 −4
Original line number Diff line number Diff line
@@ -28,9 +28,11 @@ import android.content.Intent;
import android.graphics.PointF;
import android.os.SystemClock;
import android.os.Trace;
import android.util.Log;
import android.view.View;

import androidx.annotation.BinderThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;

@@ -58,6 +60,7 @@ import java.util.HashMap;
 * Helper class to handle various atomic commands for switching between Overview.
 */
public class OverviewCommandHelper {
    private static final String TAG = "OverviewCommandHelper";

    public static final int TYPE_SHOW = 1;
    public static final int TYPE_KEYBOARD_INPUT = 2;
@@ -105,11 +108,20 @@ public class OverviewCommandHelper {
     * Called when the command finishes execution.
     */
    private void scheduleNextTask(CommandInfo command) {
        if (!mPendingCommands.isEmpty() && mPendingCommands.get(0) == command) {
        if (mPendingCommands.isEmpty()) {
            Log.d(TAG, "no pending commands to schedule");
            return;
        }
        if (mPendingCommands.get(0) != command) {
            Log.d(TAG, "next task not scheduled."
                    + " mPendingCommands[0] type is " + mPendingCommands.get(0)
                    + " - command type is: " + command);
            return;
        }
        Log.d(TAG, "scheduleNextTask called: " + command);
        mPendingCommands.remove(0);
        executeNext();
    }
    }

    /**
     * Executes the next command from the queue. If the command finishes immediately (returns true),
@@ -119,10 +131,14 @@ public class OverviewCommandHelper {
    @UiThread
    private void executeNext() {
        if (mPendingCommands.isEmpty()) {
            Log.d(TAG, "executeNext - mPendingCommands is empty");
            return;
        }
        CommandInfo cmd = mPendingCommands.get(0);
        if (executeCommand(cmd)) {

        boolean result = executeCommand(cmd);
        Log.d(TAG, "executeNext cmd type: " + cmd + ", result: " + result);
        if (result) {
            scheduleNextTask(cmd);
        }
    }
@@ -144,14 +160,18 @@ public class OverviewCommandHelper {
    @BinderThread
    public void addCommand(int type) {
        if (mPendingCommands.size() >= MAX_QUEUE_SIZE) {
            Log.d(TAG, "the pending command queue is full (" + mPendingCommands.size() + "). "
                    + "command not added: " + type);
            return;
        }
        Log.d(TAG, "adding command type: " + type);
        CommandInfo cmd = new CommandInfo(type);
        MAIN_EXECUTOR.execute(() -> addCommand(cmd));
    }

    @UiThread
    public void clearPendingCommands() {
        Log.d(TAG, "clearing pending commands - size: " + mPendingCommands.size());
        mPendingCommands.clear();
    }

@@ -182,9 +202,11 @@ public class OverviewCommandHelper {

        if (callbackList != null) {
            callbackList.add(() -> {
                Log.d(TAG, "launching task callback: " + cmd);
                scheduleNextTask(cmd);
                mWaitForToggleCommandComplete = false;
            });
            Log.d(TAG, "launching task - waiting for callback: " + cmd);
            return false;
        } else {
            recents.startHome();
@@ -200,12 +222,17 @@ public class OverviewCommandHelper {
    private <T extends StatefulActivity<?> & RecentsViewContainer> boolean executeCommand(
            CommandInfo cmd) {
        if (mWaitForToggleCommandComplete && cmd.type == TYPE_TOGGLE) {
            Log.d(TAG, "executeCommand: " + cmd
                    + " - waiting for toggle command complete");
            return true;
        }
        BaseActivityInterface<?, T> activityInterface =
                mOverviewComponentObserver.getActivityInterface();
        RecentsView visibleRecentsView = activityInterface.getVisibleRecentsView();
        RecentsView createdRecentsView;

        Log.d(TAG, "executeCommand: " + cmd
                + " - visibleRecentsView: " + visibleRecentsView);
        if (visibleRecentsView == null) {
            T activity = activityInterface.getCreatedContainer();
            createdRecentsView = activity == null ? null : activity.getOverviewPanel();
@@ -292,14 +319,17 @@ public class OverviewCommandHelper {
                updateRecentsViewFocus(cmd);
                logShowOverviewFrom(cmd.type);
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                Log.d(TAG, "switching to Overview state - onAnimationEnd: " + cmd);
                super.onAnimationEnd(animation);
                onRecentsViewFocusUpdated(cmd);
                scheduleNextTask(cmd);
            }
        };
        if (activityInterface.switchToRecentsIfVisible(animatorListener)) {
            Log.d(TAG, "switching to Overview state - waiting: " + cmd);
            // If successfully switched, wait until animation finishes
            return false;
        }
@@ -366,10 +396,12 @@ public class OverviewCommandHelper {
            cmd.mActiveCallbacks.addListener(recentAnimListener);
        }
        Trace.beginAsyncSection(TRANSITION_NAME, 0);
        Log.d(TAG, "switching via recents animation - onGestureStarted: " + cmd);
        return false;
    }

    private void onTransitionComplete(CommandInfo cmd, AbsSwipeUpHandler handler) {
        Log.d(TAG, "switching via recents animation - onTransitionComplete: " + cmd);
        cmd.removeListener(handler);
        Trace.endAsyncSection(TRANSITION_NAME, 0);
        onRecentsViewFocusUpdated(cmd);
@@ -478,5 +510,15 @@ public class OverviewCommandHelper {
                mActiveCallbacks.removeListener(listener);
            }
        }

        @NonNull
        @Override
        public String toString() {
            return "CommandInfo("
                    + "type=" + type + ", "
                    + "createTime=" + createTime + ", "
                    + "mActiveCallbacks=" + mActiveCallbacks
                    + ")";
        }
    }
}