diff options
| author | 2020-05-20 16:04:31 +0800 | |
|---|---|---|
| committer | 2020-05-25 10:14:57 +0800 | |
| commit | 523e3e8cd622201705419f64a65f0a6348440ced (patch) | |
| tree | 9d32d4b1c6d3ec1a10e508182a5c6282e0fe0a29 | |
| parent | e39c2e7e61ebcab215af5bd7c9c6525bd4b76f35 (diff) | |
Fix returning activity that not in the task
Illegal state warning logs were able to observe on normal
activity starts flow.
Also should only returning the activity if it is the descendant
of this task.
Bug: 156882835
Test: atest TaskTests
Change-Id: Ia44bbbd8254e3f05b440153c180a3317e4d79209
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskTests.java | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index cc72dcfb0be2..3facfd4837c8 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3766,11 +3766,7 @@ class Task extends WindowContainer<WindowContainer> { if (r == null) { return null; } - final Task task = r.getRootTask(); - if (task != null && r.isDescendantOf(task)) { - if (task != this) Slog.w(TAG, "Illegal state! task does not point to stack it is in. " - + "stack=" + this + " task=" + task + " r=" + r - + " callers=" + Debug.getCallers(15, "\n")); + if (r.isDescendantOf(this)) { return r; } return null; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 473c1c57d625..1415c506a1c9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -146,4 +146,16 @@ public class TaskTests extends WindowTestsBase { task.setBounds(bounds); assertEquals(new Point(bounds.left, bounds.top), task.getLastSurfacePosition()); } + + @Test + public void testIsInStack() { + final Task task1 = createTaskStackOnDisplay(mDisplayContent); + final Task task2 = createTaskStackOnDisplay(mDisplayContent); + final ActivityRecord activity1 = + WindowTestUtils.createActivityRecordInTask(mDisplayContent, task1); + final ActivityRecord activity2 = + WindowTestUtils.createActivityRecordInTask(mDisplayContent, task2); + assertEquals(activity1, task1.isInTask(activity1)); + assertNull(task1.isInTask(activity2)); + } } |