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

Commit 74b22230 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Launch all activities into the same root task" into tm-qpr-dev am: a45c7f7d

parents 640e801d a45c7f7d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -392,9 +392,9 @@ public class ActivityStartController {
        SafeActivityOptions bottomOptions = null;
        if (options != null) {
            // To ensure the first N-1 activities (N == total # of activities) are also launched
            // into the correct display, use a copy of the passed-in options (keeping only
            // display-related info) for these activities.
            bottomOptions = options.selectiveCloneDisplayOptions();
            // into the correct display and root task, use a copy of the passed-in options (keeping
            // only display-related and launch-root-task information) for these activities.
            bottomOptions = options.selectiveCloneLaunchOptions();
        }
        try {
            intents = ArrayUtils.filterNotNull(intents, Intent[]::new);
+9 −8
Original line number Diff line number Diff line
@@ -119,13 +119,13 @@ public class SafeActivityOptions {

    /**
     * To ensure that two activities, one using this object, and the other using the
     * SafeActivityOptions returned from this function, are launched into the same display through
     * ActivityStartController#startActivities, all display-related information, i.e.
     * displayAreaToken, launchDisplayId and callerDisplayId, are cloned.
     * SafeActivityOptions returned from this function, are launched into the same display/root task
     * through ActivityStartController#startActivities, all display-related information, i.e.
     * displayAreaToken, launchDisplayId, callerDisplayId and the launch root task are cloned.
     */
    @Nullable SafeActivityOptions selectiveCloneDisplayOptions() {
        final ActivityOptions options = cloneLaunchingDisplayOptions(mOriginalOptions);
        final ActivityOptions callerOptions = cloneLaunchingDisplayOptions(mCallerOptions);
    @Nullable SafeActivityOptions selectiveCloneLaunchOptions() {
        final ActivityOptions options = cloneLaunchingOptions(mOriginalOptions);
        final ActivityOptions callerOptions = cloneLaunchingOptions(mCallerOptions);
        if (options == null && callerOptions == null) {
            return null;
        }
@@ -138,11 +138,12 @@ public class SafeActivityOptions {
        return safeOptions;
    }

    private ActivityOptions cloneLaunchingDisplayOptions(ActivityOptions options) {
    private ActivityOptions cloneLaunchingOptions(ActivityOptions options) {
        return options == null ? null : ActivityOptions.makeBasic()
                .setLaunchTaskDisplayArea(options.getLaunchTaskDisplayArea())
                .setLaunchDisplayId(options.getLaunchDisplayId())
                .setCallerDisplayId((options.getCallerDisplayId()));
                .setCallerDisplayId(options.getCallerDisplayId())
                .setLaunchRootTask(options.getLaunchRootTask());
    }

    /**
+11 −1
Original line number Diff line number Diff line
@@ -57,10 +57,20 @@ public class SafeActivityOptionsTest {
                .setLaunchTaskDisplayArea(token)
                .setLaunchDisplayId(launchDisplayId)
                .setCallerDisplayId(callerDisplayId))
                .selectiveCloneDisplayOptions();
                .selectiveCloneLaunchOptions();

        assertSame(clone.getOriginalOptions().getLaunchTaskDisplayArea(), token);
        assertEquals(clone.getOriginalOptions().getLaunchDisplayId(), launchDisplayId);
        assertEquals(clone.getOriginalOptions().getCallerDisplayId(), callerDisplayId);
    }

    @Test
    public void test_selectiveCloneLunchRootTask() {
        final WindowContainerToken token = mock(WindowContainerToken.class);
        final SafeActivityOptions clone = new SafeActivityOptions(ActivityOptions.makeBasic()
                .setLaunchRootTask(token))
                .selectiveCloneLaunchOptions();

        assertSame(clone.getOriginalOptions().getLaunchRootTask(), token);
    }
}