Merge \"Don\'t update mTaskToReturnTo when task is cleared\" into nyc-dev
am: 1a77efe9ba
Change-Id: Idb9aad2fb3161552b699f271bed940cb47fd98ad
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index b89cae7..793f411 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -167,8 +167,9 @@
private Intent mNewTaskIntent;
private ActivityStack mSourceStack;
private ActivityStack mTargetStack;
- // TODO: Is the mMoveHome flag really needed?
- private boolean mMovedHome;
+ // Indicates that we moved other task and are going to put something on top soon, so
+ // we don't want to show it redundantly or accidentally change what's shown below.
+ private boolean mMovedOtherTask;
private boolean mMovedToFront;
private boolean mNoAnimation;
private boolean mKeepCurTransition;
@@ -206,7 +207,7 @@
mSourceStack = null;
mTargetStack = null;
- mMovedHome = false;
+ mMovedOtherTask = false;
mMovedToFront = false;
mNoAnimation = false;
mKeepCurTransition = false;
@@ -1039,7 +1040,6 @@
resumeTargetStackIfNeeded();
return START_RETURN_INTENT_TO_CALLER;
}
-
setTaskFromIntentActivity(mReusedActivity);
if (!mAddingToTask && mReuseTask == null) {
@@ -1108,7 +1108,7 @@
Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
return START_RETURN_LOCK_TASK_MODE_VIOLATION;
}
- if (!mMovedHome) {
+ if (!mMovedOtherTask) {
updateTaskReturnToType(mStartActivity.task, mLaunchFlags, topStack);
}
} else if (mSourceRecord != null) {
@@ -1472,7 +1472,7 @@
if (mLaunchTaskBehind && mSourceRecord != null) {
intentActivity.setTaskToAffiliateWith(mSourceRecord.task);
}
- mMovedHome = true;
+ mMovedOtherTask = true;
// If the launch flags carry both NEW_TASK and CLEAR_TASK, the task's activities
// will be cleared soon by ActivityStarter in setTaskFromIntentActivity().
@@ -1550,6 +1550,10 @@
mReuseTask = intentActivity.task;
mReuseTask.performClearTaskLocked();
mReuseTask.setIntent(mStartActivity);
+ // When we clear the task - focus will be adjusted, which will bring another task
+ // to top before we launch the activity we need. This will temporary swap their
+ // mTaskToReturnTo values and we don't want to overwrite them accidentally.
+ mMovedOtherTask = true;
} else if ((mLaunchFlags & FLAG_ACTIVITY_CLEAR_TOP) != 0
|| mLaunchSingleInstance || mLaunchSingleTask) {
ActivityRecord top = intentActivity.task.performClearTaskLocked(mStartActivity,