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

Commit 50216bcc authored by Gaurav Bhola's avatar Gaurav Bhola
Browse files

Handle the case where launch root is not attached

- Throw illegalstateException if the task that is being set as launch
  root task is not attached to the wm hierarchy - in other words:
  when it doesn't have a display area.
- This makes sure that system server doesn't crash with NPE when this
  happens.

Bug: 283152174
Test: Tested manually using the car portrait target
Change-Id: I330560cbb1ecf8f267c37e1696084b6872c3068e
parent 2537e164
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -845,11 +845,14 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
            case HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT: {
                final WindowContainer wc = WindowContainer.fromBinder(hop.getContainer());
                final Task task = wc != null ? wc.asTask() : null;
                if (task != null) {
                if (task == null) {
                    throw new IllegalArgumentException("Cannot set non-task as launch root: " + wc);
                } else if (task.getTaskDisplayArea() == null) {
                    throw new IllegalArgumentException("Cannot set a task without display area as "
                            + "launch root: " + wc);
                } else {
                    task.getDisplayArea().setLaunchRootTask(task,
                            hop.getWindowingModes(), hop.getActivityTypes());
                } else {
                    throw new IllegalArgumentException("Cannot set non-task as launch root: " + wc);
                }
                break;
            }