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

Commit 61346426 authored by Christian Göllner's avatar Christian Göllner Committed by Automerger Merge Worker
Browse files

Merge "Improve visual debugging for NotificationStackScrollLayout" into...

Merge "Improve visual debugging for NotificationStackScrollLayout" into sc-v2-dev am: 53210252 am: bd44e93c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16388646

Change-Id: I0a7eb7ad30ad0579f70789cbd3811c8ae20be8ee
parents b95bb5a6 bd44e93c
Loading
Loading
Loading
Loading
+45 −23
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

@@ -727,36 +728,57 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
        }

        if (DEBUG) {
            onDrawDebug(canvas);
        }
    }

    /** Used to track the Y positions that were already used to draw debug text labels. */
    private static final Set<Integer> DEBUG_TEXT_USED_Y_POSITIONS =
            DEBUG ? new HashSet<>() : Collections.emptySet();

    private void onDrawDebug(Canvas canvas) {
        DEBUG_TEXT_USED_Y_POSITIONS.clear();

        int y = mTopPadding;
            mDebugPaint.setColor(Color.RED);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.RED, /* label= */ "mTopPadding");

        y = getLayoutHeight();
            mDebugPaint.setColor(Color.YELLOW);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.YELLOW, /* label= */ "getLayoutHeight()");

        y = (int) mMaxLayoutHeight;
            mDebugPaint.setColor(Color.MAGENTA);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.MAGENTA, /* label= */ "mMaxLayoutHeight");

        if (mKeyguardBottomPadding >= 0) {
            y = getHeight() - (int) mKeyguardBottomPadding;
                mDebugPaint.setColor(Color.GRAY);
                canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
            drawDebugInfo(canvas, y, Color.GRAY,
                    /* label= */ "getHeight() - mKeyguardBottomPadding");
        }

        y = getHeight() - getEmptyBottomMargin();
            mDebugPaint.setColor(Color.GREEN);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.GREEN, /* label= */ "getHeight() - getEmptyBottomMargin()");

        y = (int) (mAmbientState.getStackY());
            mDebugPaint.setColor(Color.CYAN);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.CYAN, /* label= */ "mAmbientState.getStackY()");

        y = (int) (mAmbientState.getStackY() + mAmbientState.getStackHeight());
            mDebugPaint.setColor(Color.BLUE);
            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
        drawDebugInfo(canvas, y, Color.BLUE,
                /* label= */ "mAmbientState.getStackY() + mAmbientState.getStackHeight()");
    }

    private void drawDebugInfo(Canvas canvas, int y, int color, String label) {
        mDebugPaint.setColor(color);
        canvas.drawLine(/* startX= */ 0, /* startY= */ y, /* stopX= */ getWidth(), /* stopY= */ y,
                mDebugPaint);
        canvas.drawText(label, /* x= */ 0, /* y= */ computeDebugYTextPosition(y), mDebugPaint);
    }

    private int computeDebugYTextPosition(int lineY) {
        int textY = lineY;
        while (DEBUG_TEXT_USED_Y_POSITIONS.contains(textY)) {
            textY = (int) (textY + mDebugPaint.getTextSize());
        }
        DEBUG_TEXT_USED_Y_POSITIONS.add(textY);
        return textY;
    }

    @ShadeViewRefactor(RefactorComponent.DECORATOR)