Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3398,6 +3398,7 @@ package android.window { method @NonNull public android.window.WindowContainerTransaction createTaskFragment(@NonNull android.window.TaskFragmentCreationParams); method @NonNull public android.window.WindowContainerTransaction deleteTaskFragment(@NonNull android.window.WindowContainerToken); method public int describeContents(); method @NonNull public android.window.WindowContainerTransaction removeTask(@NonNull android.window.WindowContainerToken); method @NonNull public android.window.WindowContainerTransaction reorder(@NonNull android.window.WindowContainerToken, boolean); method @NonNull public android.window.WindowContainerTransaction reparent(@NonNull android.window.WindowContainerToken, @Nullable android.window.WindowContainerToken, boolean); method @NonNull public android.window.WindowContainerTransaction reparentActivityToTaskFragment(@NonNull android.os.IBinder, @NonNull android.os.IBinder); Loading core/java/android/window/WindowContainerTransaction.java +21 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,17 @@ public final class WindowContainerTransaction implements Parcelable { return this; } /** * Finds and removes a task and its children using its container token. The task is removed * from recents. * @param containerToken ContainerToken of Task to be removed */ @NonNull public WindowContainerTransaction removeTask(@NonNull WindowContainerToken containerToken) { mHierarchyOps.add(HierarchyOp.createForRemoveTask(containerToken.asBinder())); return this; } /** * Sends a pending intent in sync. * @param sender The PendingIntent sender. Loading Loading @@ -1153,6 +1164,7 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_REMOVE_INSETS_PROVIDER = 17; public static final int HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT = 18; public static final int HIERARCHY_OP_TYPE_SET_ALWAYS_ON_TOP = 19; public static final int HIERARCHY_OP_TYPE_REMOVE_TASK = 20; // The following key(s) are for use with mLaunchOptions: // When launching a task (eg. from recents), this is the taskId to be launched. Loading Loading @@ -1282,6 +1294,13 @@ public final class WindowContainerTransaction implements Parcelable { .build(); } /** create a hierarchy op for deleting a task **/ public static HierarchyOp createForRemoveTask(@NonNull IBinder container) { return new HierarchyOp.Builder(HIERARCHY_OP_TYPE_REMOVE_TASK) .setContainer(container) .build(); } /** Only creates through {@link Builder}. */ private HierarchyOp(int type) { mType = type; Loading Loading @@ -1465,6 +1484,8 @@ public final class WindowContainerTransaction implements Parcelable { case HIERARCHY_OP_TYPE_SET_ALWAYS_ON_TOP: return "{setAlwaysOnTop: container=" + mContainer + " alwaysOnTop=" + mAlwaysOnTop + "}"; case HIERARCHY_OP_TYPE_REMOVE_TASK: return "{RemoveTask: task=" + mContainer + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop Loading libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java +6 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,12 @@ public class FreeformTaskTransitionHandler } @Override public void startRemoveTransition(WindowContainerTransaction wct) { final int type = WindowManager.TRANSIT_CLOSE; mPendingTransitionTokens.add(mTransitions.startTransition(type, wct, this)); } @Override public boolean startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startT, Loading libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionStarter.java +8 −0 Original line number Diff line number Diff line Loading @@ -40,4 +40,12 @@ public interface FreeformTaskTransitionStarter { * */ void startMinimizedModeTransition(WindowContainerTransaction wct); /** * Starts close window transition * * @param wct the {@link WindowContainerTransaction} that closes the task * */ void startRemoveTransition(WindowContainerTransaction wct); } No newline at end of file libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java +7 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,13 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel<Caption public void onClick(View v) { final int id = v.getId(); if (id == R.id.close_window) { mActivityTaskManager.removeTask(mTaskId); WindowContainerTransaction wct = new WindowContainerTransaction(); wct.removeTask(mTaskToken); if (Transitions.ENABLE_SHELL_TRANSITIONS) { mTransitionStarter.startRemoveTransition(wct); } else { mSyncQueue.queue(wct); } } else if (id == R.id.maximize_window) { WindowContainerTransaction wct = new WindowContainerTransaction(); RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); Loading Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3398,6 +3398,7 @@ package android.window { method @NonNull public android.window.WindowContainerTransaction createTaskFragment(@NonNull android.window.TaskFragmentCreationParams); method @NonNull public android.window.WindowContainerTransaction deleteTaskFragment(@NonNull android.window.WindowContainerToken); method public int describeContents(); method @NonNull public android.window.WindowContainerTransaction removeTask(@NonNull android.window.WindowContainerToken); method @NonNull public android.window.WindowContainerTransaction reorder(@NonNull android.window.WindowContainerToken, boolean); method @NonNull public android.window.WindowContainerTransaction reparent(@NonNull android.window.WindowContainerToken, @Nullable android.window.WindowContainerToken, boolean); method @NonNull public android.window.WindowContainerTransaction reparentActivityToTaskFragment(@NonNull android.os.IBinder, @NonNull android.os.IBinder); Loading
core/java/android/window/WindowContainerTransaction.java +21 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,17 @@ public final class WindowContainerTransaction implements Parcelable { return this; } /** * Finds and removes a task and its children using its container token. The task is removed * from recents. * @param containerToken ContainerToken of Task to be removed */ @NonNull public WindowContainerTransaction removeTask(@NonNull WindowContainerToken containerToken) { mHierarchyOps.add(HierarchyOp.createForRemoveTask(containerToken.asBinder())); return this; } /** * Sends a pending intent in sync. * @param sender The PendingIntent sender. Loading Loading @@ -1153,6 +1164,7 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_REMOVE_INSETS_PROVIDER = 17; public static final int HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT = 18; public static final int HIERARCHY_OP_TYPE_SET_ALWAYS_ON_TOP = 19; public static final int HIERARCHY_OP_TYPE_REMOVE_TASK = 20; // The following key(s) are for use with mLaunchOptions: // When launching a task (eg. from recents), this is the taskId to be launched. Loading Loading @@ -1282,6 +1294,13 @@ public final class WindowContainerTransaction implements Parcelable { .build(); } /** create a hierarchy op for deleting a task **/ public static HierarchyOp createForRemoveTask(@NonNull IBinder container) { return new HierarchyOp.Builder(HIERARCHY_OP_TYPE_REMOVE_TASK) .setContainer(container) .build(); } /** Only creates through {@link Builder}. */ private HierarchyOp(int type) { mType = type; Loading Loading @@ -1465,6 +1484,8 @@ public final class WindowContainerTransaction implements Parcelable { case HIERARCHY_OP_TYPE_SET_ALWAYS_ON_TOP: return "{setAlwaysOnTop: container=" + mContainer + " alwaysOnTop=" + mAlwaysOnTop + "}"; case HIERARCHY_OP_TYPE_REMOVE_TASK: return "{RemoveTask: task=" + mContainer + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop Loading
libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java +6 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,12 @@ public class FreeformTaskTransitionHandler } @Override public void startRemoveTransition(WindowContainerTransaction wct) { final int type = WindowManager.TRANSIT_CLOSE; mPendingTransitionTokens.add(mTransitions.startTransition(type, wct, this)); } @Override public boolean startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startT, Loading
libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionStarter.java +8 −0 Original line number Diff line number Diff line Loading @@ -40,4 +40,12 @@ public interface FreeformTaskTransitionStarter { * */ void startMinimizedModeTransition(WindowContainerTransaction wct); /** * Starts close window transition * * @param wct the {@link WindowContainerTransaction} that closes the task * */ void startRemoveTransition(WindowContainerTransaction wct); } No newline at end of file
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java +7 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,13 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel<Caption public void onClick(View v) { final int id = v.getId(); if (id == R.id.close_window) { mActivityTaskManager.removeTask(mTaskId); WindowContainerTransaction wct = new WindowContainerTransaction(); wct.removeTask(mTaskToken); if (Transitions.ENABLE_SHELL_TRANSITIONS) { mTransitionStarter.startRemoveTransition(wct); } else { mSyncQueue.queue(wct); } } else if (id == R.id.maximize_window) { WindowContainerTransaction wct = new WindowContainerTransaction(); RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); Loading