Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f14a1de3 authored by Eghosa Ewansiha-Vlachavas's avatar Eghosa Ewansiha-Vlachavas Committed by Android (Google) Code Review
Browse files

Merge "Allow source task bounds to be inherited if task is no longer visible" into main

parents 588c59a5 8eb7ce7f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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,
@@ -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()))));
    }

    /**
+33 −1
Original line number Diff line number Diff line
@@ -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";
@@ -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})