Merge "Support nav fade anim for the case of swiping left/right to a new task" into sc-dev am: 33f631ad2a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14495880 Change-Id: Ieaec5345384de4890b95e42a8a93a79a0f525434
This commit is contained in:
@@ -151,6 +151,8 @@ public class RecentsAnimationController implements DeathRecipient {
|
||||
// Whether to take a screenshot when handling a deferred cancel
|
||||
private boolean mCancelDeferredWithScreenshot;
|
||||
|
||||
@VisibleForTesting
|
||||
boolean mIsAddingTaskToTargets;
|
||||
@VisibleForTesting
|
||||
boolean mShouldAttachNavBarToAppDuringTransition;
|
||||
private boolean mNavigationBarAttachedToApp;
|
||||
@@ -375,7 +377,8 @@ public class RecentsAnimationController implements DeathRecipient {
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
synchronized (mService.getWindowManagerLock()) {
|
||||
restoreNavigationBarFromApp(moveHomeToTop);
|
||||
restoreNavigationBarFromApp(
|
||||
moveHomeToTop || mIsAddingTaskToTargets /* animate */);
|
||||
mService.mWindowPlacerLocked.requestTraversal();
|
||||
}
|
||||
} finally {
|
||||
@@ -685,6 +688,7 @@ public class RecentsAnimationController implements DeathRecipient {
|
||||
|
||||
void addTaskToTargets(Task task, OnAnimationFinishedCallback finishedCallback) {
|
||||
if (mRunner != null) {
|
||||
mIsAddingTaskToTargets = task != null;
|
||||
// No need to send task appeared when the task target already exists, or when the
|
||||
// task is being managed as a multi-window mode outside of recents (e.g. bubbles).
|
||||
if (isAnimatingTask(task) || skipAnimation(task)) {
|
||||
@@ -901,7 +905,8 @@ public class RecentsAnimationController implements DeathRecipient {
|
||||
removeWallpaperAnimation(wallpaperAdapter);
|
||||
}
|
||||
|
||||
restoreNavigationBarFromApp(reorderMode == REORDER_MOVE_TO_TOP);
|
||||
restoreNavigationBarFromApp(
|
||||
reorderMode == REORDER_MOVE_TO_TOP || mIsAddingTaskToTargets /* animate */);
|
||||
|
||||
// Clear any pending failsafe runnables
|
||||
mService.mH.removeCallbacks(mFailsafeRunnable);
|
||||
|
||||
@@ -552,6 +552,31 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
|
||||
verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddTaskToTargets_expectAnimation() {
|
||||
setupForShouldAttachNavBarDuringTransition();
|
||||
final ActivityRecord activity = createActivityRecord(mDefaultDisplay);
|
||||
final ActivityRecord homeActivity = createHomeActivity();
|
||||
initializeRecentsAnimationController(mController, homeActivity);
|
||||
|
||||
final WindowToken navToken = mDefaultDisplay.getDisplayPolicy().getNavigationBar().mToken;
|
||||
final SurfaceControl.Transaction transaction = navToken.getPendingTransaction();
|
||||
|
||||
verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
|
||||
eq(mDefaultDisplay.mDisplayId), eq(false));
|
||||
verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
|
||||
verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
|
||||
|
||||
final WindowContainer parent = navToken.getParent();
|
||||
|
||||
mController.addTaskToTargets(createTask(mDefaultDisplay), (type, anim) -> {});
|
||||
mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);
|
||||
verify(mController).restoreNavigationBarFromApp(eq(true));
|
||||
verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
|
||||
eq(mDefaultDisplay.mDisplayId), eq(true));
|
||||
verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotAttachNavigationBar_controlledByFadeRotationAnimation() {
|
||||
setupForShouldAttachNavBarDuringTransition();
|
||||
|
||||
Reference in New Issue
Block a user