Loading services/core/java/com/android/server/wm/ActivityStarter.java +13 −10 Original line number Diff line number Diff line Loading @@ -724,13 +724,15 @@ class ActivityStarter { // used here because it may be cleared in setTargetRootTaskIfNeeded. final ActivityOptions originalOptions = mRequest.activityOptions != null ? mRequest.activityOptions.getOriginalOptions() : null; // Only track the launch time of activity that will be resumed. final ActivityRecord launchingRecord = mDoResume ? mLastStartActivityRecord : null; // If the new record is the one that started, a new activity has created. final boolean newActivityCreated = mStartActivity == mLastStartActivityRecord; final boolean newActivityCreated = mStartActivity == launchingRecord; // Notify ActivityMetricsLogger that the activity has launched. // ActivityMetricsLogger will then wait for the windows to be drawn and populate // WaitResult. mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, res, newActivityCreated, mLastStartActivityRecord, originalOptions); newActivityCreated, launchingRecord, originalOptions); if (mRequest.waitResult != null) { mRequest.waitResult.result = res; res = waitResultIfNeeded(mRequest.waitResult, mLastStartActivityRecord, Loading Loading @@ -1214,7 +1216,7 @@ class ActivityStarter { } mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, true /* doResume */, checkedOptions, request.voiceInteractor, startFlags, checkedOptions, inTask, inTaskFragment, restrictedBgActivity, intentGrants); if (request.outActivity != null) { Loading Loading @@ -1640,7 +1642,7 @@ class ActivityStarter { */ private int startActivityUnchecked(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, ActivityOptions options, Task inTask, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, NeededUriGrants intentGrants) { int result = START_CANCELED; Loading @@ -1664,7 +1666,7 @@ class ActivityStarter { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "startActivityInner"); result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor, startFlags, doResume, options, inTask, inTaskFragment, restrictedBgActivity, startFlags, options, inTask, inTaskFragment, restrictedBgActivity, intentGrants); } finally { Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); Loading Loading @@ -1808,10 +1810,10 @@ class ActivityStarter { @VisibleForTesting int startActivityInner(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, ActivityOptions options, Task inTask, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, NeededUriGrants intentGrants) { setInitialState(r, options, inTask, inTaskFragment, doResume, startFlags, sourceRecord, setInitialState(r, options, inTask, inTaskFragment, startFlags, sourceRecord, voiceSession, voiceInteractor, restrictedBgActivity); computeLaunchingTaskFlags(); Loading Loading @@ -2429,7 +2431,7 @@ class ActivityStarter { } private void setInitialState(ActivityRecord r, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean doResume, int startFlags, TaskFragment inTaskFragment, int startFlags, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, boolean restrictedBgActivity) { reset(false /* clearRequest */); Loading Loading @@ -2494,10 +2496,11 @@ class ActivityStarter { // If the caller has asked not to resume at this point, we make note // of this in the record so that we can skip it when trying to find // the top running activity. mDoResume = doResume; if (!doResume || !r.showToCurrentUser() || mLaunchTaskBehind) { if (!r.showToCurrentUser() || mLaunchTaskBehind) { r.delayedResume = true; mDoResume = false; } else { mDoResume = true; } if (mOptions != null) { Loading services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -1406,7 +1406,7 @@ public class ActivityStarterTests extends WindowTestsBase { ActivityRecord source, ActivityOptions options, Task inTask, TaskFragment inTaskFragment) { starter.startActivityInner(target, source, null /* voiceSession */, null /* voiceInteractor */, 0 /* startFlags */, true /* doResume */, null /* voiceInteractor */, 0 /* startFlags */, options, inTask, inTaskFragment, false /* restrictedBgActivity */, null /* intentGrants */); } Loading services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java +0 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ public class DisplayWindowPolicyControllerTests extends WindowTestsBase { /* voiceSession */null, /* voiceInteractor */ null, /* startFlags */ 0, /* doResume */true, /* options */null, /* inTask */null, /* inTaskFragment */ null, Loading Loading
services/core/java/com/android/server/wm/ActivityStarter.java +13 −10 Original line number Diff line number Diff line Loading @@ -724,13 +724,15 @@ class ActivityStarter { // used here because it may be cleared in setTargetRootTaskIfNeeded. final ActivityOptions originalOptions = mRequest.activityOptions != null ? mRequest.activityOptions.getOriginalOptions() : null; // Only track the launch time of activity that will be resumed. final ActivityRecord launchingRecord = mDoResume ? mLastStartActivityRecord : null; // If the new record is the one that started, a new activity has created. final boolean newActivityCreated = mStartActivity == mLastStartActivityRecord; final boolean newActivityCreated = mStartActivity == launchingRecord; // Notify ActivityMetricsLogger that the activity has launched. // ActivityMetricsLogger will then wait for the windows to be drawn and populate // WaitResult. mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, res, newActivityCreated, mLastStartActivityRecord, originalOptions); newActivityCreated, launchingRecord, originalOptions); if (mRequest.waitResult != null) { mRequest.waitResult.result = res; res = waitResultIfNeeded(mRequest.waitResult, mLastStartActivityRecord, Loading Loading @@ -1214,7 +1216,7 @@ class ActivityStarter { } mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, true /* doResume */, checkedOptions, request.voiceInteractor, startFlags, checkedOptions, inTask, inTaskFragment, restrictedBgActivity, intentGrants); if (request.outActivity != null) { Loading Loading @@ -1640,7 +1642,7 @@ class ActivityStarter { */ private int startActivityUnchecked(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, ActivityOptions options, Task inTask, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, NeededUriGrants intentGrants) { int result = START_CANCELED; Loading @@ -1664,7 +1666,7 @@ class ActivityStarter { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "startActivityInner"); result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor, startFlags, doResume, options, inTask, inTaskFragment, restrictedBgActivity, startFlags, options, inTask, inTaskFragment, restrictedBgActivity, intentGrants); } finally { Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); Loading Loading @@ -1808,10 +1810,10 @@ class ActivityStarter { @VisibleForTesting int startActivityInner(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, ActivityOptions options, Task inTask, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, NeededUriGrants intentGrants) { setInitialState(r, options, inTask, inTaskFragment, doResume, startFlags, sourceRecord, setInitialState(r, options, inTask, inTaskFragment, startFlags, sourceRecord, voiceSession, voiceInteractor, restrictedBgActivity); computeLaunchingTaskFlags(); Loading Loading @@ -2429,7 +2431,7 @@ class ActivityStarter { } private void setInitialState(ActivityRecord r, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean doResume, int startFlags, TaskFragment inTaskFragment, int startFlags, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, boolean restrictedBgActivity) { reset(false /* clearRequest */); Loading Loading @@ -2494,10 +2496,11 @@ class ActivityStarter { // If the caller has asked not to resume at this point, we make note // of this in the record so that we can skip it when trying to find // the top running activity. mDoResume = doResume; if (!doResume || !r.showToCurrentUser() || mLaunchTaskBehind) { if (!r.showToCurrentUser() || mLaunchTaskBehind) { r.delayedResume = true; mDoResume = false; } else { mDoResume = true; } if (mOptions != null) { Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -1406,7 +1406,7 @@ public class ActivityStarterTests extends WindowTestsBase { ActivityRecord source, ActivityOptions options, Task inTask, TaskFragment inTaskFragment) { starter.startActivityInner(target, source, null /* voiceSession */, null /* voiceInteractor */, 0 /* startFlags */, true /* doResume */, null /* voiceInteractor */, 0 /* startFlags */, options, inTask, inTaskFragment, false /* restrictedBgActivity */, null /* intentGrants */); } Loading
services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java +0 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ public class DisplayWindowPolicyControllerTests extends WindowTestsBase { /* voiceSession */null, /* voiceInteractor */ null, /* startFlags */ 0, /* doResume */true, /* options */null, /* inTask */null, /* inTaskFragment */ null, Loading