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

Commit ac4887ef authored by Charles Chen's avatar Charles Chen
Browse files

Migrate IBinder to Token

Test: atest WMJetpackUnitTests
Bug: 322056156

Change-Id: Ic6cfd9bddbfd8f3afeb643734c0f5daca0ea568d
parent ab438ccc
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;
@@ -111,10 +112,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;
@@ -553,7 +550,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;
@@ -562,7 +559,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;
@@ -582,13 +579,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;
            }
@@ -600,7 +598,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;
        }
@@ -611,7 +609,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
            if (taskFragmentContainer == null) {
                return null;
            }
            return taskFragmentContainer.getTaskFragmentToken();
            return ActivityStack.Token.createFromBinder(taskFragmentContainer
                    .getTaskFragmentToken());
        }
    }

@@ -2760,8 +2759,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();