Merge "Revert "Distinguish warm/hot launch by whether the activity has attached process"" into rvc-qpr-dev

This commit is contained in:
TreeHugger Robot
2020-10-27 02:03:19 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 21 deletions

View File

@@ -129,6 +129,7 @@ class ActivityMetricsLogger {
*/
private static final int IGNORE_CALLER = -1;
private static final int INVALID_DELAY = -1;
private static final int INVALID_TRANSITION_TYPE = -1;
// Preallocated strings we are sending to tron, so we don't have to allocate a new one every
// time we log.
@@ -223,19 +224,22 @@ class ActivityMetricsLogger {
static TransitionInfo create(@NonNull ActivityRecord r,
@NonNull LaunchingState launchingState, boolean processRunning,
boolean processSwitch, int startResult) {
if (startResult != START_SUCCESS && startResult != START_TASK_TO_FRONT) {
return null;
}
final int transitionType;
int transitionType = INVALID_TRANSITION_TYPE;
if (processRunning) {
transitionType = r.attachedToProcess()
? TYPE_TRANSITION_HOT_LAUNCH
: TYPE_TRANSITION_WARM_LAUNCH;
} else {
if (startResult == START_SUCCESS) {
transitionType = TYPE_TRANSITION_WARM_LAUNCH;
} else if (startResult == START_TASK_TO_FRONT) {
transitionType = TYPE_TRANSITION_HOT_LAUNCH;
}
} else if (startResult == START_SUCCESS || startResult == START_TASK_TO_FRONT) {
// Task may still exist when cold launching an activity and the start result will be
// set to START_TASK_TO_FRONT. Treat this as a COLD launch.
transitionType = TYPE_TRANSITION_COLD_LAUNCH;
}
if (transitionType == INVALID_TRANSITION_TYPE) {
// That means the startResult is neither START_SUCCESS nor START_TASK_TO_FRONT.
return null;
}
return new TransitionInfo(r, launchingState, transitionType, processRunning,
processSwitch);
}

View File

@@ -32,7 +32,6 @@ import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.timeout;
import android.app.WaitResult;
import android.content.Intent;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
@@ -164,15 +163,10 @@ public class ActivityMetricsLaunchObserverTests extends ActivityTestsBase {
@Test
public void testOnActivityLaunchFinished() {
// Assume that the process is started (ActivityBuilder has mocked the returned value of
// ATMS#getProcessController) but the activity has not attached process.
mTopActivity.app = null;
onActivityLaunched(mTopActivity);
notifyTransitionStarting(mTopActivity);
final ActivityMetricsLogger.TransitionInfoSnapshot info = notifyWindowsDrawn(mTopActivity);
assertWithMessage("Warm launch").that(info.getLaunchState())
.isEqualTo(WaitResult.LAUNCH_STATE_WARM);
notifyWindowsDrawn(mTopActivity);
verifyOnActivityLaunchFinished(mTopActivity);
verifyNoMoreInteractions(mLaunchObserver);
@@ -207,7 +201,7 @@ public class ActivityMetricsLaunchObserverTests extends ActivityTestsBase {
notifyActivityLaunching(noDrawnActivity.intent);
notifyActivityLaunched(START_SUCCESS, noDrawnActivity);
noDrawnActivity.mVisibleRequested = false;
noDrawnActivity.destroyIfPossible("test");
mActivityMetricsLogger.notifyVisibilityChanged(noDrawnActivity);
verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(noDrawnActivity));
@@ -223,9 +217,6 @@ public class ActivityMetricsLaunchObserverTests extends ActivityTestsBase {
notifyTransitionStarting(mTopActivity);
// The pending fully drawn event should send when the actual windows drawn event occurs.
notifyWindowsDrawn(mTopActivity);
final ActivityMetricsLogger.TransitionInfoSnapshot info = notifyWindowsDrawn(mTopActivity);
assertWithMessage("Hot launch").that(info.getLaunchState())
.isEqualTo(WaitResult.LAUNCH_STATE_HOT);
verifyAsync(mLaunchObserver).onReportFullyDrawn(eqProto(mTopActivity), anyLong());
verifyOnActivityLaunchFinished(mTopActivity);
@@ -269,8 +260,8 @@ public class ActivityMetricsLaunchObserverTests extends ActivityTestsBase {
mActivityMetricsLogger.notifyTransitionStarting(reasons);
}
private ActivityMetricsLogger.TransitionInfoSnapshot notifyWindowsDrawn(ActivityRecord r) {
return mActivityMetricsLogger.notifyWindowsDrawn(r, SystemClock.elapsedRealtimeNanos());
private void notifyWindowsDrawn(ActivityRecord r) {
mActivityMetricsLogger.notifyWindowsDrawn(r, SystemClock.elapsedRealtimeNanos());
}
@Test