From 85af0bab69368ac25d766d88763fb5be18e83574 Mon Sep 17 00:00:00 2001 From: Marcin Oczeretko Date: Thu, 19 Nov 2020 13:36:12 +0000 Subject: [PATCH] Add sf_missed_frames field to UiInteractionFrameInfo atom For now the field is always set to 0 since we do not get this data from sf yet Test: UTs for affected classes Bug: 171049584 Change-Id: I128afe514393e78636c01469075d415068326ef8 --- core/java/com/android/internal/jank/FrameTracker.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java index 571ac1bbeac65..36514ff07753b 100644 --- a/core/java/com/android/internal/jank/FrameTracker.java +++ b/core/java/com/android/internal/jank/FrameTracker.java @@ -51,6 +51,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai private boolean mCancelled = false; private int mTotalFramesCount = 0; private int mMissedFramesCount = 0; + private int mSfMissedFramesCount = 0; private long mMaxFrameTimeNanos = 0; private Session mSession; @@ -132,6 +133,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai mRendererWrapper.removeObserver(mObserver); // Log the frame stats as counters to make them easily accessible in traces. + Trace.traceCounter(Trace.TRACE_TAG_APP, mSession.getName() + "#sfMissedFrames", + mSfMissedFramesCount); Trace.traceCounter(Trace.TRACE_TAG_APP, mSession.getName() + "#missedFrames", mMissedFramesCount); Trace.traceCounter(Trace.TRACE_TAG_APP, mSession.getName() + "#totalFrames", @@ -141,7 +144,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai // Trigger perfetto if necessary. boolean overMissedFramesThreshold = mTraceThresholdMissedFrames != -1 - && mMissedFramesCount >= mTraceThresholdMissedFrames; + && (mMissedFramesCount + mSfMissedFramesCount) >= mTraceThresholdMissedFrames; boolean overFrameTimeThreshold = mTraceThresholdFrameTimeMillis != -1 && mMaxFrameTimeNanos >= mTraceThresholdFrameTimeMillis * NANOS_IN_MILLISECOND; if (overMissedFramesThreshold || overFrameTimeThreshold) { @@ -153,7 +156,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai mSession.getStatsdInteractionType(), mTotalFramesCount, mMissedFramesCount, - mMaxFrameTimeNanos); + mMaxFrameTimeNanos, + mSfMissedFramesCount); } return; } @@ -168,6 +172,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai mMaxFrameTimeNanos = Math.max(totalDurationNanos, mMaxFrameTimeNanos); } + // TODO(b/171049584): Also update mSfMissedFramesCount once the data is available. if (isJankyFrame) { mMissedFramesCount += 1; }