diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityMetricsLogger.java | 20 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java | 12 |
2 files changed, 14 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index f50ce1ab8e8d..9d08b1be8d36 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -131,6 +131,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. @@ -231,19 +232,22 @@ class ActivityMetricsLogger { static TransitionInfo create(@NonNull ActivityRecord r, @NonNull LaunchingState launchingState, @Nullable ActivityOptions options, 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, options, transitionType, processRunning, processSwitch); } diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java index f1d3e1840588..9be31647cf73 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java @@ -35,7 +35,6 @@ import static org.mockito.Mockito.timeout; import android.app.ActivityOptions; import android.app.ActivityOptions.SourceInfo; -import android.app.WaitResult; import android.content.Intent; import android.os.SystemClock; import android.platform.test.annotations.Presubmit; @@ -168,15 +167,10 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { @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); @@ -210,7 +204,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { notifyActivityLaunching(noDrawnActivity.intent); notifyActivityLaunched(START_SUCCESS, noDrawnActivity); - noDrawnActivity.mVisibleRequested = false; + noDrawnActivity.destroyIfPossible("test"); mActivityMetricsLogger.notifyVisibilityChanged(noDrawnActivity); verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(noDrawnActivity)); @@ -231,8 +225,6 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { assertWithMessage("Record start source").that(info.sourceType) .isEqualTo(SourceInfo.TYPE_LAUNCHER); 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()); verifyOnActivityLaunchFinished(mTopActivity); |