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

Commit 1cb3bafe authored by Vinit Nayak's avatar Vinit Nayak Committed by Automerger Merge Worker
Browse files

Merge "Revert "Revert "Remove check for preventing re-parenting non-spl...""...

Merge "Revert "Revert "Remove check for preventing re-parenting non-spl..."" into tm-dev am: 0567c355

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17944716



Change-Id: I8fdedda84e9aeb6667e02ec98fe2fbd29bfaa813
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ef16aea5 0567c355
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -98,11 +98,14 @@ interface ISplitScreen {
    /**
     * Blocking call that notifies and gets additional split-screen targets when entering
     * recents (for example: the dividerBar).
     * @param cancel is true if leaving recents back to split (eg. the gesture was cancelled).
     * @param appTargets apps that will be re-parented to display area
     */
    RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel,
                                                   in RemoteAnimationTarget[] appTargets) = 13;

    RemoteAnimationTarget[] onGoingToRecentsLegacy(in RemoteAnimationTarget[] appTargets) = 13;

    /**
     * Blocking call that notifies and gets additional split-screen targets when entering
     * recents (for example: the dividerBar). Different than the method above in that this one
     * does not expect split to currently be running.
     */
    RemoteAnimationTarget[] onStartingSplitLegacy(in RemoteAnimationTarget[] appTargets) = 14;
}
+26 −6
Original line number Diff line number Diff line
@@ -413,9 +413,22 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
        mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct);
    }

    RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel, RemoteAnimationTarget[] apps) {
        if (ENABLE_SHELL_TRANSITIONS || !isSplitScreenVisible()) return null;
    RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) {
        return reparentSplitTasksForAnimation(apps, true /*splitExpectedToBeVisible*/);
    }

    RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) {
        return reparentSplitTasksForAnimation(apps, false /*splitExpectedToBeVisible*/);
    }

    private RemoteAnimationTarget[] reparentSplitTasksForAnimation(RemoteAnimationTarget[] apps,
            boolean splitExpectedToBeVisible) {
        if (ENABLE_SHELL_TRANSITIONS) return null;
        // TODO(b/206487881): Integrate this with shell transition.
        if (splitExpectedToBeVisible && !isSplitScreenVisible()) return null;
        // Split not visible, but not enough apps to have split, also return null
        if (!splitExpectedToBeVisible && apps.length < 2) return null;

        SurfaceControl.Transaction transaction = new SurfaceControl.Transaction();
        if (mSplitTasksContainerLayer != null) {
            // Remove the previous layer before recreating
@@ -442,7 +455,6 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
        transaction.close();
        return new RemoteAnimationTarget[]{mStageCoordinator.getDividerBarLegacyTarget()};
    }

    /**
     * Sets drag info to be logged when splitscreen is entered.
     */
@@ -707,11 +719,19 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
        }

        @Override
        public RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel,
                RemoteAnimationTarget[] apps) {
        public RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) {
            final RemoteAnimationTarget[][] out = new RemoteAnimationTarget[][]{null};
            executeRemoteCallWithTaskPermission(mController, "onGoingToRecentsLegacy",
                    (controller) -> out[0] = controller.onGoingToRecentsLegacy(cancel, apps),
                    (controller) -> out[0] = controller.onGoingToRecentsLegacy(apps),
                    true /* blocking */);
            return out[0];
        }

        @Override
        public RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) {
            final RemoteAnimationTarget[][] out = new RemoteAnimationTarget[][]{null};
            executeRemoteCallWithTaskPermission(mController, "onStartingSplitLegacy",
                    (controller) -> out[0] = controller.onStartingSplitLegacy(apps),
                    true /* blocking */);
            return out[0];
        }