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

Commit fd56e1d7 authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Convert mHistory to mTaskHistory (3)"

parents 9990e67b d74f7d72
Loading
Loading
Loading
Loading
+29 −96
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED;

import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.util.Objects;
import com.android.server.am.ActivityManagerService.ItemMatcher;
import com.android.server.am.ActivityManagerService.PendingActivityLaunch;
import com.android.server.wm.AppTransition;
@@ -473,29 +474,11 @@ final class ActivityStack {
    }

    final ActivityRecord topRunningActivityLocked(ActivityRecord notTop) {
        ActivityRecord newAr = newTopRunningActivityLocked(notTop);

        int i = mHistory.size()-1;
        while (i >= 0) {
            ActivityRecord r = mHistory.get(i);
            if (!r.finishing && r != notTop && okToShow(r)) {
                if (VALIDATE_TASK_REPLACE && newAr != r) logHistories(
                        "topRunningActivityLocked", true);
                return r;
            }
            i--;
        }
        if (VALIDATE_TASK_REPLACE && newAr != null) Slog.w(TAG,
                "topRunningActivityLocked: mismatch: newAr!=null");
        return null;
    }

    final ActivityRecord newTopRunningActivityLocked(ActivityRecord notTop) {
        for (int i = mTaskHistory.size() - 1; i >= 0; --i) {
            final TaskRecord task = mTaskHistory.get(i);
        for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
            final TaskRecord task = mTaskHistory.get(taskNdx);
            final ArrayList<ActivityRecord> activities = task.mActivities;
            for (int j = activities.size() - 1; j >= 0; --j) {
                ActivityRecord r = activities.get(j);
            for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
                ActivityRecord r = activities.get(activityNdx);
                if (!r.finishing && r != notTop && okToShow(r)) {
                    return r;
                }
@@ -505,29 +488,11 @@ final class ActivityStack {
    }

    final ActivityRecord topRunningNonDelayedActivityLocked(ActivityRecord notTop) {
        ActivityRecord newAr = newTopRunningNonDelayedActivityLocked(notTop);

        int i = mHistory.size()-1;
        while (i >= 0) {
            ActivityRecord r = mHistory.get(i);
            if (!r.finishing && !r.delayedResume && r != notTop && okToShow(r)) {
                if (VALIDATE_TASK_REPLACE && newAr != r) Slog.w(TAG,
                    "topRunningNonDelayedActivityLocked: mismatch: newAr=" + newAr + " r=" + r);
                return r;
            }
            i--;
        }
        if (VALIDATE_TASK_REPLACE && newAr != null) Slog.w(TAG,
                "topRunningNonDelayedActivityLocked: mismatch: newAr!=null");
        return null;
    }

    final ActivityRecord newTopRunningNonDelayedActivityLocked(ActivityRecord notTop) {
        for (int i = mTaskHistory.size() - 1; i >= 0; --i) {
            final TaskRecord task = mTaskHistory.get(i);
        for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
            final TaskRecord task = mTaskHistory.get(taskNdx);
            final ArrayList<ActivityRecord> activities = task.mActivities;
            for (int j = activities.size() - 1; j >= 0; --j) {
                ActivityRecord r = activities.get(j);
            for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
                ActivityRecord r = activities.get(activityNdx);
                if (!r.finishing && !r.delayedResume && r != notTop && okToShow(r)) {
                    return r;
                }
@@ -546,26 +511,6 @@ final class ActivityStack {
     * @return Returns the HistoryRecord of the next activity on the stack.
     */
    final ActivityRecord topRunningActivityLocked(IBinder token, int taskId) {
        ActivityRecord newAr = newTopRunningActivityLocked(token, taskId);

        int i = mHistory.size()-1;
        while (i >= 0) {
            ActivityRecord r = mHistory.get(i);
            // Note: the taskId check depends on real taskId fields being non-zero
            if (!r.finishing && (token != r.appToken) && (taskId != r.task.taskId)
                    && okToShow(r)) {
                if (VALIDATE_TASK_REPLACE && newAr != r) Slog.w(TAG,
                        "topRunningActivityLocked(token): mismatch: newAr=" + newAr + " r=" + r);
                return r;
            }
            i--;
        }
        if (VALIDATE_TASK_REPLACE && newAr != null) Slog.w(TAG,
                "topRunningActivityLocked(token): mismatch: newAr!=null");
        return null;
    }

    final ActivityRecord newTopRunningActivityLocked(IBinder token, int taskId) {
        for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
            TaskRecord task = mTaskHistory.get(taskNdx);
            if (task.taskId == taskId) {
@@ -583,10 +528,6 @@ final class ActivityStack {
        return null;
    }

    private final int indexOfTokenLocked(IBinder token) {
        return mHistory.indexOf(ActivityRecord.forToken(token));
    }

    final ActivityRecord isInStackLocked(IBinder token) {
        ActivityRecord newAr = newIsInStackLocked(token);

@@ -4217,15 +4158,14 @@ final class ActivityStack {
     */
    final boolean requestFinishActivityLocked(IBinder token, int resultCode,
            Intent resultData, String reason, boolean oomAdj) {
        int index = indexOfTokenLocked(token);
        ActivityRecord r = isInStackLocked(token);
        if (DEBUG_RESULTS || DEBUG_STATES) Slog.v(
                TAG, "Finishing activity @" + index + ": token=" + token
                TAG, "Finishing activity token=" + token + " r="
                + ", result=" + resultCode + ", data=" + resultData
                + ", reason=" + reason);
        if (index < 0) {
        if (r == null) {
            return false;
        }
        ActivityRecord r = mHistory.get(index);

        finishActivityLocked(r, resultCode, resultData, reason, oomAdj);
        return true;
@@ -4282,28 +4222,21 @@ final class ActivityStack {
    }

    final boolean finishActivityAffinityLocked(IBinder token) {
        int index = indexOfTokenLocked(token);
        ActivityRecord r = isInStackLocked(token);
        if (DEBUG_RESULTS) Slog.v(
                TAG, "Finishing activity affinity @" + index + ": token=" + token);
        if (index < 0) {
                TAG, "Finishing activity affinity token=" + token + " r=" + r);
        if (r == null) {
            return false;
        }
        ActivityRecord r = mHistory.get(index);

        while (index >= 0) {
            ActivityRecord cur = mHistory.get(index);
            if (cur.task != r.task) {
                break;
            }
            if (cur.taskAffinity == null && r.taskAffinity != null) {
                break;
            }
            if (cur.taskAffinity != null && !cur.taskAffinity.equals(r.taskAffinity)) {
        ArrayList<ActivityRecord> activities = r.task.mActivities;
        for (int index = activities.indexOf(r); index >= 0; --index) {
            ActivityRecord cur = activities.get(index);
            if (!Objects.equal(cur.taskAffinity, r.taskAffinity)) {
                break;
            }
            finishActivityLocked(cur, Activity.RESULT_CANCELED, null, "request-affinity",
                    true);
            index--;
        }
        return true;
    }