Revert "Distinguish warm/hot launch by whether the activity has attached process"

This reverts commit 2e039cd3bc.

Reason for revert: Potential culprit for Bug b/171719665

Change-Id: I18e2f1a5eaf1e07b96d6135be56f8077d37b7504
This commit is contained in:
Shubang Lu
2020-10-26 21:51:41 +00:00
parent 2e039cd3bc
commit d92b3605bc
2 changed files with 14 additions and 18 deletions

View File

@@ -131,6 +131,7 @@ class ActivityMetricsLogger {
*/ */
private static final int IGNORE_CALLER = -1; private static final int IGNORE_CALLER = -1;
private static final int INVALID_DELAY = -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 // Preallocated strings we are sending to tron, so we don't have to allocate a new one every
// time we log. // time we log.
@@ -231,19 +232,22 @@ class ActivityMetricsLogger {
static TransitionInfo create(@NonNull ActivityRecord r, static TransitionInfo create(@NonNull ActivityRecord r,
@NonNull LaunchingState launchingState, @Nullable ActivityOptions options, @NonNull LaunchingState launchingState, @Nullable ActivityOptions options,
boolean processRunning, boolean processSwitch, int startResult) { boolean processRunning, boolean processSwitch, int startResult) {
if (startResult != START_SUCCESS && startResult != START_TASK_TO_FRONT) { int transitionType = INVALID_TRANSITION_TYPE;
return null;
}
final int transitionType;
if (processRunning) { if (processRunning) {
transitionType = r.attachedToProcess() if (startResult == START_SUCCESS) {
? TYPE_TRANSITION_HOT_LAUNCH transitionType = TYPE_TRANSITION_WARM_LAUNCH;
: TYPE_TRANSITION_WARM_LAUNCH; } else if (startResult == START_TASK_TO_FRONT) {
} else { 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 // 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. // set to START_TASK_TO_FRONT. Treat this as a COLD launch.
transitionType = TYPE_TRANSITION_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, options, transitionType, processRunning, return new TransitionInfo(r, launchingState, options, transitionType, processRunning,
processSwitch); processSwitch);
} }

View File

@@ -35,7 +35,6 @@ import static org.mockito.Mockito.timeout;
import android.app.ActivityOptions; import android.app.ActivityOptions;
import android.app.ActivityOptions.SourceInfo; import android.app.ActivityOptions.SourceInfo;
import android.app.WaitResult;
import android.content.Intent; import android.content.Intent;
import android.os.SystemClock; import android.os.SystemClock;
import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit;
@@ -168,15 +167,10 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
@Test @Test
public void testOnActivityLaunchFinished() { 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); onActivityLaunched(mTopActivity);
notifyTransitionStarting(mTopActivity); notifyTransitionStarting(mTopActivity);
final ActivityMetricsLogger.TransitionInfoSnapshot info = notifyWindowsDrawn(mTopActivity); notifyWindowsDrawn(mTopActivity);
assertWithMessage("Warm launch").that(info.getLaunchState())
.isEqualTo(WaitResult.LAUNCH_STATE_WARM);
verifyOnActivityLaunchFinished(mTopActivity); verifyOnActivityLaunchFinished(mTopActivity);
verifyNoMoreInteractions(mLaunchObserver); verifyNoMoreInteractions(mLaunchObserver);
@@ -210,7 +204,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
notifyActivityLaunching(noDrawnActivity.intent); notifyActivityLaunching(noDrawnActivity.intent);
notifyActivityLaunched(START_SUCCESS, noDrawnActivity); notifyActivityLaunched(START_SUCCESS, noDrawnActivity);
noDrawnActivity.mVisibleRequested = false; noDrawnActivity.destroyIfPossible("test");
mActivityMetricsLogger.notifyVisibilityChanged(noDrawnActivity); mActivityMetricsLogger.notifyVisibilityChanged(noDrawnActivity);
verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(noDrawnActivity)); verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(noDrawnActivity));
@@ -231,8 +225,6 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
assertWithMessage("Record start source").that(info.sourceType) assertWithMessage("Record start source").that(info.sourceType)
.isEqualTo(SourceInfo.TYPE_LAUNCHER); .isEqualTo(SourceInfo.TYPE_LAUNCHER);
assertWithMessage("Record event time").that(info.sourceEventDelayMs).isAtLeast(10); assertWithMessage("Record event time").that(info.sourceEventDelayMs).isAtLeast(10);
assertWithMessage("Hot launch").that(info.getLaunchState())
.isEqualTo(WaitResult.LAUNCH_STATE_HOT);
verifyAsync(mLaunchObserver).onReportFullyDrawn(eqProto(mTopActivity), anyLong()); verifyAsync(mLaunchObserver).onReportFullyDrawn(eqProto(mTopActivity), anyLong());
verifyOnActivityLaunchFinished(mTopActivity); verifyOnActivityLaunchFinished(mTopActivity);