Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afc6d332 authored by Craig Mautner's avatar Craig Mautner Committed by Android Git Automerger
Browse files

am 8995e140: Merge "Add reason string for bringing stack to front" into lmp-mr1-dev

* commit '8995e140':
  Add reason string for bringing stack to front
parents ba70d548 8995e140
Loading
Loading
Loading
Loading
+20 −19
Original line number Diff line number Diff line
@@ -2358,7 +2358,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        return mAppBindArgs;
    }
    final void setFocusedActivityLocked(ActivityRecord r) {
    final void setFocusedActivityLocked(ActivityRecord r, String reason) {
        if (mFocusedActivity != r) {
            if (DEBUG_FOCUS) Slog.d(TAG, "setFocusedActivityLocked: r=" + r);
            mFocusedActivity = r;
@@ -2367,7 +2367,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            } else {
                finishRunningVoiceLocked();
            }
            mStackSupervisor.setFocusedStack(r);
            mStackSupervisor.setFocusedStack(r, reason + " setFocusedActivity");
            if (r != null) {
                mWindowManager.setFocusedApp(r.appToken, true);
            }
@@ -2391,7 +2391,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            if (stack != null) {
                ActivityRecord r = stack.topRunningActivityLocked(null);
                if (r != null) {
                    setFocusedActivityLocked(r);
                    setFocusedActivityLocked(r, "setFocusedStack");
                }
            }
        }
@@ -2435,7 +2435,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        mHandler.sendMessage(msg);
    }
    private final int updateLruProcessInternalLocked(ProcessRecord app, long now, int index,
    private int updateLruProcessInternalLocked(ProcessRecord app, long now, int index,
            String what, Object obj, ProcessRecord srcApp) {
        app.lastActivityTime = now;
@@ -3109,7 +3109,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        return intent;
    }
    boolean startHomeActivityLocked(int userId) {
    boolean startHomeActivityLocked(int userId, String reason) {
        if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL
                && mTopAction == null) {
            // We are running in factory test mode, but unable to find
@@ -3131,7 +3131,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                    aInfo.applicationInfo.uid, true);
            if (app == null || app.instrumentationClass == null) {
                intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                mStackSupervisor.startHomeActivity(intent, aInfo);
                mStackSupervisor.startHomeActivity(intent, aInfo, reason);
            }
        }
@@ -6343,7 +6343,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        synchronized (this) {
            ActivityStack stack = ActivityRecord.getStackLocked(token);
            if (stack != null) {
                stack.activityDestroyedLocked(token);
                stack.activityDestroyedLocked(token, "activityDestroyed");
            }
        }
    }
@@ -8536,7 +8536,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            if (prev != null && prev.isRecentsActivity()) {
                task.setTaskToReturnTo(ActivityRecord.RECENTS_ACTIVITY_TYPE);
            }
            mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options);
            mStackSupervisor.findTaskToMoveToFrontLocked(task, flags, options, "moveTaskToFront");
        } finally {
            Binder.restoreCallingIdentity(origId);
        }
@@ -8565,7 +8565,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                }
                final long origId = Binder.clearCallingIdentity();
                try {
                    stack.moveTaskToBackLocked(taskId, null);
                    stack.moveTaskToBackLocked(taskId);
                } finally {
                    Binder.restoreCallingIdentity(origId);
                }
