When checking for isTaskView(), account for children.

- This case can happen when TaskView contains a launch root task view
  that contains other tasks. These children tasks can potentially be
  reparented to a new Surface.

Test: Tested manually using the Car ui portrait target
Fix: 265483665
Change-Id: I549ece791eab942a3fc5297b8bc914f1217b9416
This commit is contained in:
Gaurav Bhola
2023-01-13 18:33:16 -08:00
parent 66361b0cdc
commit d48c484623

View File

@@ -901,9 +901,18 @@ public class AppTransitionController {
* TODO(b/213312721): Remove this predicate and its callers once ShellTransition is enabled.
*/
static boolean isTaskViewTask(WindowContainer wc) {
// We use Task#mRemoveWithTaskOrganizer to identify an embedded Task, but this is a hack and
// Use Task#mRemoveWithTaskOrganizer to identify an embedded Task, but this is a hack and
// it is not guaranteed to work this logic in the future version.
return wc instanceof Task && ((Task) wc).mRemoveWithTaskOrganizer;
boolean isTaskViewTask = wc instanceof Task && ((Task) wc).mRemoveWithTaskOrganizer;
if (isTaskViewTask) {
return true;
}
WindowContainer parent = wc.getParent();
boolean isParentATaskViewTask = parent != null
&& parent instanceof Task
&& ((Task) parent).mRemoveWithTaskOrganizer;
return isParentATaskViewTask;
}
/**