Merge "Revert "Remove check for preventing re-parenting non-split apps"" into tm-dev

This commit is contained in:
Santiago Etchebehere
2022-04-22 21:07:18 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 33 deletions

View File

@@ -98,14 +98,11 @@ interface ISplitScreen {
/** /**
* Blocking call that notifies and gets additional split-screen targets when entering * Blocking call that notifies and gets additional split-screen targets when entering
* recents (for example: the dividerBar). * 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 * @param appTargets apps that will be re-parented to display area
*/ */
RemoteAnimationTarget[] onGoingToRecentsLegacy(in RemoteAnimationTarget[] appTargets) = 13; RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel,
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;
} }

View File

@@ -413,22 +413,9 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct); mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct);
} }
RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) { RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel, RemoteAnimationTarget[] apps) {
return reparentSplitTasksForAnimation(apps, true /*splitExpectedToBeVisible*/); if (ENABLE_SHELL_TRANSITIONS || !isSplitScreenVisible()) return null;
}
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. // 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(); SurfaceControl.Transaction transaction = new SurfaceControl.Transaction();
if (mSplitTasksContainerLayer != null) { if (mSplitTasksContainerLayer != null) {
// Remove the previous layer before recreating // Remove the previous layer before recreating
@@ -455,6 +442,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
transaction.close(); transaction.close();
return new RemoteAnimationTarget[]{mStageCoordinator.getDividerBarLegacyTarget()}; return new RemoteAnimationTarget[]{mStageCoordinator.getDividerBarLegacyTarget()};
} }
/** /**
* Sets drag info to be logged when splitscreen is entered. * Sets drag info to be logged when splitscreen is entered.
*/ */
@@ -719,19 +707,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
} }
@Override @Override
public RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) { public RemoteAnimationTarget[] onGoingToRecentsLegacy(boolean cancel,
RemoteAnimationTarget[] apps) {
final RemoteAnimationTarget[][] out = new RemoteAnimationTarget[][]{null}; final RemoteAnimationTarget[][] out = new RemoteAnimationTarget[][]{null};
executeRemoteCallWithTaskPermission(mController, "onGoingToRecentsLegacy", executeRemoteCallWithTaskPermission(mController, "onGoingToRecentsLegacy",
(controller) -> out[0] = controller.onGoingToRecentsLegacy(apps), (controller) -> out[0] = controller.onGoingToRecentsLegacy(cancel, 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 */); true /* blocking */);
return out[0]; return out[0];
} }