Loading core/java/com/android/internal/widget/MessagingLinearLayout.java +30 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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(); Loading Loading
core/java/com/android/internal/widget/MessagingLinearLayout.java +30 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading @@ -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); Loading Loading @@ -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 Loading Loading @@ -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(); Loading