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

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

Merge "Switch topRunning* and moveTaskTo*"

parents 6f8218a4 11bf9a52
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -471,6 +471,7 @@ final class ActivityRecord {
    void setTask(TaskRecord newTask, ThumbnailHolder newThumbHolder, boolean isRoot) {
        if (inHistory && !finishing) {
            if (task != null) {
                // TODO: If this is the last ActivityRecord in task, remove from ActivityStack.
                task.removeActivity(this);
                task.numActivities--;
            }
+263 −230

File changed.

Preview size limit exceeded, changes collapsed.

+15 −1
Original line number Diff line number Diff line
@@ -134,8 +134,22 @@ class TaskRecord extends ThumbnailHolder {
            // Was not previously in list.
            numFullscreen++;
        }
        // TODO: This only matters to achieve identical results as mHistory. Later we won't need
        // to skip over finishing activities.
        int i;
        for (i = mActivities.size() - 1; i >= 0; --i) {
            if (!mActivities.get(i).finishing) {
                break;
            }
        }
        if (i >= 0) {
            // Add below finishing activities.
            mActivities.add(i + 1, r);
        } else {
            // All activities are finishing, add to top.
            mActivities.add(r);
        }
    }

    /** @return true if this was the last activity in the task */
    boolean removeActivity(ActivityRecord r) {
+23 −63
Original line number Diff line number Diff line
@@ -19,9 +19,6 @@ package com.android.server.wm;
import static com.android.server.wm.WindowManagerService.FORWARD_ITERATOR;
import static com.android.server.wm.WindowManagerService.REVERSE_ITERATOR;

import android.graphics.Rect;
import android.os.Debug;
import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
@@ -138,7 +135,7 @@ class DisplayContent {
            mTaskIdToTaskList.put(wtoken.groupId, task);
            mTaskLists.add(task);
        } else {
            task.mAppTokens.add(wtoken);
            task.mAppTokens.add(addPos, wtoken);
        }
    }

@@ -189,55 +186,10 @@ class DisplayContent {
        return mTmpAppIterator;
    }

    class TaskListsIterator implements Iterator<TaskList> {
        private int mCur;
        private boolean mReverse;

        TaskListsIterator() {
            this(false);
        }

        TaskListsIterator(boolean reverse) {
            reset(reverse);
        }

        void reset(boolean reverse) {
            mReverse = reverse;
            mCur = reverse ? mTaskLists.size() - 1 : 0;
        }

        @Override
        public boolean hasNext() {
            if (mReverse) {
                return mCur >= 0;
            }
            return mCur < mTaskLists.size();
        }

        @Override
        public TaskList next() {
            if (hasNext()) {
                TaskList taskList = mTaskLists.get(mCur);
                mCur += (mReverse ? -1 : 1);
                return taskList;
            }
            throw new NoSuchElementException();
        }

        @Override
        public void remove() {
            throw new IllegalArgumentException();
        }

        @Override public String toString() {
            return mTaskLists.toString();
        }
    }

    class AppTokenIterator implements Iterator<AppWindowToken> {
        final TaskListsIterator mIterator = new TaskListsIterator();
        boolean mReverse;
        int mCur;
        int mTasksNdx;
        int mActivityNdx;
        TaskList mTaskList;

        public AppTokenIterator() {
@@ -250,14 +202,23 @@ class DisplayContent {

        void reset(boolean reverse) {
            mReverse = reverse;
            mIterator.reset(reverse);
            mTasksNdx = reverse ? mTaskLists.size() - 1 : 0;
            getNextTaskList();
        }

        private void getNextTaskList() {
            if (mIterator.hasNext()) {
                mTaskList = mIterator.next();
                mCur = mReverse ? mTaskList.mAppTokens.size() - 1 : 0;
            if (mReverse) {
                if (mTasksNdx >= 0) {
                    mTaskList = mTaskLists.get(mTasksNdx);
                    --mTasksNdx;
                    mActivityNdx = mTaskList.mAppTokens.size() - 1;
                }
            } else {
                if (mTasksNdx < mTaskLists.size()) {
                    mTaskList = mTaskLists.get(mTasksNdx);
                    ++mTasksNdx;
                    mActivityNdx = 0;
                }
            }
        }

@@ -267,16 +228,16 @@ class DisplayContent {
                return false;
            }
            if (mReverse) {
                return mCur >= 0;
                return mActivityNdx >= 0;
            }
            return mCur < mTaskList.mAppTokens.size();
            return mActivityNdx < mTaskList.mAppTokens.size();
        }

        @Override
        public AppWindowToken next() {
            if (hasNext()) {
                AppWindowToken wtoken = mTaskList.mAppTokens.get(mCur);
                mCur += mReverse ? -1 : 1;
                AppWindowToken wtoken = mTaskList.mAppTokens.get(mActivityNdx);
                mActivityNdx += mReverse ? -1 : 1;
                if (!hasNext()) {
                    getNextTaskList();
                }
@@ -292,15 +253,14 @@ class DisplayContent {

        int size() {
            int size = 0;
            final TaskListsIterator iterator = new TaskListsIterator();
            while (iterator.hasNext()) {
                size += iterator.next().mAppTokens.size();
            for (int i = mTaskLists.size() - 1; i >= 0; --i) {
                size += mTaskLists.get(i).mAppTokens.size();
            }
            return size;
        }

        @Override public String toString() {
            return mIterator.toString();
            return mTaskLists.toString();
        }
    }

+3 −2
Original line number Diff line number Diff line
@@ -3152,8 +3152,8 @@ public class WindowManagerService extends IWindowManager.Stub
            }

            if (mismatch || iterator.hasNext()) {
                Slog.w(TAG, "validateAppTokens: Mismatch! ActivityManager=" + tasks
                        + " WindowManager=" + iterator);
                Slog.w(TAG, "validateAppTokens: Mismatch! ActivityManager=" + tasks);
                Slog.w(TAG, "validateAppTokens: Mismatch! WindowManager=" + iterator);
            }
        }
    }
@@ -7281,6 +7281,7 @@ public class WindowManagerService extends IWindowManager.Stub
        performLayoutAndPlaceSurfacesLocked();
    }

    @Override
    public void setOverscan(int displayId, int left, int top, int right, int bottom) {
        if (mContext.checkCallingOrSelfPermission(
                android.Manifest.permission.WRITE_SECURE_SETTINGS) !=