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

Commit c2f7a272 authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Fix parameter usage error" into main

parents 6fcdebb4 b9702138
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -216,3 +216,14 @@ flag {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    namespace: "windowing_sdk"
    name: "fix_set_adjacent_task_fragments_with_params"
    description: "Fix the params set through setAdjacentTaskFragments"
    bug: "418159069"
    is_fixed_read_only: true
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
 No newline at end of file
+3 −1
Original line number Diff line number Diff line
@@ -1769,7 +1769,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
                    effects |= TRANSACT_EFFECTS_LIFECYCLE;
                }

                final Bundle bundle = hop.getLaunchOptions();
                final Bundle bundle = Flags.fixSetAdjacentTaskFragmentsWithParams()
                        ? operation.getBundle()
                        : hop.getLaunchOptions();
                final WindowContainerTransaction.TaskFragmentAdjacentParams adjacentParams =
                        bundle != null
                                ? new WindowContainerTransaction.TaskFragmentAdjacentParams(bundle)
+37 −0
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
import android.view.RemoteAnimationDefinition;
import android.view.SurfaceControl;
@@ -109,6 +110,8 @@ import android.window.WindowContainerTransaction;

import androidx.test.filters.SmallTest;

import com.android.window.flags.Flags;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -1948,6 +1951,40 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase {
                SecurityException.class);
    }

    @EnableFlags(Flags.FLAG_FIX_SET_ADJACENT_TASK_FRAGMENTS_WITH_PARAMS)
    @Test
    public void testApplyTransaction_setAdjacentTaskFragments_withParams() {
        final Task task = createTask(mDisplayContent);
        mTaskFragment = new TaskFragmentBuilder(mAtm)
                .setParentTask(task)
                .setFragmentToken(mFragmentToken)
                .setOrganizer(mOrganizer)
                .build();
        mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment);
        final IBinder fragmentToken2 = new Binder();
        final TaskFragment taskFragment2 = new TaskFragmentBuilder(mAtm)
                .setParentTask(task)
                .setFragmentToken(fragmentToken2)
                .setOrganizer(mOrganizer)
                .build();
        mWindowOrganizerController.mLaunchTaskFragments.put(fragmentToken2, taskFragment2);

        assertFalse(mTaskFragment.isDelayLastActivityRemoval());
        assertFalse(taskFragment2.isDelayLastActivityRemoval());

        final WindowContainerTransaction.TaskFragmentAdjacentParams params =
                new WindowContainerTransaction.TaskFragmentAdjacentParams();
        params.setShouldDelayPrimaryLastActivityRemoval(true);
        params.setShouldDelaySecondaryLastActivityRemoval(true);
        mTransaction.setAdjacentTaskFragments(mFragmentToken, fragmentToken2, params);
        mOrganizer.applyTransaction(mTransaction, TASK_FRAGMENT_TRANSIT_CHANGE,
                false /* shouldApplyIndependently */);

        assertApplyTransactionAllowed(mTransaction);
        assertTrue(mTaskFragment.isDelayLastActivityRemoval());
        assertTrue(taskFragment2.isDelayLastActivityRemoval());
    }

    @NonNull
    private ActivityRecord setupUntrustedEmbeddingPipReparent() {
        final int pid = Binder.getCallingPid();