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

Commit e7e095c4 authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz
Browse files

Trace MessagingLinearLayout

Bug: 316110233
Test: presubmit
Flag: None
Change-Id: Ia5ffd7f71cc08f67873fbea2bfe21803e7053180
parent 60dc8407
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.annotation.Px;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.os.Build;
import android.os.Trace;
import android.util.AttributeSet;
import android.view.RemotableViewMethod;
import android.view.View;
@@ -45,6 +47,8 @@ public class MessagingLinearLayout extends ViewGroup {

    private int mMaxDisplayedLines = Integer.MAX_VALUE;

    private static final boolean TRACE_ONMEASURE = Build.isDebuggable();

    public MessagingLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

@@ -67,6 +71,10 @@ public class MessagingLinearLayout extends ViewGroup {

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (TRACE_ONMEASURE) {
            Trace.beginSection("MessagingLinearLayout#onMeasure");
            trackMeasureSpecs(widthMeasureSpec, heightMeasureSpec);
        }
        // This is essentially a bottom-up linear layout that only adds children that fit entirely
        // up to a maximum height.
        int targetHeight = MeasureSpec.getSize(heightMeasureSpec);
@@ -177,6 +185,9 @@ public class MessagingLinearLayout extends ViewGroup {
                resolveSize(Math.max(getSuggestedMinimumWidth(), measuredWidth),
                        widthMeasureSpec),
                Math.max(getSuggestedMinimumHeight(), totalHeight));
        if (TRACE_ONMEASURE) {
            Trace.endSection();
        }
    }

    @Override
@@ -240,6 +251,25 @@ public class MessagingLinearLayout extends ViewGroup {
        }
    }

    private void trackMeasureSpecs(int widthMeasureSpec, int heightMeasureSpec) {
        if (!TRACE_ONMEASURE) {
            return;
        }

        final int availableWidth = MeasureSpec.getSize(widthMeasureSpec);
        final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        final int availableHeight = MeasureSpec.getSize(heightMeasureSpec);
        final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
        Trace.setCounter("MessagingLinearLayout#onMeasure_widthMeasureSpecSize",
                availableWidth);
        Trace.setCounter("MessagingLinearLayout#onMeasure_widthMeasureSpecMode",
                widthMode);
        Trace.setCounter("MessagingLinearLayout#onMeasure_heightMeasureSpecSize",
                availableHeight);
        Trace.setCounter("MessagingLinearLayout#onMeasure_heightMeasureSpecMode",
                heightMode);
    }

    @Override
    protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
        final LayoutParams lp = (LayoutParams) child.getLayoutParams();