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

Commit 4d851fc3 authored by Joanne Chung's avatar Joanne Chung
Browse files

Dump DefaultSelectionToolbarRenderService toolbar information

Dump toolbar information to help debug.

Bug: 219664390
Test: dumpsys activity service DefaultSelectionToolbarRenderService

Change-Id: I332d3289dc2533a7583453853f1ec9324b67d088
parent 4a300e64
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import android.util.Slog;
import android.util.SparseArray;
import android.view.selectiontoolbar.ShowInfo;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.UUID;

/**
@@ -130,5 +132,22 @@ public final class DefaultSelectionToolbarRenderService extends SelectionToolbar
            }
        }
    }

    @Override
    protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        int size = mToolbarCache.size();
        pw.print("number selectionToolbar: "); pw.println(size);
        String pfx = "  ";
        for (int i = 0; i < size; i++) {
            pw.print("#"); pw.println(i);
            int callingUid = mToolbarCache.keyAt(i);
            pw.print(pfx); pw.print("callingUid: "); pw.println(callingUid);
            Pair<Long, RemoteSelectionToolbar> toolbarPair = mToolbarCache.valueAt(i);
            RemoteSelectionToolbar selectionToolbar = toolbarPair.second;
            pw.print(pfx); pw.print("selectionToolbar: ");
            selectionToolbar.dump(pfx, pw);
            pw.println();
        }
    }
}
+15 −4
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import android.util.Log;
import android.view.MotionEvent;
import android.widget.LinearLayout;

import java.io.PrintWriter;

/**
 * This class is the root view for the selection toolbar. It is responsible for
 * detecting the click on the item and to also transfer input focus to the application.
@@ -40,6 +42,9 @@ public class FloatingToolbarRoot extends LinearLayout {
    private final SelectionToolbarRenderService.TransferTouchListener mTransferTouchListener;
    private Rect mContentRect;

    private int mLastDownX = -1;
    private int mLastDownY = -1;

    public FloatingToolbarRoot(Context context, IBinder targetInputToken,
            SelectionToolbarRenderService.TransferTouchListener transferTouchListener) {
        super(context);
@@ -59,13 +64,13 @@ public class FloatingToolbarRoot extends LinearLayout {
    @SuppressLint("ClickableViewAccessibility")
    public boolean dispatchTouchEvent(MotionEvent event) {
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            int downX = (int) event.getX();
            int downY = (int) event.getY();
            mLastDownX = (int) event.getX();
            mLastDownY = (int) event.getY();
            if (DEBUG) {
                Log.d(TAG, "downX=" + downX + " downY=" + downY);
                Log.d(TAG, "downX=" + mLastDownX + " downY=" + mLastDownY);
            }
            // TODO(b/215497659): Check FLAG_WINDOW_IS_PARTIALLY_OBSCURED
            if (!mContentRect.contains(downX, downY)) {
            if (!mContentRect.contains(mLastDownX, mLastDownY)) {
                if (DEBUG) {
                    Log.d(TAG, "Transfer touch focus to application.");
                }
@@ -75,4 +80,10 @@ public class FloatingToolbarRoot extends LinearLayout {
        }
        return super.dispatchTouchEvent(event);
    }

    void dump(String prefix, PrintWriter pw) {
        pw.print(prefix); pw.println("FloatingToolbarRoot:");
        pw.print(prefix + "  "); pw.print("last down X: "); pw.println(mLastDownX);
        pw.print(prefix + "  "); pw.print("last down Y: "); pw.println(mLastDownY);
    }
}
+29 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ import com.android.internal.R;
import com.android.internal.util.Preconditions;
import com.android.internal.widget.floatingtoolbar.FloatingToolbar;

import java.io.PrintWriter;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
@@ -1371,4 +1372,32 @@ final class RemoteSelectionToolbar {
            Log.v(TAG, message);
        }
    }

    void dump(String prefix, PrintWriter pw) {
        pw.print(prefix); pw.print("toolbar token: "); pw.println(mSelectionToolbarToken);
        pw.print(prefix); pw.print("dismissed: "); pw.println(mDismissed);
        pw.print(prefix); pw.print("hidden: "); pw.println(mHidden);
        pw.print(prefix); pw.print("popup width: "); pw.println(mPopupWidth);
        pw.print(prefix); pw.print("popup height: "); pw.println(mPopupHeight);
        pw.print(prefix); pw.print("relative coords: "); pw.println(mRelativeCoordsForToolbar);
        pw.print(prefix); pw.print("main panel size: "); pw.println(mMainPanelSize);
        boolean hasOverflow = hasOverflow();
        pw.print(prefix); pw.print("has overflow: "); pw.println(hasOverflow);
        if (hasOverflow) {
            pw.print(prefix); pw.print("overflow open: "); pw.println(mIsOverflowOpen);
            pw.print(prefix); pw.print("overflow size: "); pw.println(mOverflowPanelSize);
        }
        if (mSurfaceControlViewHost != null) {
            FloatingToolbarRoot root = (FloatingToolbarRoot) mSurfaceControlViewHost.getView();
            root.dump(prefix, pw);
        }
        if (mMenuItems != null) {
            int menuItemSize = mMenuItems.size();
            pw.print(prefix); pw.print("number menu items: "); pw.println(menuItemSize);
            for (int i = 0; i < menuItemSize; i++) {
                pw.print(prefix); pw.print("#"); pw.println(i);
                pw.print(prefix + "  "); pw.println(mMenuItems.get(i));
            }
        }
    }
}