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

Commit d74f7d72 authored by Craig Mautner's avatar Craig Mautner
Browse files

Convert mHistory to mTaskHistory (3)

- Remove mHistory from topRunningActivityLocked(IBinder).
- Remove mHistory from topRunningNonDelayedActivityLocked.
- Remove mHistory from topRunningActivityLocked(ActivityRecord).
- Remove indexOfTokenLocked and its uses in
requestFinishActivityLocked and finishActivityAffinityLocked.

Change-Id: I96b44f66486406b4006b7937360fd92e8dd73060
parent f81b9087
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;
    }