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

Commit c808f069 authored by Mark Renouf's avatar Mark Renouf
Browse files

Adds TaskInfo to some TaskChangeListener methods

This change dispatches TaskInfo directly for some methods
which currently only pass taskId. This eliminates the need
for second binder call to search for the TaskInfo.

See also: ag/6306456

Bug: 124058588
Bug: 123631242
Test: atest WmTests:TaskStackChangedListenerTest
Change-Id: I2e4c458f2a1ae684ef8d9f6a4ab2fbcfe13570b5
parent c20de154
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -487,9 +487,10 @@ public class ActivityView extends ViewGroup {
    private class TaskStackListenerImpl extends TaskStackListener {

        @Override
        public void onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td)
        public void onTaskDescriptionChanged(ActivityManager.RunningTaskInfo taskInfo)
                throws RemoteException {
            if (mVirtualDisplay == null) {
            if (mVirtualDisplay == null
                    || taskInfo.displayId != mVirtualDisplay.getDisplay().getDisplayId()) {
                return;
            }

@@ -499,14 +500,17 @@ public class ActivityView extends ViewGroup {
            }
            // Found the topmost stack on target display. Now check if the topmost task's
            // description changed.
            if (taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
                mSurfaceView.setResizeBackgroundColor(td.getBackgroundColor());
            if (taskInfo.taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
                mSurfaceView.setResizeBackgroundColor(
                        taskInfo.taskDescription.getBackgroundColor());
            }
        }

        @Override
        public void onTaskMovedToFront(int taskId) throws RemoteException {
            if (mActivityViewCallback  == null) {
        public void onTaskMovedToFront(ActivityManager.RunningTaskInfo taskInfo)
                throws RemoteException {
            if (mActivityViewCallback  == null || mVirtualDisplay == null
                    || taskInfo.displayId != mVirtualDisplay.getDisplay().getDisplayId()) {
                return;
            }

@@ -514,14 +518,14 @@ public class ActivityView extends ViewGroup {
            // if StackInfo was null or unrelated to the "move to front" then there's no use
            // notifying the callback
            if (stackInfo != null
                    && taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
                    && taskInfo.taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
                mActivityViewCallback.onTaskMovedToFront(stackInfo);
            }
        }

        @Override
        public void onTaskCreated(int taskId, ComponentName componentName) throws RemoteException {
            if (mActivityViewCallback  == null) {
            if (mActivityViewCallback == null || mVirtualDisplay == null) {
                return;
            }

@@ -535,17 +539,13 @@ public class ActivityView extends ViewGroup {
        }

        @Override
        public void onTaskRemovalStarted(int taskId) throws RemoteException {
            if (mActivityViewCallback  == null) {
        public void onTaskRemovalStarted(ActivityManager.RunningTaskInfo taskInfo)
                throws RemoteException {
            if (mActivityViewCallback == null || mVirtualDisplay == null
                    || taskInfo.displayId != mVirtualDisplay.getDisplay().getDisplayId()) {
                return;
            }
            StackInfo stackInfo = getTopMostStackInfo();
            // if StackInfo was null or task is on a different display then there's no use
            // notifying the callback
            if (stackInfo != null
                    && taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
                mActivityViewCallback.onTaskRemovalStarted(taskId);
            }
            mActivityViewCallback.onTaskRemovalStarted(taskInfo.taskId);
        }

        private StackInfo getTopMostStackInfo() throws RemoteException {
+12 −7
Original line number Diff line number Diff line
@@ -73,8 +73,12 @@ oneway interface ITaskStackListener {
    /**
     * Called when an activity was requested to be launched on a secondary display but was not
     * allowed there.
     *
     * @param taskInfo info about the Activity's task
     * @param requestedDisplayId the id of the requested launch display
     */
    void onActivityLaunchOnSecondaryDisplayFailed();
    void onActivityLaunchOnSecondaryDisplayFailed(in ActivityManager.RunningTaskInfo taskInfo,
            int requestedDisplayId);

    /**
     * Called when a task is added.
@@ -94,18 +98,17 @@ oneway interface ITaskStackListener {
    /**
     * Called when a task is moved to the front of its stack.
     *
     * @param taskId id of the task.
     * @param taskInfo info about the task which moved
    */
    void onTaskMovedToFront(int taskId);
    void onTaskMovedToFront(in ActivityManager.RunningTaskInfo taskInfo);

    /**
     * Called when a task’s description is changed due to an activity calling
     * ActivityManagerService.setTaskDescription
     *
     * @param taskId id of the task.
     * @param td the new TaskDescription.
     * @param taskInfo info about the task which changed, with {@link TaskInfo#taskDescription}
    */
    void onTaskDescriptionChanged(int taskId, in ActivityManager.TaskDescription td);
    void onTaskDescriptionChanged(in ActivityManager.RunningTaskInfo taskInfo);

    /**
     * Called when a activity’s orientation is changed due to it calling
@@ -120,8 +123,10 @@ oneway interface ITaskStackListener {
     * Called when the task is about to be finished but before its surfaces are
     * removed from the window manager. This allows interested parties to
     * perform relevant animations before the window disappears.
     *
     * @param taskInfo info about the task being removed
     */
    void onTaskRemovalStarted(int taskId);
    void onTaskRemovalStarted(in ActivityManager.RunningTaskInfo taskInfo);

    /**
     * Called when the task has been put in a locked state because one or more of the
+37 −0
Original line number Diff line number Diff line
@@ -70,6 +70,16 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub {
    }

    @Override
    public void onActivityLaunchOnSecondaryDisplayFailed(ActivityManager.RunningTaskInfo taskInfo,
            int requestedDisplayId) throws RemoteException {
        onActivityLaunchOnSecondaryDisplayFailed();
    }

    /**
     * @deprecated see {@link
     *         #onActivityLaunchOnSecondaryDisplayFailed(ActivityManager.RunningTaskInfo, int)}
     */
    @Deprecated
    @UnsupportedAppUsage
    public void onActivityLaunchOnSecondaryDisplayFailed() throws RemoteException {
    }
@@ -84,15 +94,42 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub {
    }

    @Override
    public void onTaskMovedToFront(ActivityManager.RunningTaskInfo taskInfo)
            throws RemoteException {
        onTaskMovedToFront(taskInfo.taskId);
    }

    /**
     * @deprecated see {@link #onTaskMovedToFront(ActivityManager.RunningTaskInfo)}
     */
    @Deprecated
    @UnsupportedAppUsage
    public void onTaskMovedToFront(int taskId) throws RemoteException {
    }

    @Override
    public void onTaskRemovalStarted(ActivityManager.RunningTaskInfo taskInfo)
            throws RemoteException {
        onTaskRemovalStarted(taskInfo.taskId);
    }

    /**
     * @deprecated see {@link #onTaskRemovalStarted(ActivityManager.RunningTaskInfo)}
     */
    @Deprecated
    public void onTaskRemovalStarted(int taskId) throws RemoteException {
    }

    @Override
    public void onTaskDescriptionChanged(ActivityManager.RunningTaskInfo taskInfo)
            throws RemoteException {
        onTaskDescriptionChanged(taskInfo.taskId, taskInfo.taskDescription);
    }

    /**
     * @deprecated see {@link #onTaskDescriptionChanged(ActivityManager.RunningTaskInfo)}
     */
    @Deprecated
    public void onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td)
            throws RemoteException {
    }
+11 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.systemui.shared.system;

import android.app.ActivityManager.TaskSnapshot;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.os.UserHandle;
import android.util.Log;
@@ -43,10 +43,20 @@ public abstract class TaskStackChangeListener {
    public void onActivityForcedResizable(String packageName, int taskId, int reason) { }
    public void onActivityDismissingDockedStack() { }
    public void onActivityLaunchOnSecondaryDisplayFailed() { }

    public void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo) {
        onActivityLaunchOnSecondaryDisplayFailed();
    }

    public void onTaskProfileLocked(int taskId, int userId) { }
    public void onTaskCreated(int taskId, ComponentName componentName) { }
    public void onTaskRemoved(int taskId) { }
    public void onTaskMovedToFront(int taskId) { }

    public void onTaskMovedToFront(RunningTaskInfo taskInfo) {
        onTaskMovedToFront(taskInfo.taskId);
    }

    public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) { }

    /**
+17 −9
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.shared.system;

import android.app.ActivityTaskManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManager.TaskSnapshot;
import android.app.ActivityTaskManager;
import android.app.IActivityManager;
import android.app.TaskStackListener;
import android.content.ComponentName;
@@ -132,8 +133,11 @@ public class TaskStackChangeListeners extends TaskStackListener {
    }

    @Override
    public void onActivityLaunchOnSecondaryDisplayFailed() throws RemoteException {
        mHandler.sendEmptyMessage(H.ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_FAILED);
    public void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo,
            int requestedDisplayId) throws RemoteException {
        mHandler.obtainMessage(H.ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_FAILED, requestedDisplayId,
                0 /* unused */,
                taskInfo).sendToTarget();
    }

    @Override
@@ -157,8 +161,9 @@ public class TaskStackChangeListeners extends TaskStackListener {
    }

    @Override
    public void onTaskMovedToFront(int taskId) throws RemoteException {
        mHandler.obtainMessage(H.ON_TASK_MOVED_TO_FRONT, taskId, 0).sendToTarget();
    public void onTaskMovedToFront(RunningTaskInfo taskInfo)
            throws RemoteException {
        mHandler.obtainMessage(H.ON_TASK_MOVED_TO_FRONT, taskInfo).sendToTarget();
    }

    @Override
@@ -258,8 +263,10 @@ public class TaskStackChangeListeners extends TaskStackListener {
                        break;
                    }
                    case ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_FAILED: {
                        final RunningTaskInfo info = (RunningTaskInfo) msg.obj;
                        for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                            mTaskStackListeners.get(i).onActivityLaunchOnSecondaryDisplayFailed();
                            mTaskStackListeners.get(i)
                                    .onActivityLaunchOnSecondaryDisplayFailed(info);
                        }
                        break;
                    }
@@ -283,15 +290,16 @@ public class TaskStackChangeListeners extends TaskStackListener {
                        break;
                    }
                    case ON_TASK_MOVED_TO_FRONT: {
                        final RunningTaskInfo info = (RunningTaskInfo) msg.obj;
                        for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                            mTaskStackListeners.get(i).onTaskMovedToFront(msg.arg1);
                            mTaskStackListeners.get(i).onTaskMovedToFront(info);
                        }
                        break;
                    }
                    case ON_ACTIVITY_REQUESTED_ORIENTATION_CHANGE: {
                        for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                            mTaskStackListeners.get(i).onActivityRequestedOrientationChanged(
                                    msg.arg1, msg.arg2);
                            mTaskStackListeners.get(i)
                                    .onActivityRequestedOrientationChanged(msg.arg1, msg.arg2);
                        }
                        break;
                    }
Loading