Loading services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java +7 −3 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { } /** * Whether the launching task should inherit the task bounds of the given activity.. * Whether the launching task should inherit the task bounds of the given activity. */ private boolean shouldInheritExistingTaskBounds( @NonNull ActivityRecord activityToCheck, Loading @@ -519,8 +519,12 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { return (Objects.equals(activityToCheck.packageName, launchingActivity.packageName) && (activityToCheck.mUserId == launchingTask.mUserId) && activityToCheck.getTask().mTaskId != launchingTask.mTaskId && isLaunchingNewSingleTask(launchingActivity.launchMode) && isClosingExitingInstance(launchingTask.getBaseIntent().getFlags())); // Safe to inherit activity bounds if activity is no longer visible or will be // closing as in either case there is not worry of content overlapping and being // obscured. && (!activityToCheck.isVisible() || (isLaunchingNewSingleTask(launchingActivity.launchMode) && isClosingExitingInstance(launchingTask.getBaseIntent().getFlags())))); } /** Loading services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java +33 −1 Original line number Diff line number Diff line Loading @@ -528,9 +528,10 @@ public class DesktopModeLaunchParamsModifierTests extends AppCompatUtils.computeAspectRatio(mResult.mAppBounds), /* delta */ 0.05); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) public void testSourceTaskBoundsFromExistingInstanceIfClosing() { public void testInheritSourceTaskBoundsFromExistingInstanceIfClosing() { setupDesktopModeLaunchParamsModifier(); final String packageName = "com.same.package"; Loading Loading @@ -559,6 +560,37 @@ public class DesktopModeLaunchParamsModifierTests extends assertEquals(sourceTask.getBounds(), mResult.mBounds); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) public void testInheritSourceTaskBoundsFromExistingInstanceIfNoLongerVisible() { setupDesktopModeLaunchParamsModifier(); final String packageName = "com.same.package"; // Setup existing task. final Task sourceTask = spy(new TaskBuilder(mSupervisor).setCreateActivity(true) .setWindowingMode(WINDOWING_MODE_FREEFORM).setPackage(packageName).build()); sourceTask.setBounds( /* left */ 0, /* top */ 0, /* right */ 500, /* bottom */ 500); // Set source task activity as invisible. final ActivityRecord sourceTaskActivity = spy(sourceTask.getTopMostActivity()); sourceTask.topRunningActivity().launchMode = LAUNCH_SINGLE_INSTANCE; doReturn(false).when(sourceTaskActivity).isVisible(); // Set up new instance of already existing task. final Task launchingTask = new TaskBuilder(mSupervisor).setPackage(packageName) .setCreateActivity(true).build(); // New instance should inherit task bounds of old instance. assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(launchingTask) .setActivity(launchingTask.getRootActivity()) .setSource(sourceTaskActivity).calculate()); assertEquals(sourceTask.getBounds(), mResult.mBounds); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) Loading Loading
services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java +7 −3 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { } /** * Whether the launching task should inherit the task bounds of the given activity.. * Whether the launching task should inherit the task bounds of the given activity. */ private boolean shouldInheritExistingTaskBounds( @NonNull ActivityRecord activityToCheck, Loading @@ -519,8 +519,12 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { return (Objects.equals(activityToCheck.packageName, launchingActivity.packageName) && (activityToCheck.mUserId == launchingTask.mUserId) && activityToCheck.getTask().mTaskId != launchingTask.mTaskId && isLaunchingNewSingleTask(launchingActivity.launchMode) && isClosingExitingInstance(launchingTask.getBaseIntent().getFlags())); // Safe to inherit activity bounds if activity is no longer visible or will be // closing as in either case there is not worry of content overlapping and being // obscured. && (!activityToCheck.isVisible() || (isLaunchingNewSingleTask(launchingActivity.launchMode) && isClosingExitingInstance(launchingTask.getBaseIntent().getFlags())))); } /** Loading
services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java +33 −1 Original line number Diff line number Diff line Loading @@ -528,9 +528,10 @@ public class DesktopModeLaunchParamsModifierTests extends AppCompatUtils.computeAspectRatio(mResult.mAppBounds), /* delta */ 0.05); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) public void testSourceTaskBoundsFromExistingInstanceIfClosing() { public void testInheritSourceTaskBoundsFromExistingInstanceIfClosing() { setupDesktopModeLaunchParamsModifier(); final String packageName = "com.same.package"; Loading Loading @@ -559,6 +560,37 @@ public class DesktopModeLaunchParamsModifierTests extends assertEquals(sourceTask.getBounds(), mResult.mBounds); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) public void testInheritSourceTaskBoundsFromExistingInstanceIfNoLongerVisible() { setupDesktopModeLaunchParamsModifier(); final String packageName = "com.same.package"; // Setup existing task. final Task sourceTask = spy(new TaskBuilder(mSupervisor).setCreateActivity(true) .setWindowingMode(WINDOWING_MODE_FREEFORM).setPackage(packageName).build()); sourceTask.setBounds( /* left */ 0, /* top */ 0, /* right */ 500, /* bottom */ 500); // Set source task activity as invisible. final ActivityRecord sourceTaskActivity = spy(sourceTask.getTopMostActivity()); sourceTask.topRunningActivity().launchMode = LAUNCH_SINGLE_INSTANCE; doReturn(false).when(sourceTaskActivity).isVisible(); // Set up new instance of already existing task. final Task launchingTask = new TaskBuilder(mSupervisor).setPackage(packageName) .setCreateActivity(true).build(); // New instance should inherit task bounds of old instance. assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(launchingTask) .setActivity(launchingTask.getRootActivity()) .setSource(sourceTaskActivity).calculate()); assertEquals(sourceTask.getBounds(), mResult.mBounds); } @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_INHERIT_TASK_BOUNDS_FOR_TRAMPOLINE_TASK_LAUNCHES}) Loading