Merge "Do not abort launch logger by invisible drawn activity"
This commit is contained in:
committed by
Android (Google) Code Review
commit
bb8cea62a8
@@ -288,7 +288,7 @@ class ActivityMetricsLogger {
|
||||
return;
|
||||
}
|
||||
mLastLaunchedActivity = r;
|
||||
if (!r.noDisplay) {
|
||||
if (!r.noDisplay && !r.isReportedDrawn()) {
|
||||
if (DEBUG_METRICS) Slog.i(TAG, "Add pending draw " + r);
|
||||
mPendingDrawActivities.add(r);
|
||||
}
|
||||
@@ -576,7 +576,7 @@ class ActivityMetricsLogger {
|
||||
+ " processSwitch=" + processSwitch + " info=" + info);
|
||||
}
|
||||
|
||||
if (launchedActivity.isReportedDrawn()) {
|
||||
if (launchedActivity.isReportedDrawn() && launchedActivity.isVisible()) {
|
||||
// Launched activity is already visible. We cannot measure windows drawn delay.
|
||||
abort(info, "launched activity already visible");
|
||||
return;
|
||||
|
||||
@@ -350,6 +350,22 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
|
||||
verifyNoMoreInteractions(mLaunchObserver);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testActivityDrawnBeforeTransition() {
|
||||
mTopActivity.setVisible(false);
|
||||
notifyActivityLaunching(mTopActivity.intent);
|
||||
// Assume the activity is launched the second time consecutively. The drawn event is from
|
||||
// the first time (omitted in test) launch that is earlier than transition.
|
||||
doReturn(true).when(mTopActivity).isReportedDrawn();
|
||||
notifyWindowsDrawn(mTopActivity);
|
||||
notifyActivityLaunched(START_SUCCESS, mTopActivity);
|
||||
// If the launching activity was drawn when starting transition, the launch event should
|
||||
// be reported successfully.
|
||||
notifyTransitionStarting(mTopActivity);
|
||||
|
||||
verifyOnActivityLaunchFinished(mTopActivity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testActivityRecordProtoIsNotTooBig() {
|
||||
// The ActivityRecordProto must not be too big, otherwise converting it at runtime
|
||||
|
||||
Reference in New Issue
Block a user