Return the activity type of any child activity in the Task

App crashed because the activity type was set to UNDEFINED
while the activity was already set to STANDRAD, which is
similar to b/228592780. It happened while the task only
contains finishing activities.

Following commit e79a024, the activity type should be the
same with the other activities in the Task even the activity
in the Task is currently finishing.

Bug: 233550853
Test: Drag settings from taskbar into split

Change-Id: I1c1f7b67f019bc1c3a84d38bc0ac6e7c188d1e49
This commit is contained in:
Louis Chang
2022-05-23 14:59:05 +08:00
parent 04f59c26f6
commit c31e994b34

View File

@@ -103,7 +103,6 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -1758,7 +1757,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
final Task task = isAddingActivity ? getTask() : null;
// If this task had any activity before we added this one.
boolean taskHadActivity = task != null && task.getActivity(Objects::nonNull) != null;
boolean taskHadActivity = task != null && task.getTopMostActivity() != null;
// getActivityType() looks at the top child, so we need to read the type before adding
// a new child in case the new child is on top and UNDEFINED.
final int activityType = task != null ? task.getActivityType() : ACTIVITY_TYPE_UNDEFINED;
@@ -2171,7 +2170,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
if (applicationType != ACTIVITY_TYPE_UNDEFINED || !hasChild()) {
return applicationType;
}
final ActivityRecord activity = getTopNonFinishingActivity();
final ActivityRecord activity = getTopMostActivity();
return activity != null ? activity.getActivityType() : getTopChild().getActivityType();
}