Ensure child task has activity type set

Otherwise, the activity type of the child task is undefined.

Also log if the activity type of an Activity is changed once set.

Bug: 271528886
Test: drag app into split-screen
Change-Id: Ib8e925bc50dc2779bea1230cc22e6c1f68406d2c
This commit is contained in:
Louis Chang
2023-03-10 04:01:03 +00:00
parent fd59b80aad
commit f920308224
2 changed files with 9 additions and 0 deletions

View File

@@ -8892,6 +8892,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
final boolean wasInPictureInPicture = inPinnedWindowingMode();
final DisplayContent display = mDisplayContent;
final int activityType = getActivityType();
if (wasInPictureInPicture && attachedToProcess() && display != null) {
// If the PIP activity is changing to fullscreen with display orientation change, the
// fixed rotation will take effect that requires to send fixed rotation adjustments
@@ -8916,6 +8917,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
} else {
super.onConfigurationChanged(newParentConfig);
}
if (activityType != ACTIVITY_TYPE_UNDEFINED
&& activityType != getActivityType()) {
Slog.w(TAG, "Can't change activity type once set: " + this
+ " activityType=" + activityTypeToString(getActivityType()));
}
// Configuration's equality doesn't consider seq so if only seq number changes in resolved
// override configuration. Therefore ConfigurationContainer doesn't change merged override

View File

@@ -5884,8 +5884,11 @@ class Task extends TaskFragment {
final int taskId = activity != null
? mTaskSupervisor.getNextTaskIdForUser(activity.mUserId)
: mTaskSupervisor.getNextTaskIdForUser();
final int activityType = getActivityType();
task = new Task.Builder(mAtmService)
.setTaskId(taskId)
.setActivityType(activityType != ACTIVITY_TYPE_UNDEFINED ? activityType
: ACTIVITY_TYPE_STANDARD)
.setActivityInfo(info)
.setActivityOptions(options)
.setIntent(intent)