From b873078277251be720f8ffc0165f98e82c213421 Mon Sep 17 00:00:00 2001 From: Yuncheol Heo Date: Wed, 23 Jun 2021 12:33:31 -0700 Subject: [PATCH] Add a featureId to TaskInfo. Introduced featureId to identify which DA the new task is created in. Bug: 188933554 Test: Add a log in ShellTaskOrganizer.TaskListener#onTaskAppeared() to check if TaskInfo has the proper featureId. Change-Id: Ifee436a74fc1859377b75539427e6642f55962ed --- core/java/android/app/TaskInfo.java | 13 ++++++++++++- services/core/java/com/android/server/wm/Task.java | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java index 7b96511b11564..087028ddb0431 100644 --- a/core/java/android/app/TaskInfo.java +++ b/core/java/android/app/TaskInfo.java @@ -17,6 +17,7 @@ package android.app; import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static android.window.DisplayAreaOrganizer.FEATURE_UNDEFINED; import android.annotation.NonNull; import android.annotation.Nullable; @@ -116,6 +117,12 @@ public class TaskInfo { */ public int displayId; + /** + * The feature id of {@link com.android.server.wm.TaskDisplayArea} this task is associated with. + * @hide + */ + public int displayAreaFeatureId = FEATURE_UNDEFINED; + /** * The recent activity values for the highest activity in the stack to have set the values. * {@link Activity#setTaskDescription(android.app.ActivityManager.TaskDescription)}. @@ -343,6 +350,7 @@ public class TaskInfo { return topActivityType == that.topActivityType && isResizeable == that.isResizeable && supportsMultiWindow == that.supportsMultiWindow + && displayAreaFeatureId == that.displayAreaFeatureId && Objects.equals(positionInParent, that.positionInParent) && Objects.equals(pictureInPictureParams, that.pictureInPictureParams) && getWindowingMode() == that.getWindowingMode() @@ -407,6 +415,7 @@ public class TaskInfo { topActivityToken = source.readStrongBinder(); topActivityInSizeCompat = source.readBoolean(); mTopActivityLocusId = source.readTypedObject(LocusId.CREATOR); + displayAreaFeatureId = source.readInt(); } /** @@ -446,6 +455,7 @@ public class TaskInfo { dest.writeStrongBinder(topActivityToken); dest.writeBoolean(topActivityInSizeCompat); dest.writeTypedObject(mTopActivityLocusId, flags); + dest.writeInt(displayAreaFeatureId); } @Override @@ -474,7 +484,8 @@ public class TaskInfo { + " isSleeping=" + isSleeping + " topActivityToken=" + topActivityToken + " topActivityInSizeCompat=" + topActivityInSizeCompat - + " locusId= " + mTopActivityLocusId + + " locusId=" + mTopActivityLocusId + + " displayAreaFeatureId=" + displayAreaFeatureId + "}"; } } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index b4923ad102077..fda03610961c5 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3242,6 +3242,9 @@ class Task extends TaskFragment { info.userId = isLeafTask() ? mUserId : mCurrentUser; info.taskId = mTaskId; info.displayId = getDisplayId(); + if (tda != null) { + info.displayAreaFeatureId = tda.mFeatureId; + } info.isRunning = getTopNonFinishingActivity() != null; final Intent baseIntent = getBaseIntent(); // Make a copy of base intent because this is like a snapshot info.