Trace ImageFloatingTextView and NotificationToplineView

There are binder calls in BigText style perfetto traces. They can be getLayoutDirection calls.
In order to surface this and measure onMeasure perf of ImageFloatingTextView,this CL add traces for both onMeasure and getLayoutDirection.
In addition to that, this CL adds tracing to onMeasure or NotificationTopLineView

Bug: 288578300
Test: perfetto
Change-Id: I08a2fa35d7e9c5bfe554b31b152a7d9835a66974
This commit is contained in:
Ibrahim Yilmaz
2023-07-03 20:52:38 +00:00
parent 4300398bec
commit 2f0a514053
2 changed files with 10 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Rect;
import android.os.Trace;
import android.util.AttributeSet;
import android.widget.RemoteViews;
@@ -106,6 +107,7 @@ public class NotificationTopLineView extends ViewGroup {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Trace.beginSection("NotificationTopLineView#onMeasure");
final int givenWidth = MeasureSpec.getSize(widthMeasureSpec);
final int givenHeight = MeasureSpec.getSize(heightMeasureSpec);
final boolean wrapHeight = MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST;
@@ -161,6 +163,7 @@ public class NotificationTopLineView extends ViewGroup {
.finish();
}
setMeasuredDimension(givenWidth, wrapHeight ? maxChildHeight : givenHeight);
Trace.endSection();
}
@Override

View File

@@ -18,6 +18,7 @@ package com.android.internal.widget;
import android.annotation.Nullable;
import android.content.Context;
import android.os.Trace;
import android.text.BoringLayout;
import android.text.Layout;
import android.text.StaticLayout;
@@ -68,6 +69,7 @@ public class ImageFloatingTextView extends TextView {
protected Layout makeSingleLayout(int wantWidth, BoringLayout.Metrics boring, int ellipsisWidth,
Layout.Alignment alignment, boolean shouldEllipsize,
TextUtils.TruncateAt effectiveEllipsize, boolean useSaved) {
Trace.beginSection("ImageFloatingTextView#makeSingleLayout");
TransformationMethod transformationMethod = getTransformationMethod();
CharSequence text = getText();
if (transformationMethod != null) {
@@ -110,7 +112,9 @@ public class ImageFloatingTextView extends TextView {
builder.setIndents(null, margins);
}
return builder.build();
final StaticLayout result = builder.build();
Trace.endSection();
return result;
}
/**
@@ -135,6 +139,7 @@ public class ImageFloatingTextView extends TextView {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Trace.beginSection("ImageFloatingTextView#onMeasure");
int availableHeight = MeasureSpec.getSize(heightMeasureSpec) - mPaddingTop - mPaddingBottom;
if (getLayout() != null && getLayout().getHeight() != availableHeight) {
// We've been measured before and the new size is different than before, lets make sure
@@ -161,6 +166,7 @@ public class ImageFloatingTextView extends TextView {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
Trace.endSection();
}
@Override