Loading services/core/java/com/android/server/wm/Task.java +4 −1 Original line number Original line Diff line number Diff line Loading @@ -1373,6 +1373,9 @@ class Task extends WindowContainer<WindowContainer> { void addChild(WindowContainer child, int index) { void addChild(WindowContainer child, int index) { // If this task had any child before we added this one. // If this task had any child before we added this one. boolean hadChild = hasChild(); 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); index = getAdjustedChildPosition(child, index); super.addChild(child, index); super.addChild(child, index); Loading Loading @@ -1413,7 +1416,7 @@ class Task extends WindowContainer<WindowContainer> { ActivityTaskManager.getMaxAppRecentsLimitStatic()); ActivityTaskManager.getMaxAppRecentsLimitStatic()); } else { } else { // Otherwise make all added activities match this one. // Otherwise make all added activities match this one. r.setActivityType(getActivityType()); r.setActivityType(activityType); } } updateEffectiveIntent(); updateEffectiveIntent(); Loading services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -208,4 +208,22 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.top - stackOutset, stack.getLastSurfacePosition().y); 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()); } } } Loading
services/core/java/com/android/server/wm/Task.java +4 −1 Original line number Original line Diff line number Diff line Loading @@ -1373,6 +1373,9 @@ class Task extends WindowContainer<WindowContainer> { void addChild(WindowContainer child, int index) { void addChild(WindowContainer child, int index) { // If this task had any child before we added this one. // If this task had any child before we added this one. boolean hadChild = hasChild(); 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); index = getAdjustedChildPosition(child, index); super.addChild(child, index); super.addChild(child, index); Loading Loading @@ -1413,7 +1416,7 @@ class Task extends WindowContainer<WindowContainer> { ActivityTaskManager.getMaxAppRecentsLimitStatic()); ActivityTaskManager.getMaxAppRecentsLimitStatic()); } else { } else { // Otherwise make all added activities match this one. // Otherwise make all added activities match this one. r.setActivityType(getActivityType()); r.setActivityType(activityType); } } updateEffectiveIntent(); updateEffectiveIntent(); Loading
services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -208,4 +208,22 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.top - stackOutset, stack.getLastSurfacePosition().y); 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()); } } }