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

Commit 627da314 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Hooks for interracting with stage split components using legacy...

Merge "Hooks for interracting with stage split components using legacy recentsanimation" into sc-v2-dev am: 33edb79a am: 4f208d01

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

Change-Id: I1e65a1617dd681fa7f3c2cf70d2677023ad638a8
parents 15f5154c 4f208d01
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -90,4 +90,11 @@ interface ISplitScreen {
     oneway void startTasksWithLegacyTransition(int mainTaskId, in Bundle mainOptions,
                            int sideTaskId, in Bundle sideOptions, int sidePosition,
                            in RemoteAnimationAdapter adapter) = 11;

    /**
     * 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).
     */
    RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel) = 12;
}
+15 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Slog;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationTarget;
import android.window.IRemoteTransition;

import androidx.annotation.BinderThread;
@@ -267,6 +268,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
        return options;
    }

    RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel) {
        if (!isSplitScreenVisible()) return null;
        return new RemoteAnimationTarget[]{mStageCoordinator.getDividerBarLegacyTarget()};
    }

    public void dump(@NonNull PrintWriter pw, String prefix) {
        pw.println(prefix + TAG);
        if (mStageCoordinator != null) {
@@ -466,5 +472,14 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
                        controller.startIntent(intent, fillInIntent, stage, position, options);
                    });
        }

        @Override
        public RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel) {
            final RemoteAnimationTarget[][] out = new RemoteAnimationTarget[][]{null};
            executeRemoteCallWithTaskPermission(mController, "onGoingToRecentsLegacy",
                    (controller) -> out[0] = controller.onGoingToRecentsLegacy(cancel),
                    true /* blocking */);
            return out[0];
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -970,7 +970,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        }
    }

    private RemoteAnimationTarget getDividerBarLegacyTarget() {
    RemoteAnimationTarget getDividerBarLegacyTarget() {
        final Rect bounds = mSplitLayout.getDividerBounds();
        return new RemoteAnimationTarget(-1 /* taskId */, -1 /* mode */,
                mSplitLayout.getDividerLeash(), false /* isTranslucent */, null /* clipRect */,