diff options
| author | 2023-08-15 03:43:31 +0000 | |
|---|---|---|
| committer | 2023-08-15 03:43:31 +0000 | |
| commit | 1b9d6435748b992149573092ee622fb44b9983e6 (patch) | |
| tree | b435ce6da0fdff7ce9a37835b8cad263ee7d99b5 | |
| parent | 6eea5f95b391eeab1957b151876c9925a37a0768 (diff) | |
| parent | 0c9141054e716431e1dcac4f15308bbc19f36304 (diff) | |
Merge "Fix crashes related to WCT for ARC T" into udc-qpr-dev am: 0c9141054e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24283459
Change-Id: I4d15179c33792f5f75db4ad88032beb125737a4a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowOrganizerController.java | 22 |
2 files changed, 20 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index e720fa5bb81d..e9f292b38053 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -2878,8 +2878,8 @@ class Task extends TaskFragment { // No need to check if allowed if it's leaving dragResize if (dragResizing && !(getRootTask().getWindowingMode() == WINDOWING_MODE_FREEFORM)) { - throw new IllegalArgumentException("Drag resize not allow for root task id=" - + getRootTaskId()); + Slog.e(TAG, "Drag resize isn't allowed for root task id=" + getRootTaskId()); + return; } mDragResizing = dragResizing; resetDragResizingChangeReported(); diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 0388496712fb..9375b297be2b 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -1657,9 +1657,18 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } private int setAdjacentRootsHierarchyOp(WindowContainerTransaction.HierarchyOp hop) { - final TaskFragment root1 = WindowContainer.fromBinder(hop.getContainer()).asTaskFragment(); - final TaskFragment root2 = - WindowContainer.fromBinder(hop.getAdjacentRoot()).asTaskFragment(); + final WindowContainer wc1 = WindowContainer.fromBinder(hop.getContainer()); + if (wc1 == null || !wc1.isAttached()) { + Slog.e(TAG, "Attempt to operate on unknown or detached container: " + wc1); + return TRANSACT_EFFECTS_NONE; + } + final TaskFragment root1 = wc1.asTaskFragment(); + final WindowContainer wc2 = WindowContainer.fromBinder(hop.getAdjacentRoot()); + if (wc2 == null || !wc2.isAttached()) { + Slog.e(TAG, "Attempt to operate on unknown or detached container: " + wc2); + return TRANSACT_EFFECTS_NONE; + } + final TaskFragment root2 = wc2.asTaskFragment(); if (!root1.mCreatedByOrganizer || !root2.mCreatedByOrganizer) { throw new IllegalArgumentException("setAdjacentRootsHierarchyOp: Not created by" + " organizer root1=" + root1 + " root2=" + root2); @@ -1672,7 +1681,12 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } private int clearAdjacentRootsHierarchyOp(WindowContainerTransaction.HierarchyOp hop) { - final TaskFragment root = WindowContainer.fromBinder(hop.getContainer()).asTaskFragment(); + final WindowContainer wc = WindowContainer.fromBinder(hop.getContainer()); + if (wc == null || !wc.isAttached()) { + Slog.e(TAG, "Attempt to operate on unknown or detached container: " + wc); + return TRANSACT_EFFECTS_NONE; + } + final TaskFragment root = wc.asTaskFragment(); if (!root.mCreatedByOrganizer) { throw new IllegalArgumentException("clearAdjacentRootsHierarchyOp: Not created by" + " organizer root=" + root); |