Loading services/core/java/com/android/server/am/ActivityManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -9425,7 +9425,8 @@ public final class ActivityManagerService extends ActivityManagerNative if (prev != null && prev.isRecentsActivity()) { task.setTaskToReturnTo(ActivityRecord.RECENTS_ACTIVITY_TYPE); } mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options, "moveTaskToFront"); mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options, "moveTaskToFront", false /* forceNonResizable */); } finally { Binder.restoreCallingIdentity(origId); } Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +19 −8 Original line number Diff line number Diff line Loading @@ -1759,8 +1759,8 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void findTaskToMoveToFrontLocked( TaskRecord task, int flags, ActivityOptions options, String reason) { void findTaskToMoveToFrontLocked(TaskRecord task, int flags, ActivityOptions options, String reason, boolean forceNonResizeable) { if ((flags & ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) { mUserLeaving = true; } Loading Loading @@ -1811,7 +1811,8 @@ public final class ActivityStackSupervisor implements DisplayListener { if (DEBUG_STACK) Slog.d(TAG_STACK, "findTaskToMoveToFront: moved to front of stack=" + task.stack); handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId); handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId, forceNonResizeable); } boolean canUseActivityOptionsLaunchBounds(ActivityOptions options, int launchStackId) { Loading Loading @@ -3360,19 +3361,25 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId, int actualStackId) { handleNonResizableTaskIfNeeded(task, preferredStackId, actualStackId, false /* forceNonResizable */); } void handleNonResizableTaskIfNeeded( TaskRecord task, int preferredStackId, int actualStackId) { TaskRecord task, int preferredStackId, int actualStackId, boolean forceNonResizable) { if ((!isStackDockedInEffect(actualStackId) && preferredStackId != DOCKED_STACK_ID) || task.isHomeTask()) { return; } if (!task.canGoInDockedStack()) { if (!task.canGoInDockedStack() || forceNonResizable) { // Display a warning toast that we tried to put a non-dockable task in the docked stack. mService.mHandler.sendEmptyMessage(NOTIFY_ACTIVITY_DISMISSING_DOCKED_STACK_MSG); // Dismiss docked stack. mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, false); // Dismiss docked stack. If task appeared to be in docked stack but is not resizable - // we need to move it to top of fullscreen stack, otherwise it will be covered. mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID); } else if (task.mResizeMode == RESIZE_MODE_FORCE_RESIZEABLE) { String packageName = task.getTopActivity() != null ? task.getTopActivity().appInfo.packageName : null; Loading Loading @@ -3443,8 +3450,12 @@ public final class ActivityStackSupervisor implements DisplayListener { } if (andResume) { findTaskToMoveToFrontLocked(task, 0, null, reason); findTaskToMoveToFrontLocked(task, 0, null, reason, lockTaskModeState != LOCK_TASK_MODE_NONE); resumeFocusedStackTopActivityLocked(); } else if (lockTaskModeState != LOCK_TASK_MODE_NONE) { handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId, true /* forceNonResizable */); } } Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -9425,7 +9425,8 @@ public final class ActivityManagerService extends ActivityManagerNative if (prev != null && prev.isRecentsActivity()) { task.setTaskToReturnTo(ActivityRecord.RECENTS_ACTIVITY_TYPE); } mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options, "moveTaskToFront"); mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options, "moveTaskToFront", false /* forceNonResizable */); } finally { Binder.restoreCallingIdentity(origId); } Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +19 −8 Original line number Diff line number Diff line Loading @@ -1759,8 +1759,8 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void findTaskToMoveToFrontLocked( TaskRecord task, int flags, ActivityOptions options, String reason) { void findTaskToMoveToFrontLocked(TaskRecord task, int flags, ActivityOptions options, String reason, boolean forceNonResizeable) { if ((flags & ActivityManager.MOVE_TASK_NO_USER_ACTION) == 0) { mUserLeaving = true; } Loading Loading @@ -1811,7 +1811,8 @@ public final class ActivityStackSupervisor implements DisplayListener { if (DEBUG_STACK) Slog.d(TAG_STACK, "findTaskToMoveToFront: moved to front of stack=" + task.stack); handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId); handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId, forceNonResizeable); } boolean canUseActivityOptionsLaunchBounds(ActivityOptions options, int launchStackId) { Loading Loading @@ -3360,19 +3361,25 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId, int actualStackId) { handleNonResizableTaskIfNeeded(task, preferredStackId, actualStackId, false /* forceNonResizable */); } void handleNonResizableTaskIfNeeded( TaskRecord task, int preferredStackId, int actualStackId) { TaskRecord task, int preferredStackId, int actualStackId, boolean forceNonResizable) { if ((!isStackDockedInEffect(actualStackId) && preferredStackId != DOCKED_STACK_ID) || task.isHomeTask()) { return; } if (!task.canGoInDockedStack()) { if (!task.canGoInDockedStack() || forceNonResizable) { // Display a warning toast that we tried to put a non-dockable task in the docked stack. mService.mHandler.sendEmptyMessage(NOTIFY_ACTIVITY_DISMISSING_DOCKED_STACK_MSG); // Dismiss docked stack. mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, false); // Dismiss docked stack. If task appeared to be in docked stack but is not resizable - // we need to move it to top of fullscreen stack, otherwise it will be covered. mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID); } else if (task.mResizeMode == RESIZE_MODE_FORCE_RESIZEABLE) { String packageName = task.getTopActivity() != null ? task.getTopActivity().appInfo.packageName : null; Loading Loading @@ -3443,8 +3450,12 @@ public final class ActivityStackSupervisor implements DisplayListener { } if (andResume) { findTaskToMoveToFrontLocked(task, 0, null, reason); findTaskToMoveToFrontLocked(task, 0, null, reason, lockTaskModeState != LOCK_TASK_MODE_NONE); resumeFocusedStackTopActivityLocked(); } else if (lockTaskModeState != LOCK_TASK_MODE_NONE) { handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, task.stack.mStackId, true /* forceNonResizable */); } } Loading