summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-12-13 02:52:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-12-13 02:52:45 +0000
commit715ec8b312ad224bac02f35ab8cf8a6ca172bd03 (patch)
tree70f7b73d6721802faf1f7d86ec4ac3872604b42a
parentfc4b33ec8dcd8b477c5d70ff788bb86a6c8a724b (diff)
parent1823479a4da3943583195cbd1cbcffe7bc80b826 (diff)
Merge "Do not append NEW_TASK flag when caller activity is finishing" into tm-qpr-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java46
1 files changed, 2 insertions, 44 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 4fa7095b3282..c6e0cd2846dc 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -209,8 +209,6 @@ class ActivityStarter {
@VisibleForTesting
ActivityRecord mMovedToTopActivity;
- private ActivityInfo mNewTaskInfo;
- private Intent mNewTaskIntent;
private Task mSourceRootTask;
private Task mTargetRootTask;
// The task that the last activity was started into. We currently reset the actual start
@@ -621,8 +619,6 @@ class ActivityStarter {
mInTaskFragment = starter.mInTaskFragment;
mAddingToTask = starter.mAddingToTask;
- mNewTaskInfo = starter.mNewTaskInfo;
- mNewTaskIntent = starter.mNewTaskIntent;
mSourceRootTask = starter.mSourceRootTask;
mTargetTask = starter.mTargetTask;
@@ -1826,9 +1822,6 @@ class ActivityStarter {
voiceSession, voiceInteractor, restrictedBgActivity);
computeLaunchingTaskFlags();
-
- computeSourceRootTask();
-
mIntent.setFlags(mLaunchFlags);
boolean dreamStopping = false;
@@ -2479,8 +2472,6 @@ class ActivityStarter {
mAddingToTaskFragment = null;
mAddingToTask = false;
- mNewTaskInfo = null;
- mNewTaskIntent = null;
mSourceRootTask = null;
mTargetRootTask = null;
@@ -2514,6 +2505,7 @@ class ActivityStarter {
mOptions = options;
mCallingUid = r.launchedFromUid;
mSourceRecord = sourceRecord;
+ mSourceRootTask = mSourceRecord != null ? mSourceRecord.getRootTask() : null;
mVoiceSession = voiceSession;
mVoiceInteractor = voiceInteractor;
mRestrictedBgActivity = restrictedBgActivity;
@@ -2761,39 +2753,6 @@ class ActivityStarter {
}
}
- private void computeSourceRootTask() {
- if (mSourceRecord == null) {
- mSourceRootTask = null;
- return;
- }
- if (!mSourceRecord.finishing) {
- mSourceRootTask = mSourceRecord.getRootTask();
- return;
- }
-
- // If the source is finishing, we can't further count it as our source. This is because the
- // task it is associated with may now be empty and on its way out, so we don't want to
- // blindly throw it in to that task. Instead we will take the NEW_TASK flow and try to find
- // a task for it. But save the task information so it can be used when creating the new task.
- if ((mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) == 0) {
- Slog.w(TAG, "startActivity called from finishing " + mSourceRecord
- + "; forcing " + "Intent.FLAG_ACTIVITY_NEW_TASK for: " + mIntent);
- mLaunchFlags |= FLAG_ACTIVITY_NEW_TASK;
-
- // It is not guaranteed that the source record will have a task associated with it.
- // For example, if this method is being called for processing a pending activity
- // launch, it is possible that the activity has been removed from the task after the
- // launch was enqueued.
- final Task sourceTask = mSourceRecord.getTask();
- if (sourceTask == null || sourceTask.getTopNonFinishingActivity() == null) {
- mNewTaskInfo = mSourceRecord.info;
- mNewTaskIntent = sourceTask != null ? sourceTask.intent : null;
- }
- }
- mSourceRecord = null;
- mSourceRootTask = null;
- }
-
/**
* Decide whether the new activity should be inserted into an existing task. Returns null
* if not or an ActivityRecord with the task into which the new activity should be added.
@@ -2991,8 +2950,7 @@ class ActivityStarter {
private void setNewTask(Task taskToAffiliate) {
final boolean toTop = !mLaunchTaskBehind && !mAvoidMoveToFront;
final Task task = mTargetRootTask.reuseOrCreateTask(
- mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
- mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession,
+ mStartActivity.info, mIntent, mVoiceSession,
mVoiceInteractor, toTop, mStartActivity, mSourceRecord, mOptions);
task.mTransitionController.collectExistenceChange(task);
addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask");