Loading core/java/android/window/TaskFragmentAnimationParams.aidl 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; /** * Data object for animation related override of TaskFragment. * @hide */ parcelable TaskFragmentAnimationParams; core/java/android/window/TaskFragmentAnimationParams.java 0 → 100644 +129 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; /** * Data object for animation related override of TaskFragment. * @hide */ // TODO(b/206557124): Add more animation customization options. public final class TaskFragmentAnimationParams implements Parcelable { /** The default {@link TaskFragmentAnimationParams} to use when there is no app override. */ public static final TaskFragmentAnimationParams DEFAULT = new TaskFragmentAnimationParams.Builder().build(); @ColorInt private final int mAnimationBackgroundColor; private TaskFragmentAnimationParams(@ColorInt int animationBackgroundColor) { mAnimationBackgroundColor = animationBackgroundColor; } /** * The {@link ColorInt} to use for the background during the animation with this TaskFragment if * the animation requires a background. * * The default value is {@code 0}, which is to use the theme window background. */ @ColorInt public int getAnimationBackgroundColor() { return mAnimationBackgroundColor; } private TaskFragmentAnimationParams(Parcel in) { mAnimationBackgroundColor = in.readInt(); } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mAnimationBackgroundColor); } @NonNull public static final Creator<TaskFragmentAnimationParams> CREATOR = new Creator<TaskFragmentAnimationParams>() { @Override public TaskFragmentAnimationParams createFromParcel(Parcel in) { return new TaskFragmentAnimationParams(in); } @Override public TaskFragmentAnimationParams[] newArray(int size) { return new TaskFragmentAnimationParams[size]; } }; @Override public String toString() { return "TaskFragmentAnimationParams{" + " animationBgColor=" + Integer.toHexString(mAnimationBackgroundColor) + "}"; } @Override public int hashCode() { return mAnimationBackgroundColor; } @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof TaskFragmentAnimationParams)) { return false; } final TaskFragmentAnimationParams other = (TaskFragmentAnimationParams) obj; return mAnimationBackgroundColor == other.mAnimationBackgroundColor; } @Override public int describeContents() { return 0; } /** Builder to construct the {@link TaskFragmentAnimationParams}. */ public static final class Builder { @ColorInt private int mAnimationBackgroundColor = 0; /** * Sets the {@link ColorInt} to use for the background during the animation with this * TaskFragment if the animation requires a background. The default value is * {@code 0}, which is to use the theme window background. * * @param color a packed color int, {@code AARRGGBB}, for the animation background color. * @return this {@link Builder}. */ @NonNull public Builder setAnimationBackgroundColor(@ColorInt int color) { mAnimationBackgroundColor = color; return this; } /** Constructs the {@link TaskFragmentAnimationParams}. */ @NonNull public TaskFragmentAnimationParams build() { return new TaskFragmentAnimationParams(mAnimationBackgroundColor); } } } core/java/android/window/TaskFragmentOperation.aidl 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; /** * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation. * @hide */ parcelable TaskFragmentOperation; core/java/android/window/TaskFragmentOperation.java 0 → 100644 +168 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation. * * @see WindowContainerTransaction#setTaskFragmentOperation(IBinder, TaskFragmentOperation). * @hide */ // TODO(b/263436063): move other TaskFragment related operation here. public final class TaskFragmentOperation implements Parcelable { /** Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment. */ public static final int OP_TYPE_SET_ANIMATION_PARAMS = 0; @IntDef(prefix = { "OP_TYPE_" }, value = { OP_TYPE_SET_ANIMATION_PARAMS }) @Retention(RetentionPolicy.SOURCE) @interface OperationType {} @OperationType private final int mOpType; @Nullable private final TaskFragmentAnimationParams mAnimationParams; private TaskFragmentOperation(@OperationType int opType, @Nullable TaskFragmentAnimationParams animationParams) { mOpType = opType; mAnimationParams = animationParams; } private TaskFragmentOperation(Parcel in) { mOpType = in.readInt(); mAnimationParams = in.readTypedObject(TaskFragmentAnimationParams.CREATOR); } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mOpType); dest.writeTypedObject(mAnimationParams, flags); } @NonNull public static final Creator<TaskFragmentOperation> CREATOR = new Creator<TaskFragmentOperation>() { @Override public TaskFragmentOperation createFromParcel(Parcel in) { return new TaskFragmentOperation(in); } @Override public TaskFragmentOperation[] newArray(int size) { return new TaskFragmentOperation[size]; } }; /** * Gets the {@link OperationType} of this {@link TaskFragmentOperation}. */ @OperationType public int getOpType() { return mOpType; } /** * Gets the animation related override of TaskFragment. */ @Nullable public TaskFragmentAnimationParams getAnimationParams() { return mAnimationParams; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("TaskFragmentOperation{ opType=").append(mOpType); if (mAnimationParams != null) { sb.append(", animationParams=").append(mAnimationParams); } sb.append('}'); return sb.toString(); } @Override public int hashCode() { int result = mOpType; result = result * 31 + mAnimationParams.hashCode(); return result; } @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof TaskFragmentOperation)) { return false; } final TaskFragmentOperation other = (TaskFragmentOperation) obj; return mOpType == other.mOpType && Objects.equals(mAnimationParams, other.mAnimationParams); } @Override public int describeContents() { return 0; } /** Builder to construct the {@link TaskFragmentOperation}. */ public static final class Builder { @OperationType private final int mOpType; @Nullable private TaskFragmentAnimationParams mAnimationParams; /** * @param opType the {@link OperationType} of this {@link TaskFragmentOperation}. */ public Builder(@OperationType int opType) { mOpType = opType; } /** * Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment. */ @NonNull public Builder setAnimationParams(@Nullable TaskFragmentAnimationParams animationParams) { mAnimationParams = animationParams; return this; } /** * Constructs the {@link TaskFragmentOperation}. */ @NonNull public TaskFragmentOperation build() { return new TaskFragmentOperation(mOpType, mAnimationParams); } } } core/java/android/window/WindowContainerTransaction.java +51 −1 Original line number Diff line number Diff line Loading @@ -750,6 +750,30 @@ public final class WindowContainerTransaction implements Parcelable { return this; } /** * Sets the {@link TaskFragmentOperation} to apply to the given TaskFragment. * * @param fragmentToken client assigned unique token to create TaskFragment with specified in * {@link TaskFragmentCreationParams#getFragmentToken()}. * @param taskFragmentOperation the {@link TaskFragmentOperation} to apply to the given * TaskFramgent. * @hide */ @NonNull public WindowContainerTransaction setTaskFragmentOperation(@NonNull IBinder fragmentToken, @NonNull TaskFragmentOperation taskFragmentOperation) { Objects.requireNonNull(fragmentToken); Objects.requireNonNull(taskFragmentOperation); final HierarchyOp hierarchyOp = new HierarchyOp.Builder( HierarchyOp.HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION) .setContainer(fragmentToken) .setTaskFragmentOperation(taskFragmentOperation) .build(); mHierarchyOps.add(hierarchyOp); return this; } /** * Sets/removes the always on top flag for this {@code windowContainer}. See * {@link com.android.server.wm.ConfigurationContainer#setAlwaysOnTop(boolean)}. Loading Loading @@ -1261,6 +1285,7 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_SET_COMPANION_TASK_FRAGMENT = 22; public static final int HIERARCHY_OP_TYPE_CLEAR_ADJACENT_ROOTS = 23; public static final int HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH = 24; public static final int HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION = 25; // 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 @@ -1301,10 +1326,14 @@ public final class WindowContainerTransaction implements Parcelable { @Nullable private Intent mActivityIntent; // Used as options for WindowContainerTransaction#createTaskFragment(). /** Used as options for {@link #createTaskFragment}. */ @Nullable private TaskFragmentCreationParams mTaskFragmentCreationOptions; /** Used as options for {@link #setTaskFragmentOperation}. */ @Nullable private TaskFragmentOperation mTaskFragmentOperation; @Nullable private PendingIntent mPendingIntent; Loading Loading @@ -1424,6 +1453,7 @@ public final class WindowContainerTransaction implements Parcelable { mLaunchOptions = copy.mLaunchOptions; mActivityIntent = copy.mActivityIntent; mTaskFragmentCreationOptions = copy.mTaskFragmentCreationOptions; mTaskFragmentOperation = copy.mTaskFragmentOperation; mPendingIntent = copy.mPendingIntent; mShortcutInfo = copy.mShortcutInfo; mAlwaysOnTop = copy.mAlwaysOnTop; Loading @@ -1447,6 +1477,7 @@ public final class WindowContainerTransaction implements Parcelable { mLaunchOptions = in.readBundle(); mActivityIntent = in.readTypedObject(Intent.CREATOR); mTaskFragmentCreationOptions = in.readTypedObject(TaskFragmentCreationParams.CREATOR); mTaskFragmentOperation = in.readTypedObject(TaskFragmentOperation.CREATOR); mPendingIntent = in.readTypedObject(PendingIntent.CREATOR); mShortcutInfo = in.readTypedObject(ShortcutInfo.CREATOR); mAlwaysOnTop = in.readBoolean(); Loading Loading @@ -1534,6 +1565,11 @@ public final class WindowContainerTransaction implements Parcelable { return mTaskFragmentCreationOptions; } @Nullable public TaskFragmentOperation getTaskFragmentOperation() { return mTaskFragmentOperation; } @Nullable public PendingIntent getPendingIntent() { return mPendingIntent; Loading Loading @@ -1612,6 +1648,9 @@ public final class WindowContainerTransaction implements Parcelable { case HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH: return "{setReparentLeafTaskIfRelaunch: container= " + mContainer + " reparentLeafTaskIfRelaunch= " + mReparentLeafTaskIfRelaunch + "}"; case HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION: return "{setTaskFragmentOperation: fragmentToken= " + mContainer + " operation= " + mTaskFragmentOperation + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop Loading Loading @@ -1639,6 +1678,7 @@ public final class WindowContainerTransaction implements Parcelable { dest.writeBundle(mLaunchOptions); dest.writeTypedObject(mActivityIntent, flags); dest.writeTypedObject(mTaskFragmentCreationOptions, flags); dest.writeTypedObject(mTaskFragmentOperation, flags); dest.writeTypedObject(mPendingIntent, flags); dest.writeTypedObject(mShortcutInfo, flags); dest.writeBoolean(mAlwaysOnTop); Loading Loading @@ -1695,6 +1735,9 @@ public final class WindowContainerTransaction implements Parcelable { @Nullable private TaskFragmentCreationParams mTaskFragmentCreationOptions; @Nullable private TaskFragmentOperation mTaskFragmentOperation; @Nullable private PendingIntent mPendingIntent; Loading Loading @@ -1775,6 +1818,12 @@ public final class WindowContainerTransaction implements Parcelable { return this; } Builder setTaskFragmentOperation( @Nullable TaskFragmentOperation taskFragmentOperation) { mTaskFragmentOperation = taskFragmentOperation; return this; } Builder setReparentLeafTaskIfRelaunch(boolean reparentLeafTaskIfRelaunch) { mReparentLeafTaskIfRelaunch = reparentLeafTaskIfRelaunch; return this; Loading Loading @@ -1804,6 +1853,7 @@ public final class WindowContainerTransaction implements Parcelable { hierarchyOp.mPendingIntent = mPendingIntent; hierarchyOp.mAlwaysOnTop = mAlwaysOnTop; hierarchyOp.mTaskFragmentCreationOptions = mTaskFragmentCreationOptions; hierarchyOp.mTaskFragmentOperation = mTaskFragmentOperation; hierarchyOp.mShortcutInfo = mShortcutInfo; hierarchyOp.mReparentLeafTaskIfRelaunch = mReparentLeafTaskIfRelaunch; Loading Loading
core/java/android/window/TaskFragmentAnimationParams.aidl 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; /** * Data object for animation related override of TaskFragment. * @hide */ parcelable TaskFragmentAnimationParams;
core/java/android/window/TaskFragmentAnimationParams.java 0 → 100644 +129 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; /** * Data object for animation related override of TaskFragment. * @hide */ // TODO(b/206557124): Add more animation customization options. public final class TaskFragmentAnimationParams implements Parcelable { /** The default {@link TaskFragmentAnimationParams} to use when there is no app override. */ public static final TaskFragmentAnimationParams DEFAULT = new TaskFragmentAnimationParams.Builder().build(); @ColorInt private final int mAnimationBackgroundColor; private TaskFragmentAnimationParams(@ColorInt int animationBackgroundColor) { mAnimationBackgroundColor = animationBackgroundColor; } /** * The {@link ColorInt} to use for the background during the animation with this TaskFragment if * the animation requires a background. * * The default value is {@code 0}, which is to use the theme window background. */ @ColorInt public int getAnimationBackgroundColor() { return mAnimationBackgroundColor; } private TaskFragmentAnimationParams(Parcel in) { mAnimationBackgroundColor = in.readInt(); } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mAnimationBackgroundColor); } @NonNull public static final Creator<TaskFragmentAnimationParams> CREATOR = new Creator<TaskFragmentAnimationParams>() { @Override public TaskFragmentAnimationParams createFromParcel(Parcel in) { return new TaskFragmentAnimationParams(in); } @Override public TaskFragmentAnimationParams[] newArray(int size) { return new TaskFragmentAnimationParams[size]; } }; @Override public String toString() { return "TaskFragmentAnimationParams{" + " animationBgColor=" + Integer.toHexString(mAnimationBackgroundColor) + "}"; } @Override public int hashCode() { return mAnimationBackgroundColor; } @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof TaskFragmentAnimationParams)) { return false; } final TaskFragmentAnimationParams other = (TaskFragmentAnimationParams) obj; return mAnimationBackgroundColor == other.mAnimationBackgroundColor; } @Override public int describeContents() { return 0; } /** Builder to construct the {@link TaskFragmentAnimationParams}. */ public static final class Builder { @ColorInt private int mAnimationBackgroundColor = 0; /** * Sets the {@link ColorInt} to use for the background during the animation with this * TaskFragment if the animation requires a background. The default value is * {@code 0}, which is to use the theme window background. * * @param color a packed color int, {@code AARRGGBB}, for the animation background color. * @return this {@link Builder}. */ @NonNull public Builder setAnimationBackgroundColor(@ColorInt int color) { mAnimationBackgroundColor = color; return this; } /** Constructs the {@link TaskFragmentAnimationParams}. */ @NonNull public TaskFragmentAnimationParams build() { return new TaskFragmentAnimationParams(mAnimationBackgroundColor); } } }
core/java/android/window/TaskFragmentOperation.aidl 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; /** * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation. * @hide */ parcelable TaskFragmentOperation;
core/java/android/window/TaskFragmentOperation.java 0 → 100644 +168 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.window; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation. * * @see WindowContainerTransaction#setTaskFragmentOperation(IBinder, TaskFragmentOperation). * @hide */ // TODO(b/263436063): move other TaskFragment related operation here. public final class TaskFragmentOperation implements Parcelable { /** Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment. */ public static final int OP_TYPE_SET_ANIMATION_PARAMS = 0; @IntDef(prefix = { "OP_TYPE_" }, value = { OP_TYPE_SET_ANIMATION_PARAMS }) @Retention(RetentionPolicy.SOURCE) @interface OperationType {} @OperationType private final int mOpType; @Nullable private final TaskFragmentAnimationParams mAnimationParams; private TaskFragmentOperation(@OperationType int opType, @Nullable TaskFragmentAnimationParams animationParams) { mOpType = opType; mAnimationParams = animationParams; } private TaskFragmentOperation(Parcel in) { mOpType = in.readInt(); mAnimationParams = in.readTypedObject(TaskFragmentAnimationParams.CREATOR); } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mOpType); dest.writeTypedObject(mAnimationParams, flags); } @NonNull public static final Creator<TaskFragmentOperation> CREATOR = new Creator<TaskFragmentOperation>() { @Override public TaskFragmentOperation createFromParcel(Parcel in) { return new TaskFragmentOperation(in); } @Override public TaskFragmentOperation[] newArray(int size) { return new TaskFragmentOperation[size]; } }; /** * Gets the {@link OperationType} of this {@link TaskFragmentOperation}. */ @OperationType public int getOpType() { return mOpType; } /** * Gets the animation related override of TaskFragment. */ @Nullable public TaskFragmentAnimationParams getAnimationParams() { return mAnimationParams; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("TaskFragmentOperation{ opType=").append(mOpType); if (mAnimationParams != null) { sb.append(", animationParams=").append(mAnimationParams); } sb.append('}'); return sb.toString(); } @Override public int hashCode() { int result = mOpType; result = result * 31 + mAnimationParams.hashCode(); return result; } @Override public boolean equals(@Nullable Object obj) { if (!(obj instanceof TaskFragmentOperation)) { return false; } final TaskFragmentOperation other = (TaskFragmentOperation) obj; return mOpType == other.mOpType && Objects.equals(mAnimationParams, other.mAnimationParams); } @Override public int describeContents() { return 0; } /** Builder to construct the {@link TaskFragmentOperation}. */ public static final class Builder { @OperationType private final int mOpType; @Nullable private TaskFragmentAnimationParams mAnimationParams; /** * @param opType the {@link OperationType} of this {@link TaskFragmentOperation}. */ public Builder(@OperationType int opType) { mOpType = opType; } /** * Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment. */ @NonNull public Builder setAnimationParams(@Nullable TaskFragmentAnimationParams animationParams) { mAnimationParams = animationParams; return this; } /** * Constructs the {@link TaskFragmentOperation}. */ @NonNull public TaskFragmentOperation build() { return new TaskFragmentOperation(mOpType, mAnimationParams); } } }
core/java/android/window/WindowContainerTransaction.java +51 −1 Original line number Diff line number Diff line Loading @@ -750,6 +750,30 @@ public final class WindowContainerTransaction implements Parcelable { return this; } /** * Sets the {@link TaskFragmentOperation} to apply to the given TaskFragment. * * @param fragmentToken client assigned unique token to create TaskFragment with specified in * {@link TaskFragmentCreationParams#getFragmentToken()}. * @param taskFragmentOperation the {@link TaskFragmentOperation} to apply to the given * TaskFramgent. * @hide */ @NonNull public WindowContainerTransaction setTaskFragmentOperation(@NonNull IBinder fragmentToken, @NonNull TaskFragmentOperation taskFragmentOperation) { Objects.requireNonNull(fragmentToken); Objects.requireNonNull(taskFragmentOperation); final HierarchyOp hierarchyOp = new HierarchyOp.Builder( HierarchyOp.HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION) .setContainer(fragmentToken) .setTaskFragmentOperation(taskFragmentOperation) .build(); mHierarchyOps.add(hierarchyOp); return this; } /** * Sets/removes the always on top flag for this {@code windowContainer}. See * {@link com.android.server.wm.ConfigurationContainer#setAlwaysOnTop(boolean)}. Loading Loading @@ -1261,6 +1285,7 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_SET_COMPANION_TASK_FRAGMENT = 22; public static final int HIERARCHY_OP_TYPE_CLEAR_ADJACENT_ROOTS = 23; public static final int HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH = 24; public static final int HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION = 25; // 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 @@ -1301,10 +1326,14 @@ public final class WindowContainerTransaction implements Parcelable { @Nullable private Intent mActivityIntent; // Used as options for WindowContainerTransaction#createTaskFragment(). /** Used as options for {@link #createTaskFragment}. */ @Nullable private TaskFragmentCreationParams mTaskFragmentCreationOptions; /** Used as options for {@link #setTaskFragmentOperation}. */ @Nullable private TaskFragmentOperation mTaskFragmentOperation; @Nullable private PendingIntent mPendingIntent; Loading Loading @@ -1424,6 +1453,7 @@ public final class WindowContainerTransaction implements Parcelable { mLaunchOptions = copy.mLaunchOptions; mActivityIntent = copy.mActivityIntent; mTaskFragmentCreationOptions = copy.mTaskFragmentCreationOptions; mTaskFragmentOperation = copy.mTaskFragmentOperation; mPendingIntent = copy.mPendingIntent; mShortcutInfo = copy.mShortcutInfo; mAlwaysOnTop = copy.mAlwaysOnTop; Loading @@ -1447,6 +1477,7 @@ public final class WindowContainerTransaction implements Parcelable { mLaunchOptions = in.readBundle(); mActivityIntent = in.readTypedObject(Intent.CREATOR); mTaskFragmentCreationOptions = in.readTypedObject(TaskFragmentCreationParams.CREATOR); mTaskFragmentOperation = in.readTypedObject(TaskFragmentOperation.CREATOR); mPendingIntent = in.readTypedObject(PendingIntent.CREATOR); mShortcutInfo = in.readTypedObject(ShortcutInfo.CREATOR); mAlwaysOnTop = in.readBoolean(); Loading Loading @@ -1534,6 +1565,11 @@ public final class WindowContainerTransaction implements Parcelable { return mTaskFragmentCreationOptions; } @Nullable public TaskFragmentOperation getTaskFragmentOperation() { return mTaskFragmentOperation; } @Nullable public PendingIntent getPendingIntent() { return mPendingIntent; Loading Loading @@ -1612,6 +1648,9 @@ public final class WindowContainerTransaction implements Parcelable { case HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH: return "{setReparentLeafTaskIfRelaunch: container= " + mContainer + " reparentLeafTaskIfRelaunch= " + mReparentLeafTaskIfRelaunch + "}"; case HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION: return "{setTaskFragmentOperation: fragmentToken= " + mContainer + " operation= " + mTaskFragmentOperation + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop Loading Loading @@ -1639,6 +1678,7 @@ public final class WindowContainerTransaction implements Parcelable { dest.writeBundle(mLaunchOptions); dest.writeTypedObject(mActivityIntent, flags); dest.writeTypedObject(mTaskFragmentCreationOptions, flags); dest.writeTypedObject(mTaskFragmentOperation, flags); dest.writeTypedObject(mPendingIntent, flags); dest.writeTypedObject(mShortcutInfo, flags); dest.writeBoolean(mAlwaysOnTop); Loading Loading @@ -1695,6 +1735,9 @@ public final class WindowContainerTransaction implements Parcelable { @Nullable private TaskFragmentCreationParams mTaskFragmentCreationOptions; @Nullable private TaskFragmentOperation mTaskFragmentOperation; @Nullable private PendingIntent mPendingIntent; Loading Loading @@ -1775,6 +1818,12 @@ public final class WindowContainerTransaction implements Parcelable { return this; } Builder setTaskFragmentOperation( @Nullable TaskFragmentOperation taskFragmentOperation) { mTaskFragmentOperation = taskFragmentOperation; return this; } Builder setReparentLeafTaskIfRelaunch(boolean reparentLeafTaskIfRelaunch) { mReparentLeafTaskIfRelaunch = reparentLeafTaskIfRelaunch; return this; Loading Loading @@ -1804,6 +1853,7 @@ public final class WindowContainerTransaction implements Parcelable { hierarchyOp.mPendingIntent = mPendingIntent; hierarchyOp.mAlwaysOnTop = mAlwaysOnTop; hierarchyOp.mTaskFragmentCreationOptions = mTaskFragmentCreationOptions; hierarchyOp.mTaskFragmentOperation = mTaskFragmentOperation; hierarchyOp.mShortcutInfo = mShortcutInfo; hierarchyOp.mReparentLeafTaskIfRelaunch = mReparentLeafTaskIfRelaunch; Loading