From 660b1757530269a056db8ccc21c86f4051e97e22 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Wed, 15 Apr 2020 18:07:15 -0700 Subject: [PATCH] Assign original activityType of Task to new undefined activity. Was just re-assigning to itself (which was undefined) so it'd remain undefined. Bug: 154145745 Test: added testActivityAndTaskGetsProperType Change-Id: I36183057a5d43f6845336d0e6bb6fc8101a1ecff --- .../core/java/com/android/server/wm/Task.java | 5 ++++- .../com/android/server/wm/TaskStackTests.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index ad1a205a4910f..bafe418ec7ac0 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1378,6 +1378,9 @@ class Task extends WindowContainer { void addChild(WindowContainer child, int index) { // If this task had any child before we added this one. boolean hadChild = hasChild(); + // getActivityType() looks at the top child, so we need to read the type before adding + // a new child in case the new child is on top and UNDEFINED. + final int activityType = getActivityType(); index = getAdjustedChildPosition(child, index); super.addChild(child, index); @@ -1418,7 +1421,7 @@ class Task extends WindowContainer { ActivityTaskManager.getMaxAppRecentsLimitStatic()); } else { // Otherwise make all added activities match this one. - r.setActivityType(getActivityType()); + r.setActivityType(activityType); } updateEffectiveIntent(); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java index 413ae134fe186..7cb5e84e4e480 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java @@ -208,4 +208,22 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.top - stackOutset, stack.getLastSurfacePosition().y); } + + @Test + public void testActivityAndTaskGetsProperType() { + final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent); + final Task task1 = createTaskInStack(stack, 0 /* userId */); + ActivityRecord activity1 = WindowTestUtils.createTestActivityRecord(mDisplayContent); + + // First activity should become standard + task1.addChild(activity1, 0); + assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, activity1.getActivityType()); + assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, task1.getActivityType()); + + // Second activity should also become standard + ActivityRecord activity2 = WindowTestUtils.createTestActivityRecord(mDisplayContent); + task1.addChild(activity2, WindowContainer.POSITION_TOP); + assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, activity2.getActivityType()); + assertEquals(WindowConfiguration.ACTIVITY_TYPE_STANDARD, task1.getActivityType()); + } }