@@ -8595,7 +8595,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                        mStackSupervisor.showLockTaskToast();
                        return false;
                    }
                    return ActivityRecord.getStackLocked(token).moveTaskToBackLocked(taskId, null);
                    return ActivityRecord.getStackLocked(token).moveTaskToBackLocked(taskId);
                }
            } finally {
                Binder.restoreCallingIdentity(origId);
@@ -8687,7 +8687,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            try {
                if (DEBUG_STACK) Slog.d(TAG, "moveTaskToStack: moving task=" + taskId + " to stackId="
                        + stackId + " toTop=" + toTop);
                mStackSupervisor.moveTaskToStack(taskId, stackId, toTop);
                mStackSupervisor.moveTaskToStackLocked(taskId, stackId, toTop);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
@@ -8793,7 +8793,8 @@ public final class ActivityManagerService extends ActivityManagerNative
                                    || (task != mStackSupervisor.getFocusedStack().topTask()))) {
                        throw new IllegalArgumentException("Invalid task, not in foreground");
                    }
                    mStackSupervisor.setLockTaskModeLocked(task, !isSystemInitiated);
                    mStackSupervisor.setLockTaskModeLocked(task, !isSystemInitiated,
                            "startLockTask");
                }
            }
        } finally {
@@ -8878,7 +8879,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            Log.d(TAG, "stopLockTaskMode");
            // Stop lock task
            synchronized (this) {
                mStackSupervisor.setLockTaskModeLocked(null, false);
                mStackSupervisor.setLockTaskModeLocked(null, false, "stopLockTask");
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
@@ -11338,7 +11339,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            // Start up initial activity.
            mBooting = true;
            startHomeActivityLocked(mCurrentUserId);
            startHomeActivityLocked(mCurrentUserId, "systemReady");
            try {
                if (AppGlobals.getPackageManager().hasSystemUidErrors()) {
@@ -18885,7 +18886,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                    return true;
                }
                mStackSupervisor.setLockTaskModeLocked(null, false);
                mStackSupervisor.setLockTaskModeLocked(null, false, "startUser");
                final UserInfo userInfo = getUserManagerLocked().getUserInfo(userId);
                if (userInfo == null) {
@@ -19142,7 +19143,7 @@ public final class ActivityManagerService extends ActivityManagerNative
    void moveUserToForeground(UserStartedState uss, int oldUserId, int newUserId) {
        boolean homeInFront = mStackSupervisor.switchUserLocked(newUserId, uss);
        if (homeInFront) {
            startHomeActivityLocked(newUserId);
            startHomeActivityLocked(newUserId, "moveUserToFroreground");
        } else {
            mStackSupervisor.resumeTopActivitiesLocked();
        }
+1 −1
Original line number Diff line number Diff line
@@ -516,7 +516,7 @@ final class ActivityRecord {
    void setTask(TaskRecord newTask, TaskRecord taskToAffiliateWith) {
        if (task != null && task.removeActivity(this)) {
            if (task != newTask) {
                task.stack.removeTask(task);
                task.stack.removeTask(task, "setTask");
            } else {
                Slog.d(TAG, "!!! REMOVE THIS LOG !!! setTask: nearly removed stack=" +
                        (newTask == null ? null : newTask.stack));
+33 −43
Original line number Diff line number Diff line
@@ -291,7 +291,7 @@ final class ActivityStack {
                    // so we need to be conservative and assume it isn't.
                    Slog.w(TAG, "Activity destroy timeout for " + r);
                    synchronized (mService) {
                        activityDestroyedLocked(r != null ? r.appToken : null);
                        activityDestroyedLocked(r != null ? r.appToken : null, "destroyTimeout");
                    }
                } break;
                case STOP_TIMEOUT_MSG: {
@@ -473,10 +473,10 @@ final class ActivityStack {
                mActivityContainer.mActivityDisplay.mDisplayId == Display.DEFAULT_DISPLAY;
    }

    final void moveToFront() {
    final void moveToFront(String reason) {
        if (isAttached()) {
            if (isOnHomeDisplay()) {
                mStackSupervisor.moveHomeStack(isHomeStack());
                mStackSupervisor.moveHomeStack(isHomeStack(), reason);
            }
            mStacks.remove(this);
            mStacks.add(this);
@@ -1496,7 +1496,7 @@ final class ActivityStack {
            final int returnTaskType = prevTask == null || !prevTask.isOverHomeStack() ?
                    HOME_ACTIVITY_TYPE : prevTask.getTaskToReturnTo();
            return isOnHomeDisplay() &&
                    mStackSupervisor.resumeHomeStackTask(returnTaskType, prev);
                    mStackSupervisor.resumeHomeStackTask(returnTaskType, prev, "noMoreActivities");
        }

        next.delayedResume = false;
@@ -1532,7 +1532,7 @@ final class ActivityStack {
                        "resumeTopActivityLocked: Launching home next");
                final int returnTaskType = prevTask == null || !prevTask.isOverHomeStack() ?
                        HOME_ACTIVITY_TYPE : prevTask.getTaskToReturnTo();
                return mStackSupervisor.resumeHomeStackTask(returnTaskType, prev);
                return mStackSupervisor.resumeHomeStackTask(returnTaskType, prev, "prevFinished");
            }
        }

@@ -1817,11 +1817,8 @@ final class ActivityStack {
                    next.app.thread.scheduleNewIntent(next.newIntents, next.appToken);
                }

                EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY,
                        next.userId, System.identityHashCode(next),
                        next.task.taskId, next.shortComponentName + " top="
                                + mStacks.get(mStacks.size() - 1).mStackId + " Callers="
                                + Debug.getCallers(6));
                EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY, next.userId,
                        System.identityHashCode(next), next.task.taskId, next.shortComponentName);

                next.sleeping = false;
                mService.showAskCompatModeDialogLocked(next);
@@ -2468,18 +2465,19 @@ final class ActivityStack {
        r.addResultLocked(null, resultWho, requestCode, resultCode, data);
    }

    private void adjustFocusedActivityLocked(ActivityRecord r) {
    private void adjustFocusedActivityLocked(ActivityRecord r, String reason) {
        if (mStackSupervisor.isFrontStack(this) && mService.mFocusedActivity == r) {
            ActivityRecord next = topRunningActivityLocked(null);
            if (next != r) {
                final TaskRecord task = r.task;
                if (r.frontOfTask && task == topTask() && task.isOverHomeStack()) {
                    mStackSupervisor.moveHomeStackTaskToTop(task.getTaskToReturnTo());
                    mStackSupervisor.moveHomeStackTaskToTop(task.getTaskToReturnTo(),
                            reason + " adjustFocus");
                }
            }
            ActivityRecord top = mStackSupervisor.topRunningActivityLocked();
            if (top != null) {
                mService.setFocusedActivityLocked(top);
                mService.setFocusedActivityLocked(top, reason + " adjustTopFocus");
            }
        }
    }
@@ -2503,7 +2501,7 @@ final class ActivityStack {
        }

        if (r.app != null && r.app.thread != null) {
            adjustFocusedActivityLocked(r);
            adjustFocusedActivityLocked(r, "stopActivity");
            r.resumeKeyDispatchingLocked();
            try {
                r.stopped = false;
@@ -2707,7 +2705,7 @@ final class ActivityStack {

        r.pauseKeyDispatchingLocked();

        adjustFocusedActivityLocked(r);
        adjustFocusedActivityLocked(r, "finishActivity");

        finishActivityResultsLocked(r, resultCode, resultData);

@@ -3010,7 +3008,7 @@ final class ActivityStack {
        r.finishLaunchTickingLocked();
    }

    private void removeActivityFromHistoryLocked(ActivityRecord r) {
    private void removeActivityFromHistoryLocked(ActivityRecord r, String reason) {
        mStackSupervisor.removeChildActivityContainers(r);
        finishActivityResultsLocked(r, Activity.RESULT_CANCELED, null);
        r.makeFinishing();
@@ -3035,9 +3033,9 @@ final class ActivityStack {
                    "removeActivityFromHistoryLocked: last activity removed from " + this);
            if (mStackSupervisor.isFrontStack(this) && task == topTask() &&
                    task.isOverHomeStack()) {
                mStackSupervisor.moveHomeStackTaskToTop(task.getTaskToReturnTo());
                mStackSupervisor.moveHomeStackTaskToTop(task.getTaskToReturnTo(), reason);
            }
            removeTask(task);
            removeTask(task, reason);
        }
        cleanUpActivityServicesLocked(r);
        r.removeUriPermissionsLocked();
@@ -3202,7 +3200,7 @@ final class ActivityStack {
                // up.
                //Slog.w(TAG, "Exception thrown during finish", e);
                if (r.finishing) {
                    removeActivityFromHistoryLocked(r);
                    removeActivityFromHistoryLocked(r, reason + " exceptionInScheduleDestroy");
                    removedFromHistory = true;
                    skipDestroy = true;
                }
@@ -3232,7 +3230,7 @@ final class ActivityStack {
        } else {
            // remove this record from the history.
            if (r.finishing) {
                removeActivityFromHistoryLocked(r);
                removeActivityFromHistoryLocked(r, reason + " hadNoApp");
                removedFromHistory = true;
            } else {
                if (DEBUG_STATES) Slog.v(TAG, "Moving to DESTROYED: " + r + " (no app)");
@@ -3251,7 +3249,7 @@ final class ActivityStack {
        return removedFromHistory;
    }

    final void activityDestroyedLocked(IBinder token) {
    final void activityDestroyedLocked(IBinder token, String reason) {
        final long origId = Binder.clearCallingIdentity();
        try {
            ActivityRecord r = ActivityRecord.forToken(token);
@@ -3263,7 +3261,7 @@ final class ActivityStack {
            if (isInStackLocked(token) != null) {
                if (r.state == ActivityState.DESTROYING) {
                    cleanUpActivityLocked(r, true, false);
                    removeActivityFromHistoryLocked(r);
                    removeActivityFromHistoryLocked(r, reason);
                }
            }
            mStackSupervisor.resumeTopActivitiesLocked();
@@ -3399,7 +3397,7 @@ final class ActivityStack {
                                mService.updateUsageStats(r, false);
                            }
                        }
                        removeActivityFromHistoryLocked(r);
                        removeActivityFromHistoryLocked(r, "appDied");

                    } else {
                        // We have the current state for this activity, so
@@ -3468,15 +3466,16 @@ final class ActivityStack {
        }
    }

    final void moveTaskToFrontLocked(TaskRecord tr, ActivityRecord reason, Bundle options) {
    final void moveTaskToFrontLocked(TaskRecord tr, ActivityRecord source, Bundle options,
            String reason) {
        if (DEBUG_SWITCH) Slog.v(TAG, "moveTaskToFront: " + tr);

        final int numTasks = mTaskHistory.size();
        final int index = mTaskHistory.indexOf(tr);
        if (numTasks == 0 || index < 0)  {
            // nothing to do!
            if (reason != null &&
                    (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) {
            if (source != null &&
                    (source.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) {
                ActivityOptions.abort(options);
            } else {
                updateTransitLocked(AppTransition.TRANSIT_TASK_TO_FRONT, options);
@@ -3487,11 +3486,11 @@ final class ActivityStack {
        // Shift all activities with this task up to the top
        // of the stack, keeping them in the same internal order.
        insertTaskAtTop(tr);
        moveToFront();
        moveToFront(reason);

        if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to front transition: task=" + tr);
        if (reason != null &&
                (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) {
        if (source != null &&
                (source.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) {
            mWindowManager.prepareAppTransition(AppTransition.TRANSIT_NONE, false);
            ActivityRecord r = topRunningActivityLocked(null);
            if (r != null) {
@@ -3521,7 +3520,7 @@ final class ActivityStack {
     * @param taskId The taskId to collect and move to the bottom.
     * @return Returns true if the move completed, false if not.
     */
    final boolean moveTaskToBackLocked(int taskId, ActivityRecord reason) {
    final boolean moveTaskToBackLocked(int taskId) {
        final TaskRecord tr = taskForIdLocked(taskId);
        if (tr == null) {
            Slog.i(TAG, "moveTaskToBack: bad taskId=" + taskId);
@@ -3576,16 +3575,7 @@ final class ActivityStack {
            }
        }

        if (reason != null &&
                (reason.intent.getFlags() & Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) {
            mWindowManager.prepareAppTransition(AppTransition.TRANSIT_NONE, false);
            ActivityRecord r = topRunningActivityLocked(null);
            if (r != null) {
                mNoAnimActivities.add(r);
            }
        } else {
        mWindowManager.prepareAppTransition(AppTransition.TRANSIT_TASK_TO_BACK, false);
        }
        mWindowManager.moveTaskToBottom(taskId);

        if (VALIDATE_TOKENS) {
@@ -3600,7 +3590,7 @@ final class ActivityStack {
            }
            final int taskToReturnTo = tr.getTaskToReturnTo();
            tr.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE);
            return mStackSupervisor.resumeHomeStackTask(taskToReturnTo, null);
            return mStackSupervisor.resumeHomeStackTask(taskToReturnTo, null, "moveTaskToBack");
        }

        mStackSupervisor.resumeTopActivitiesLocked();
@@ -4042,7 +4032,7 @@ final class ActivityStack {
        return starting;
    }

    void removeTask(TaskRecord task) {
    void removeTask(TaskRecord task, String reason) {
        mStackSupervisor.endLockTaskModeIfTaskEnding(task);
        mWindowManager.removeTask(task.taskId);
        final ActivityRecord r = mResumedActivity;
@@ -4080,7 +4070,7 @@ final class ActivityStack {
        if (mTaskHistory.isEmpty()) {
            if (DEBUG_STACK) Slog.i(TAG, "removeTask: moving to back stack=" + this);
            if (isOnHomeDisplay()) {
                mStackSupervisor.moveHomeStack(!isHomeStack());
                mStackSupervisor.moveHomeStack(!isHomeStack(), reason + " leftTaskHistoryEmpty");
            }
            if (mStacks != null) {
                mStacks.remove(this);
+30 −29

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -94,4 +94,4 @@ option java_package com.android.server.am
30043 am_focused_activity (User|1|5),(Component Name|3)

# Home Stack brought to front or rear
30044 am_home_stack_moved (User|1|5),(To Front|1|5),(Top Stack Id|1|5),(Focused Stack Id|1|5)
30044 am_home_stack_moved (User|1|5),(To Front|1|5),(Top Stack Id|1|5),(Focused Stack Id|1|5),(Reason|3)