Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d48c4846 authored by Gaurav Bhola's avatar Gaurav Bhola
Browse files

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
parent 66361b0c
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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;
    }

    /**