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

Commit 068eabcc authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Send task description changed though task org taskInfoChanged" into rvc-dev am: 3908fb22

Change-Id: I55524930beee120cc4c64dd791a4a8c7a05d37f4
parents 95b14ec4 3908fb22
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -5232,14 +5232,14 @@ package android.window {
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getChildTasks(@NonNull android.window.WindowContainerToken, @NonNull int[]);
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getChildTasks(@NonNull android.window.WindowContainerToken, @NonNull int[]);
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.window.WindowContainerToken getImeTarget(int);
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.window.WindowContainerToken getImeTarget(int);
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getRootTasks(int, @NonNull int[]);
    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getRootTasks(int, @NonNull int[]);
    method public void onBackPressedOnTaskRoot(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @BinderThread public void onBackPressedOnTaskRoot(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method public void onTaskAppeared(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @BinderThread public void onTaskAppeared(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method public void onTaskInfoChanged(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @BinderThread public void onTaskInfoChanged(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method public void onTaskVanished(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @BinderThread public void onTaskVanished(@NonNull android.app.ActivityManager.RunningTaskInfo);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void registerOrganizer(int);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setInterceptBackPressedOnTaskRoot(boolean);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setInterceptBackPressedOnTaskRoot(boolean);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void setLaunchRoot(int, @NonNull android.window.WindowContainerToken);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void setLaunchRoot(int, @NonNull android.window.WindowContainerToken);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void unregisterOrganizer();
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void unregisterOrganizer();
  }
  }


  public final class WindowContainerToken implements android.os.Parcelable {
  public final class WindowContainerToken implements android.os.Parcelable {
+34 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
import android.os.WorkSource;
import android.os.WorkSource;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
import android.util.DisplayMetrics;
import android.util.Singleton;
import android.util.Singleton;
@@ -1597,6 +1598,39 @@ public class ActivityManager {
                    + " resizeMode: " + ActivityInfo.resizeModeToString(mResizeMode)
                    + " resizeMode: " + ActivityInfo.resizeModeToString(mResizeMode)
                    + " minWidth: " + mMinWidth + " minHeight: " + mMinHeight;
                    + " minWidth: " + mMinWidth + " minHeight: " + mMinHeight;
        }
        }

        @Override
        public boolean equals(Object obj) {
            if (!(obj instanceof TaskDescription)) {
                return false;
            }

            TaskDescription other = (TaskDescription) obj;
            return TextUtils.equals(mLabel, other.mLabel)
                    && TextUtils.equals(mIconFilename, other.mIconFilename)
                    && mIcon == other.mIcon
                    && mColorPrimary == other.mColorPrimary
                    && mColorBackground == other.mColorBackground
                    && mStatusBarColor == other.mStatusBarColor
                    && mNavigationBarColor == other.mNavigationBarColor
                    && mEnsureStatusBarContrastWhenTransparent
                            == other.mEnsureStatusBarContrastWhenTransparent
                    && mEnsureNavigationBarContrastWhenTransparent
                            == other.mEnsureNavigationBarContrastWhenTransparent
                    && mResizeMode == other.mResizeMode
                    && mMinWidth == other.mMinWidth
                    && mMinHeight == other.mMinHeight;
        }

        /** @hide */
        public static boolean equals(TaskDescription td1, TaskDescription td2) {
            if (td1 == null && td2 == null) {
                return true;
            } else if (td1 != null && td2 != null) {
                return td1.equals(td2);
            }
            return false;
        }
    }
    }


    /**
    /**
+0 −24
Original line number Original line Diff line number Diff line
@@ -26,7 +26,6 @@ import android.app.ActivityTaskManager;
import android.app.ActivityView;
import android.app.ActivityView;
import android.app.IActivityTaskManager;
import android.app.IActivityTaskManager;
import android.app.PendingIntent;
import android.app.PendingIntent;
import android.app.TaskStackListener;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
@@ -129,7 +128,6 @@ public abstract class TaskEmbedder {


    protected SurfaceControl.Transaction mTransaction;
    protected SurfaceControl.Transaction mTransaction;
    protected SurfaceControl mSurfaceControl;
    protected SurfaceControl mSurfaceControl;
    protected TaskStackListener mTaskStackListener;
    protected Listener mListener;
    protected Listener mListener;
    protected boolean mOpened; // Protected by mGuard.
    protected boolean mOpened; // Protected by mGuard.


@@ -170,13 +168,6 @@ public abstract class TaskEmbedder {
        if (!onInitialize()) {
        if (!onInitialize()) {
            return false;
            return false;
        }
        }

        mTaskStackListener = createTaskStackListener();
        try {
            mActivityTaskManager.registerTaskStackListener(mTaskStackListener);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to register task stack listener", e);
        }
        if (mListener != null && isInitialized()) {
        if (mListener != null && isInitialized()) {
            mListener.onInitialized();
            mListener.onInitialized();
        }
        }
@@ -186,11 +177,6 @@ public abstract class TaskEmbedder {
        return true;
        return true;
    }
    }


    /**
     * @return the task stack listener for this embedder
     */
    public abstract TaskStackListener createTaskStackListener();

    /**
    /**
     * Whether this container has been initialized.
     * Whether this container has been initialized.
     *
     *
@@ -420,16 +406,6 @@ public abstract class TaskEmbedder {
        mSurfaceControl.release();
        mSurfaceControl.release();


        boolean reportReleased = onRelease();
        boolean reportReleased = onRelease();

        if (mTaskStackListener != null) {
            try {
                mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener);
            } catch (RemoteException e) {
                Log.e(TAG, "Failed to unregister task stack listener", e);
            }
            mTaskStackListener = null;
        }

        if (mListener != null && reportReleased) {
        if (mListener != null && reportReleased) {
            mListener.onReleased();
            mListener.onReleased();
        }
        }
+9 −4
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package android.window;
package android.window;


import android.annotation.BinderThread;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.RequiresPermission;
@@ -39,7 +40,7 @@ public class TaskOrganizer extends WindowOrganizer {
     * and receive taskVanished callbacks in the process.
     * and receive taskVanished callbacks in the process.
     */
     */
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    public void registerOrganizer(int windowingMode) {
    public final void registerOrganizer(int windowingMode) {
        try {
        try {
            getController().registerTaskOrganizer(mInterface, windowingMode);
            getController().registerTaskOrganizer(mInterface, windowingMode);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
@@ -49,7 +50,7 @@ public class TaskOrganizer extends WindowOrganizer {


    /** Unregisters a previously registered task organizer. */
    /** Unregisters a previously registered task organizer. */
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    public void unregisterOrganizer() {
    public final void unregisterOrganizer() {
        try {
        try {
            getController().unregisterTaskOrganizer(mInterface);
            getController().unregisterTaskOrganizer(mInterface);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
@@ -57,13 +58,17 @@ public class TaskOrganizer extends WindowOrganizer {
        }
        }
    }
    }


    @BinderThread
    public void onTaskAppeared(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}
    public void onTaskAppeared(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}


    @BinderThread
    public void onTaskVanished(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}
    public void onTaskVanished(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}


    public void onTaskInfoChanged(@NonNull ActivityManager.RunningTaskInfo info) {}
    @BinderThread
    public void onTaskInfoChanged(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}


    public void onBackPressedOnTaskRoot(@NonNull ActivityManager.RunningTaskInfo info) {}
    @BinderThread
    public void onBackPressedOnTaskRoot(@NonNull ActivityManager.RunningTaskInfo taskInfo) {}


    /** Creates a persistent root task in WM for a particular windowing-mode. */
    /** Creates a persistent root task in WM for a particular windowing-mode. */
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+7 −30
Original line number Original line Diff line number Diff line
@@ -21,7 +21,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityOptions;
import android.app.ActivityView;
import android.app.TaskStackListener;
import android.app.TaskStackListener;
import android.content.Context;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.Rect;
@@ -55,11 +54,6 @@ public class TaskOrganizerTaskEmbedder extends TaskEmbedder {
        super(context, host);
        super(context, host);
    }
    }


    @Override
    public TaskStackListener createTaskStackListener() {
        return new TaskStackListenerImpl();
    }

    /**
    /**
     * Whether this container has been initialized.
     * Whether this container has been initialized.
     *
     *
@@ -219,29 +213,6 @@ public class TaskOrganizerTaskEmbedder extends TaskEmbedder {
        Log.d(TAG, "[" + System.identityHashCode(this) + "] " + msg);
        Log.d(TAG, "[" + System.identityHashCode(this) + "] " + msg);
    }
    }


    /**
     * A task change listener that detects background color change of the topmost stack on our
     * virtual display and updates the background of the surface view. This background will be shown
     * when surface view is resized, but the app hasn't drawn its content in new size yet.
     * It also calls StateCallback.onTaskMovedToFront to notify interested parties that the stack
     * associated with the {@link ActivityView} has had a Task moved to the front. This is useful
     * when needing to also bring the host Activity to the foreground at the same time.
     */
    private class TaskStackListenerImpl extends TaskStackListener {

        @Override
        public void onTaskDescriptionChanged(ActivityManager.RunningTaskInfo taskInfo) {
            if (!isInitialized()) {
                return;
            }
            if (taskInfo.taskId == mTaskInfo.taskId) {
                mTaskInfo.taskDescription = taskInfo.taskDescription;
                mHost.onTaskBackgroundColorChanged(TaskOrganizerTaskEmbedder.this,
                        taskInfo.taskDescription.getBackgroundColor());
            }
        }
    }

    private class TaskOrganizerImpl extends TaskOrganizer {
    private class TaskOrganizerImpl extends TaskOrganizer {
        @Override
        @Override
        public void onTaskAppeared(ActivityManager.RunningTaskInfo taskInfo) {
        public void onTaskAppeared(ActivityManager.RunningTaskInfo taskInfo) {
@@ -249,7 +220,6 @@ public class TaskOrganizerTaskEmbedder extends TaskEmbedder {
                log("taskAppeared: " + taskInfo.taskId);
                log("taskAppeared: " + taskInfo.taskId);
            }
            }


            // TODO: Ensure visibility/alpha of the leash in its initial state?
            mTaskInfo = taskInfo;
            mTaskInfo = taskInfo;
            mTaskToken = taskInfo.token;
            mTaskToken = taskInfo.token;
            mTaskLeash = mTaskToken.getLeash();
            mTaskLeash = mTaskToken.getLeash();
@@ -269,6 +239,13 @@ public class TaskOrganizerTaskEmbedder extends TaskEmbedder {
            }
            }
        }
        }


        @Override
        public void onTaskInfoChanged(ActivityManager.RunningTaskInfo taskInfo) {
            mTaskInfo.taskDescription = taskInfo.taskDescription;
            mHost.post(() -> mHost.onTaskBackgroundColorChanged(TaskOrganizerTaskEmbedder.this,
                    taskInfo.taskDescription.getBackgroundColor()));
        }

        @Override
        @Override
        public void onTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
        public void onTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
            if (DEBUG) {
            if (DEBUG) {
Loading