From ceeb5068e5955d2c8caa95aa3dbf4c95d2755ffa Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Mon, 17 Sep 2018 18:13:52 +0800 Subject: Clean up out of date logic for starting activity - ASS#handleNonResizableTaskIfNeeded(), no longer necessary to find proper stack for the task on default display since exception would be thrown if the task cannot be launched on target display. - ActivityStarter#computeStackFocus(), no more dynamic or static stacks. Bug: 111363427 Test: atest ActivityManagerMultiDisplayTests Change-Id: Id6da1e1e448b8bc525820cbf407eadd8c86a12bf --- .../com/android/server/am/ActivityStackSupervisor.java | 6 ++---- .../core/java/com/android/server/am/ActivityStarter.java | 16 ++-------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 0477d73301f1..7208b2414008 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -53,6 +53,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.Display.TYPE_VIRTUAL; import static android.view.WindowManager.TRANSIT_DOCK_TASK_FROM_RECENTS; + import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_IDLE; @@ -99,6 +100,7 @@ import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_WHITELISTED; import static com.android.server.am.TaskRecord.REPARENT_KEEP_STACK_AT_FRONT; import static com.android.server.am.TaskRecord.REPARENT_LEAVE_STACK_IN_PLACE; import static com.android.server.am.TaskRecord.REPARENT_MOVE_STACK_TO_FRONT; + import static java.lang.Integer.MAX_VALUE; import android.Manifest; @@ -4456,10 +4458,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (!task.canBeLaunchedOnDisplay(actualDisplayId)) { throw new IllegalStateException("Task resolved to incompatible display"); } - // The task might have landed on a display different from requested. - // TODO(multi-display): Find proper stack for the task on the default display. - mService.setTaskWindowingMode(task.taskId, - WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY, true /* toTop */); if (preferredDisplayId != actualDisplayId) { Slog.w(TAG, "Failed to put " + task + " on display " + preferredDisplayId); // Display a warning toast that we failed to put a task on a secondary display. diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 2bd22e8601d6..13b16b2fb84c 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -1477,7 +1477,7 @@ class ActivityStarter { if (mStartActivity.resultTo == null && mInTask == null && !mAddingToTask && (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) != 0) { newTask = true; - result = setTaskFromReuseOrCreateNewTask(taskToAffiliate, topStack); + result = setTaskFromReuseOrCreateNewTask(taskToAffiliate); } else if (mSourceRecord != null) { result = setTaskFromSourceRecord(); } else if (mInTask != null) { @@ -2125,8 +2125,7 @@ class ActivityStarter { mSupervisor.updateUserStackLocked(mStartActivity.userId, mTargetStack); } - private int setTaskFromReuseOrCreateNewTask( - TaskRecord taskToAffiliate, ActivityStack topStack) { + private int setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) { mTargetStack = computeStackFocus(mStartActivity, true, mLaunchFlags, mOptions); // Do no move the target stack to front yet, as we might bail if @@ -2431,17 +2430,6 @@ class ActivityStarter { } } if (stack == null) { - // We first try to put the task in the first dynamic stack on home display. - final ActivityDisplay display = mSupervisor.getDefaultDisplay(); - for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) { - stack = display.getChildAt(stackNdx); - if (!stack.isOnHomeDisplay()) { - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, - "computeStackFocus: Setting focused stack=" + stack); - return stack; - } - } - // If there is no suitable dynamic stack then we figure out which static stack to use. stack = mSupervisor.getLaunchStack(r, aOptions, task, ON_TOP); } if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: New stack r=" -- cgit v1.2.3-59-g8ed1b