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

Commit 6990647f authored by Charles Chen's avatar Charles Chen Committed by Android (Google) Code Review
Browse files

Merge "Migrate IBinder to Token" into main

parents 614a7597 ac4887ef
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ class SplitContainer {
            return null;
        }
        return new SplitInfo(primaryActivityStack, secondaryActivityStack,
                mCurrentSplitAttributes, mToken);
                mCurrentSplitAttributes, SplitInfo.Token.createFromBinder(mToken));
    }

    static boolean shouldFinishPrimaryWithSecondary(@NonNull SplitRule splitRule) {
+13 −12
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import static android.window.TaskFragmentTransaction.TYPE_TASK_FRAGMENT_INFO_CHA
import static android.window.TaskFragmentTransaction.TYPE_TASK_FRAGMENT_PARENT_INFO_CHANGED;
import static android.window.TaskFragmentTransaction.TYPE_TASK_FRAGMENT_VANISHED;

import static androidx.window.extensions.embedding.ActivityEmbeddingOptionsProperties.KEY_ACTIVITY_STACK_TOKEN;
import static androidx.window.extensions.embedding.ActivityEmbeddingOptionsProperties.KEY_OVERLAY_TAG;
import static androidx.window.extensions.embedding.SplitContainer.getFinishPrimaryWithSecondaryBehavior;
import static androidx.window.extensions.embedding.SplitContainer.getFinishSecondaryWithPrimaryBehavior;
@@ -112,10 +113,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    static final boolean ENABLE_SHELL_TRANSITIONS =
            SystemProperties.getBoolean("persist.wm.debug.shell_transit", true);

    // TODO(b/295993745): remove after prebuilt library is updated.
    private static final String KEY_ACTIVITY_STACK_TOKEN =
            "androidx.window.extensions.embedding.ActivityStackToken";

    @VisibleForTesting
    @GuardedBy("mLock")
    final SplitPresenter mPresenter;
@@ -554,7 +551,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    }

    @Override
    public void updateActivityStackAttributes(@NonNull IBinder activityStackToken,
    public void updateActivityStackAttributes(@NonNull ActivityStack.Token activityStackToken,
                                              @NonNull ActivityStackAttributes attributes) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return;
@@ -563,7 +560,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        Objects.requireNonNull(attributes);

        synchronized (mLock) {
            final TaskFragmentContainer container = getContainer(activityStackToken);
            final TaskFragmentContainer container = getContainer(activityStackToken.getRawToken());
            if (container == null) {
                Log.w(TAG, "Cannot find TaskFragmentContainer for token:" + activityStackToken);
                return;
@@ -583,13 +580,14 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen

    @Override
    @Nullable
    public ParentContainerInfo getParentContainerInfo(@NonNull IBinder activityStackToken) {
    public ParentContainerInfo getParentContainerInfo(
            @NonNull ActivityStack.Token activityStackToken) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return null;
        }
        Objects.requireNonNull(activityStackToken);
        synchronized (mLock) {
            final TaskFragmentContainer container = getContainer(activityStackToken);
            final TaskFragmentContainer container = getContainer(activityStackToken.getRawToken());
            if (container == null) {
                return null;
            }
@@ -601,7 +599,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen

    @Override
    @Nullable
    public IBinder getActivityStackToken(@NonNull String tag) {
    public ActivityStack.Token getActivityStackToken(@NonNull String tag) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return null;
        }
@@ -612,7 +610,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
            if (taskFragmentContainer == null) {
                return null;
            }
            return taskFragmentContainer.getTaskFragmentToken();
            return ActivityStack.Token.createFromBinder(taskFragmentContainer
                    .getTaskFragmentToken());
        }
    }

@@ -2761,8 +2760,10 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
            // TODO(b/232042367): Consolidate the activity create handling so that we can handle
            // cross-process the same as normal.

            IBinder activityStackToken = options.getBinder(KEY_ACTIVITY_STACK_TOKEN);
            if (activityStackToken != null) {
            final Bundle bundle = options.getBundle(KEY_ACTIVITY_STACK_TOKEN);
            if (bundle != null) {
                final IBinder activityStackToken = ActivityStack.Token.readFromBundle(bundle)
                        .getRawToken();
                // Put activityStack token to #KEY_LAUNCH_TASK_FRAGMENT_TOKEN to launch the activity
                // into the taskFragment associated with the token.
                options.putBinder(KEY_LAUNCH_TASK_FRAGMENT_TOKEN, activityStackToken);
+2 −1
Original line number Diff line number Diff line
@@ -367,7 +367,8 @@ class TaskFragmentContainer {
        if (activities == null) {
            return null;
        }
        return new ActivityStack(activities, isEmpty(), mToken, mOverlayTag);
        return new ActivityStack(activities, isEmpty(),
                ActivityStack.Token.createFromBinder(mToken), mOverlayTag);
    }

    /** Adds the activity that will be reparented to this container. */
+8 −4
Original line number Diff line number Diff line
@@ -399,7 +399,8 @@ public class OverlayPresentationTest {
                        new ActivityStackAttributes.Builder().build()));

        assertThrows(NullPointerException.class, () ->
                mSplitController.updateActivityStackAttributes(new Binder(), null));
                mSplitController.updateActivityStackAttributes(
                        ActivityStack.Token.createFromBinder(new Binder()), null));

        verify(mSplitPresenter, never()).applyActivityStackAttributes(any(), any(), any(), any());
    }
@@ -408,7 +409,8 @@ public class OverlayPresentationTest {
    public void testUpdateActivityStackAttributes_nullContainer_earlyReturn() {
        final TaskFragmentContainer container = mSplitController.newContainer(mActivity,
                mActivity.getTaskId());
        mSplitController.updateActivityStackAttributes(container.getTaskFragmentToken(),
        mSplitController.updateActivityStackAttributes(
                ActivityStack.Token.createFromBinder(container.getTaskFragmentToken()),
                new ActivityStackAttributes.Builder().build());

        verify(mSplitPresenter, never()).applyActivityStackAttributes(any(), any(), any(), any());
@@ -418,7 +420,8 @@ public class OverlayPresentationTest {
    public void testUpdateActivityStackAttributes_notOverlay_earlyReturn() {
        final TaskFragmentContainer container = createMockTaskFragmentContainer(mActivity);

        mSplitController.updateActivityStackAttributes(container.getTaskFragmentToken(),
        mSplitController.updateActivityStackAttributes(
                ActivityStack.Token.createFromBinder(container.getTaskFragmentToken()),
                new ActivityStackAttributes.Builder().build());

        verify(mSplitPresenter, never()).applyActivityStackAttributes(any(), any(), any(), any());
@@ -431,7 +434,8 @@ public class OverlayPresentationTest {
        final ActivityStackAttributes attrs = new ActivityStackAttributes.Builder().build();
        final IBinder token = container.getTaskFragmentToken();

        mSplitController.updateActivityStackAttributes(token, attrs);
        mSplitController.updateActivityStackAttributes(ActivityStack.Token.createFromBinder(token),
                attrs);

        verify(mSplitPresenter).applyActivityStackAttributes(any(), eq(container), eq(attrs),
                any());
+1 −1
Original line number Diff line number Diff line
@@ -1437,7 +1437,7 @@ public class SplitControllerTest {
    @Test
    public void testUpdateSplitAttributes_nullParams_throwException() {
        assertThrows(NullPointerException.class,
                () -> mSplitController.updateSplitAttributes(null, SPLIT_ATTRIBUTES));
                () -> mSplitController.updateSplitAttributes((IBinder) null, SPLIT_ATTRIBUTES));

        final SplitContainer splitContainer = mock(SplitContainer.class);
        final IBinder token = new Binder();